diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index fff90047df2..1588a15afeb 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - beta pull_request: branches: - main diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 0b2e4c1a5da..82f5abd23a1 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -41,4 +41,7 @@ jobs: run: pnpm biome-ci - name: Check dependencies with depcruise - run: pnpm depcruise \ No newline at end of file + run: pnpm depcruise + + - name: Lint with ls-lint + run: pnpm ls-lint \ No newline at end of file diff --git a/.github/workflows/test-shard-template.yml b/.github/workflows/test-shard-template.yml index b154166f81b..124004f380f 100644 --- a/.github/workflows/test-shard-template.yml +++ b/.github/workflows/test-shard-template.yml @@ -44,4 +44,4 @@ jobs: run: pnpm i - name: Run tests - run: pnpm exec vitest --project ${{ inputs.project }} --no-isolate --shard=${{ inputs.shard }}/${{ inputs.totalShards }} ${{ !runner.debug && '--silent' || '' }} + run: pnpm test:silent --shard=${{ inputs.shard }}/${{ inputs.totalShards }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d3dd23eb379..764a35ace60 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,6 +11,7 @@ on: - beta merge_group: types: [checks_requested] + workflow_dispatch: jobs: check-path-change-filter: diff --git a/.ls-lint.yml b/.ls-lint.yml new file mode 100644 index 00000000000..22f08f72938 --- /dev/null +++ b/.ls-lint.yml @@ -0,0 +1,28 @@ +# Base settings to use +# Note that the `_cfg` key isn't part of ls-lint's configuration, it's just a YAML anchor for reuse. +_cfg: &cfg + .ps1: kebab-case + .ts: kebab-case + .js: kebab-case + .*.ts: kebab-case + .*.js: kebab-case + .dir: kebab-case + .py: snake_case # python files should always use snake_case + +ls: + <<: *cfg + src: &src + <<: *cfg + .dir: kebab-case | regex:@types + .js: exists:0 + src/system/version-migration/versions: + .ts: snake_case + <<: *cfg + test: *src +ignore: + - node_modules + - .vscode + - .github + - .git + - public + - dist diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7092b40b1b6..2d56b868cff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -104,7 +104,7 @@ Most non-trivial changes (*especially bug fixes*) should come along with new tes - Test edge cases. A good strategy is to think of edge cases beforehand and create tests for them using `it.todo`. Once the edge case has been handled, you can remove the `todo` marker. ## 😈 Development Save File -> Some issues may require you to have unlocks on your save file which go beyond normal overrides. For this reason, the repository contains a [save file](../test/testUtils/saves/everything.psrv) with _everything_ unlocked (even ones not legitimately obtainable, like unimplemented variant shinies). +> Some issues may require you to have unlocks on your save file which go beyond normal overrides. For this reason, the repository contains a [save file](../test/test-utils/saves/everything.psrv) with _everything_ unlocked (even ones not legitimately obtainable, like unimplemented variant shinies). 1. Start the game up locally and navigate to `Menu -> Manage Data -> Import Data` -2. Select [everything.prsv](test/testUtils/saves/everything.prsv) (`test/testUtils/saves/everything.prsv`) and confirm. +2. Select [everything.prsv](test/test-utils/saves/everything.prsv) (`test/test-utils/saves/everything.prsv`) and confirm. diff --git a/biome.jsonc b/biome.jsonc index d4cb67d33a6..d2f7c711dc9 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -19,7 +19,6 @@ // and having to verify whether each individual file is ignored "includes": [ "**", - "!**/*.d.ts", "!**/dist/**/*", "!**/build/**/*", "!**/coverage/**/*", @@ -177,9 +176,10 @@ } }, - // Overrides to prevent unused import removal inside `overrides.ts` and enums files (for TSDoc linkcodes) + // Overrides to prevent unused import removal inside `overrides.ts` and enums files (for TSDoc linkcodes), + // as well as in all TS files in `scripts/` (which are assumed to be boilerplate templates). { - "includes": ["**/src/overrides.ts", "**/src/enums/**/*"], + "includes": ["**/src/overrides.ts", "**/src/enums/**/*", "**/scripts/**/*.ts", "**/*.d.ts"], "linter": { "rules": { "correctness": { @@ -189,7 +189,7 @@ } }, { - "includes": ["**/src/overrides.ts"], + "includes": ["**/src/overrides.ts", "**/scripts/**/*.ts"], "linter": { "rules": { "style": { diff --git a/global.d.ts b/global.d.ts index d2ed6438c0b..8b79d966e3c 100644 --- a/global.d.ts +++ b/global.d.ts @@ -1,14 +1,20 @@ +import type { AnyFn } from "#types/type-helpers"; import type { SetupServerApi } from "msw/node"; -export {}; - declare global { /** * Only used in testing. * Can technically be undefined/null but for ease of use we are going to assume it is always defined. * Used to load i18n files exclusively. * - * To set up your own server in a test see `game_data.test.ts` + * To set up your own server in a test see `game-data.test.ts` */ var server: SetupServerApi; + + // Overloads for `Function.apply` and `Function.call` to add type safety on matching argument types + interface Function { + apply(this: T, thisArg: ThisParameterType, argArray: Parameters): ReturnType; + + call(this: T, thisArg: ThisParameterType, ...argArray: Parameters): ReturnType; + } } diff --git a/lefthook.yml b/lefthook.yml index 40875073fdd..8b5ad2234ed 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -1,11 +1,13 @@ pre-commit: + skip: + - merge + - rebase commands: biome-lint: run: pnpm exec biome check --write --reporter=summary --staged --no-errors-on-unmatched stage_fixed: true - skip: - - merge - - rebase + ls-lint: + run: pnpm exec ls-lint post-merge: commands: diff --git a/package.json b/package.json index 64f2f9786db..d3494da677c 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,12 @@ "test": "vitest run --no-isolate", "test:cov": "vitest run --coverage --no-isolate", "test:watch": "vitest watch --coverage --no-isolate", - "test:silent": "vitest run --silent --no-isolate", + "test:silent": "vitest run --silent='passed-only' --no-isolate", "test:create": "node scripts/create-test/create-test.js", "typecheck": "tsc --noEmit", "eslint": "eslint --fix .", "eslint-ci": "eslint .", - "biome": "biome check --write --changed --no-errors-on-unmatched", + "biome": "biome check --write --changed --no-errors-on-unmatched --diagnostic-level=error", "biome-ci": "biome ci --diagnostic-level=error --reporter=github --no-errors-on-unmatched", "docs": "typedoc", "depcruise": "depcruise src test", @@ -28,19 +28,21 @@ }, "devDependencies": { "@biomejs/biome": "2.0.0", + "@ls-lint/ls-lint": "2.3.1", "@types/jsdom": "^21.1.7", - "@types/node": "^22.16.3", + "@types/node": "^22.16.5", "@vitest/coverage-istanbul": "^3.2.4", + "@vitest/expect": "^3.2.4", "chalk": "^5.4.1", "dependency-cruiser": "^16.10.4", - "inquirer": "^12.7.0", + "inquirer": "^12.8.2", "jsdom": "^26.1.0", "lefthook": "^1.12.2", "msw": "^2.10.4", "phaser3spectorjs": "^0.0.8", - "typedoc": "^0.28.7", + "typedoc": "^0.28.8", "typescript": "^5.8.3", - "vite": "^6.3.5", + "vite": "^7.0.6", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.2.4", "vitest-canvas-mock": "^0.3.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f465c56778..900be6fd76e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,15 +45,21 @@ importers: '@biomejs/biome': specifier: 2.0.0 version: 2.0.0 + '@ls-lint/ls-lint': + specifier: 2.3.1 + version: 2.3.1 '@types/jsdom': specifier: ^21.1.7 version: 21.1.7 '@types/node': - specifier: ^22.16.3 - version: 22.16.3 + specifier: ^22.16.5 + version: 22.16.5 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0)) + version: 3.2.4(vitest@3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0)) + '@vitest/expect': + specifier: ^3.2.4 + version: 3.2.4 chalk: specifier: ^5.4.1 version: 5.4.1 @@ -61,8 +67,8 @@ importers: specifier: ^16.10.4 version: 16.10.4 inquirer: - specifier: ^12.7.0 - version: 12.7.0(@types/node@22.16.3) + specifier: ^12.8.2 + version: 12.8.2(@types/node@22.16.5) jsdom: specifier: ^26.1.0 version: 26.1.0 @@ -71,28 +77,28 @@ importers: version: 1.12.2 msw: specifier: ^2.10.4 - version: 2.10.4(@types/node@22.16.3)(typescript@5.8.3) + version: 2.10.4(@types/node@22.16.5)(typescript@5.8.3) phaser3spectorjs: specifier: ^0.0.8 version: 0.0.8 typedoc: - specifier: ^0.28.7 - version: 0.28.7(typescript@5.8.3) + specifier: ^0.28.8 + version: 0.28.8(typescript@5.8.3) typescript: specifier: ^5.8.3 version: 5.8.3 vite: - specifier: ^6.3.5 - version: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) + specifier: ^7.0.6 + version: 7.0.6(@types/node@22.16.5)(yaml@2.8.0) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@22.16.5)(yaml@2.8.0)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0) + version: 3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0) vitest-canvas-mock: specifier: ^0.3.3 - version: 0.3.3(vitest@3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0)) + version: 0.3.3(vitest@3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0)) packages: @@ -149,8 +155,8 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} engines: {node: '>=6.9.0'} '@babel/parser@7.28.0': @@ -158,8 +164,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.28.2': + resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': @@ -170,8 +176,8 @@ packages: resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} '@biomejs/biome@2.0.0': @@ -264,167 +270,167 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@esbuild/aix-ppc64@0.25.6': - resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.6': - resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} + '@esbuild/android-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.6': - resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} + '@esbuild/android-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.6': - resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.6': - resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.6': - resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} + '@esbuild/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.6': - resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.6': - resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} + '@esbuild/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.6': - resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.6': - resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.6': - resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.6': - resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} + '@esbuild/linux-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.6': - resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.6': - resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} + '@esbuild/linux-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.6': - resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} + '@esbuild/linux-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.6': - resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.6': - resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.6': - resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.6': - resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.6': - resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.6': - resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.6': - resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.6': - resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.6': - resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.6': - resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} + '@esbuild/win32-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.6': - resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@gerrit0/mini-shiki@3.7.0': - resolution: {integrity: sha512-7iY9wg4FWXmeoFJpUL2u+tsmh0d0jcEJHAIzVxl3TG4KL493JNnisdLAILZ77zcD+z3J0keEXZ+lFzUgzQzPDg==} + '@gerrit0/mini-shiki@3.8.1': + resolution: {integrity: sha512-HVZW+8pxoOExr5ZMPK15U79jQAZTO/S6i5byQyyZGjtNj+qaYd82cizTncwFzTQgiLo8uUBym6vh+/1tfJklTw==} - '@inquirer/checkbox@4.1.9': - resolution: {integrity: sha512-DBJBkzI5Wx4jFaYm221LHvAhpKYkhVS0k9plqHwaHhofGNxvYB7J3Bz8w+bFJ05zaMb0sZNHo4KdmENQFlNTuQ==} + '@inquirer/checkbox@4.2.0': + resolution: {integrity: sha512-fdSw07FLJEU5vbpOPzXo5c6xmMGDzbZE2+niuDHX5N6mc6V0Ebso/q3xiHra4D73+PMsC8MJmcaZKuAAoaQsSA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -432,8 +438,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.13': - resolution: {integrity: sha512-EkCtvp67ICIVVzjsquUiVSd+V5HRGOGQfsqA4E4vMWhYnB7InUL0pa0TIWt1i+OfP16Gkds8CdIu6yGZwOM1Yw==} + '@inquirer/confirm@5.1.14': + resolution: {integrity: sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -441,8 +447,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.14': - resolution: {integrity: sha512-Ma+ZpOJPewtIYl6HZHZckeX1STvDnHTCB2GVINNUlSEn2Am6LddWwfPkIGY0IUFVjUUrr/93XlBwTK6mfLjf0A==} + '@inquirer/core@10.1.15': + resolution: {integrity: sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -450,8 +456,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.14': - resolution: {integrity: sha512-yd2qtLl4QIIax9DTMZ1ZN2pFrrj+yL3kgIWxm34SS6uwCr0sIhsNyudUjAo5q3TqI03xx4SEBkUJqZuAInp9uA==} + '@inquirer/editor@4.2.15': + resolution: {integrity: sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -459,8 +465,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.16': - resolution: {integrity: sha512-oiDqafWzMtofeJyyGkb1CTPaxUkjIcSxePHHQCfif8t3HV9pHcw1Kgdw3/uGpDvaFfeTluwQtWiqzPVjAqS3zA==} + '@inquirer/expand@4.0.17': + resolution: {integrity: sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -468,12 +474,12 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.12': - resolution: {integrity: sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==} + '@inquirer/figures@1.0.13': + resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} engines: {node: '>=18'} - '@inquirer/input@4.2.0': - resolution: {integrity: sha512-opqpHPB1NjAmDISi3uvZOTrjEEU5CWVu/HBkDby8t93+6UxYX0Z7Ps0Ltjm5sZiEbWenjubwUkivAEYQmy9xHw==} + '@inquirer/input@4.2.1': + resolution: {integrity: sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -481,8 +487,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.16': - resolution: {integrity: sha512-kMrXAaKGavBEoBYUCgualbwA9jWUx2TjMA46ek+pEKy38+LFpL9QHlTd8PO2kWPUgI/KB+qi02o4y2rwXbzr3Q==} + '@inquirer/number@3.0.17': + resolution: {integrity: sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -490,8 +496,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.16': - resolution: {integrity: sha512-g8BVNBj5Zeb5/Y3cSN+hDUL7CsIFDIuVxb9EPty3lkxBaYpjL5BNRKSYOF9yOLe+JOcKFd+TSVeADQ4iSY7rbg==} + '@inquirer/password@4.0.17': + resolution: {integrity: sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -499,8 +505,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.6.0': - resolution: {integrity: sha512-jAhL7tyMxB3Gfwn4HIJ0yuJ5pvcB5maYUcouGcgd/ub79f9MqZ+aVnBtuFf+VC2GTkCBF+R+eo7Vi63w5VZlzw==} + '@inquirer/prompts@7.7.1': + resolution: {integrity: sha512-XDxPrEWeWUBy8scAXzXuFY45r/q49R0g72bUzgQXZ1DY/xEFX+ESDMkTQolcb5jRBzaNJX2W8XQl6krMNDTjaA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -508,8 +514,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.4': - resolution: {integrity: sha512-5GGvxVpXXMmfZNtvWw4IsHpR7RzqAR624xtkPd1NxxlV5M+pShMqzL4oRddRkg8rVEOK9fKdJp1jjVML2Lr7TQ==} + '@inquirer/rawlist@4.1.5': + resolution: {integrity: sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -517,8 +523,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.16': - resolution: {integrity: sha512-POCmXo+j97kTGU6aeRjsPyuCpQQfKcMXdeTMw708ZMtWrj5aykZvlUxH4Qgz3+Y1L/cAVZsSpA+UgZCu2GMOMg==} + '@inquirer/search@3.0.17': + resolution: {integrity: sha512-CuBU4BAGFqRYors4TNCYzy9X3DpKtgIW4Boi0WNkm4Ei1hvY9acxKdBdyqzqBCEe4YxSdaQQsasJlFlUJNgojw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -526,8 +532,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.2.4': - resolution: {integrity: sha512-unTppUcTjmnbl/q+h8XeQDhAqIOmwWYWNyiiP2e3orXrg6tOaa5DHXja9PChCSbChOsktyKgOieRZFnajzxoBg==} + '@inquirer/select@4.3.1': + resolution: {integrity: sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -535,8 +541,8 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.7': - resolution: {integrity: sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==} + '@inquirer/type@3.0.8': + resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -565,11 +571,17 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@ls-lint/ls-lint@2.3.1': + resolution: {integrity: sha512-vPe6IDByQnQRTxcAYjTxrmga/tSIui50VBFTB5KIJWY3OOFmxE2VtymjeSEfQfiMbhZV/ZPAqYy2lt8pZFQ0Rw==} + cpu: [x64, arm64, s390x, ppc64le] + os: [darwin, linux, win32] + hasBin: true + '@material/material-color-utilities@0.2.7': resolution: {integrity: sha512-0FCeqG6WvK4/Cc06F/xXMd/pv4FeisI0c1tUpBbfhA2n9Y8eZEv4Karjbmf2ZqQCPUWMrGp8A571tCjizxoTiQ==} - '@mswjs/interceptors@0.39.2': - resolution: {integrity: sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==} + '@mswjs/interceptors@0.39.4': + resolution: {integrity: sha512-B82DbrGVCIBrNEfRJbqUFB0eNz0wVzqbenEpmbE71XLVU4yKZbDnRBuxz+7udc/uM7LDWDD4sRJ5tISzHf2QkQ==} engines: {node: '>=18'} '@open-draft/deferred-promise@2.2.0': @@ -581,161 +593,121 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxlint/darwin-arm64@1.6.0': - resolution: {integrity: sha512-m3wyqBh1TOHjpr/dXeIZY7OoX+MQazb+bMHQdDtwUvefrafUx+5YHRvulYh1sZSQ449nQ3nk3qj5qj535vZRjg==} - cpu: [arm64] - os: [darwin] - - '@oxlint/darwin-x64@1.6.0': - resolution: {integrity: sha512-75fJfF/9xNypr7cnOYoZBhfmG1yP7ex3pUOeYGakmtZRffO9z1i1quLYhjZsmaDXsAIZ3drMhenYHMmFKS3SRg==} - cpu: [x64] - os: [darwin] - - '@oxlint/linux-arm64-gnu@1.6.0': - resolution: {integrity: sha512-YhXGf0FXa72bEt4F7eTVKx5X3zWpbAOPnaA/dZ6/g8tGhw1m9IFjrabVHFjzcx3dQny4MgA59EhyElkDvpUe8A==} - cpu: [arm64] - os: [linux] - - '@oxlint/linux-arm64-musl@1.6.0': - resolution: {integrity: sha512-T3JDhx8mjGjvh5INsPZJrlKHmZsecgDYvtvussKRdkc1Nnn7WC+jH9sh5qlmYvwzvmetlPVNezAoNvmGO9vtMg==} - cpu: [arm64] - os: [linux] - - '@oxlint/linux-x64-gnu@1.6.0': - resolution: {integrity: sha512-Dx7ghtAl8aXBdqofJpi338At6lkeCtTfoinTYQXd9/TEJx+f+zCGNlQO6nJz3ydJBX48FDuOFKkNC+lUlWrd8w==} - cpu: [x64] - os: [linux] - - '@oxlint/linux-x64-musl@1.6.0': - resolution: {integrity: sha512-7KvMGdWmAZtAtg6IjoEJHKxTXdAcrHnUnqfgs0JpXst7trquV2mxBeRZusQXwxpu4HCSomKMvJfsp1qKaqSFDg==} - cpu: [x64] - os: [linux] - - '@oxlint/win32-arm64@1.6.0': - resolution: {integrity: sha512-iSGC9RwX+dl7o5KFr5aH7Gq3nFbkq/3Gda6mxNPMvNkWrgXdIyiINxpyD8hJu566M+QSv1wEAu934BZotFDyoQ==} - cpu: [arm64] - os: [win32] - - '@oxlint/win32-x64@1.6.0': - resolution: {integrity: sha512-jOj3L/gfLc0IwgOTkZMiZ5c673i/hbAmidlaylT0gE6H18hln9HxPgp5GCf4E4y6mwEJlW8QC5hQi221+9otdA==} - cpu: [x64] - os: [win32] - '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rollup/rollup-android-arm-eabi@4.45.0': - resolution: {integrity: sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==} + '@rollup/rollup-android-arm-eabi@4.46.1': + resolution: {integrity: sha512-oENme6QxtLCqjChRUUo3S6X8hjCXnWmJWnedD7VbGML5GUtaOtAyx+fEEXnBXVf0CBZApMQU0Idwi0FmyxzQhw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.45.0': - resolution: {integrity: sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==} + '@rollup/rollup-android-arm64@4.46.1': + resolution: {integrity: sha512-OikvNT3qYTl9+4qQ9Bpn6+XHM+ogtFadRLuT2EXiFQMiNkXFLQfNVppi5o28wvYdHL2s3fM0D/MZJ8UkNFZWsw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.45.0': - resolution: {integrity: sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==} + '@rollup/rollup-darwin-arm64@4.46.1': + resolution: {integrity: sha512-EFYNNGij2WllnzljQDQnlFTXzSJw87cpAs4TVBAWLdkvic5Uh5tISrIL6NRcxoh/b2EFBG/TK8hgRrGx94zD4A==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.45.0': - resolution: {integrity: sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==} + '@rollup/rollup-darwin-x64@4.46.1': + resolution: {integrity: sha512-ZaNH06O1KeTug9WI2+GRBE5Ujt9kZw4a1+OIwnBHal92I8PxSsl5KpsrPvthRynkhMck4XPdvY0z26Cym/b7oA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.45.0': - resolution: {integrity: sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==} + '@rollup/rollup-freebsd-arm64@4.46.1': + resolution: {integrity: sha512-n4SLVebZP8uUlJ2r04+g2U/xFeiQlw09Me5UFqny8HGbARl503LNH5CqFTb5U5jNxTouhRjai6qPT0CR5c/Iig==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.45.0': - resolution: {integrity: sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==} + '@rollup/rollup-freebsd-x64@4.46.1': + resolution: {integrity: sha512-8vu9c02F16heTqpvo3yeiu7Vi1REDEC/yES/dIfq3tSXe6mLndiwvYr3AAvd1tMNUqE9yeGYa5w7PRbI5QUV+w==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.45.0': - resolution: {integrity: sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==} + '@rollup/rollup-linux-arm-gnueabihf@4.46.1': + resolution: {integrity: sha512-K4ncpWl7sQuyp6rWiGUvb6Q18ba8mzM0rjWJ5JgYKlIXAau1db7hZnR0ldJvqKWWJDxqzSLwGUhA4jp+KqgDtQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.45.0': - resolution: {integrity: sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==} + '@rollup/rollup-linux-arm-musleabihf@4.46.1': + resolution: {integrity: sha512-YykPnXsjUjmXE6j6k2QBBGAn1YsJUix7pYaPLK3RVE0bQL2jfdbfykPxfF8AgBlqtYbfEnYHmLXNa6QETjdOjQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.45.0': - resolution: {integrity: sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==} + '@rollup/rollup-linux-arm64-gnu@4.46.1': + resolution: {integrity: sha512-kKvqBGbZ8i9pCGW3a1FH3HNIVg49dXXTsChGFsHGXQaVJPLA4f/O+XmTxfklhccxdF5FefUn2hvkoGJH0ScWOA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.45.0': - resolution: {integrity: sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==} + '@rollup/rollup-linux-arm64-musl@4.46.1': + resolution: {integrity: sha512-zzX5nTw1N1plmqC9RGC9vZHFuiM7ZP7oSWQGqpbmfjK7p947D518cVK1/MQudsBdcD84t6k70WNczJOct6+hdg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.45.0': - resolution: {integrity: sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==} + '@rollup/rollup-linux-loongarch64-gnu@4.46.1': + resolution: {integrity: sha512-O8CwgSBo6ewPpktFfSDgB6SJN9XDcPSvuwxfejiddbIC/hn9Tg6Ai0f0eYDf3XvB/+PIWzOQL+7+TZoB8p9Yuw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': - resolution: {integrity: sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==} + '@rollup/rollup-linux-ppc64-gnu@4.46.1': + resolution: {integrity: sha512-JnCfFVEKeq6G3h3z8e60kAp8Rd7QVnWCtPm7cxx+5OtP80g/3nmPtfdCXbVl063e3KsRnGSKDHUQMydmzc/wBA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.45.0': - resolution: {integrity: sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==} + '@rollup/rollup-linux-riscv64-gnu@4.46.1': + resolution: {integrity: sha512-dVxuDqS237eQXkbYzQQfdf/njgeNw6LZuVyEdUaWwRpKHhsLI+y4H/NJV8xJGU19vnOJCVwaBFgr936FHOnJsQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.45.0': - resolution: {integrity: sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==} + '@rollup/rollup-linux-riscv64-musl@4.46.1': + resolution: {integrity: sha512-CvvgNl2hrZrTR9jXK1ye0Go0HQRT6ohQdDfWR47/KFKiLd5oN5T14jRdUVGF4tnsN8y9oSfMOqH6RuHh+ck8+w==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.45.0': - resolution: {integrity: sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==} + '@rollup/rollup-linux-s390x-gnu@4.46.1': + resolution: {integrity: sha512-x7ANt2VOg2565oGHJ6rIuuAon+A8sfe1IeUx25IKqi49OjSr/K3awoNqr9gCwGEJo9OuXlOn+H2p1VJKx1psxA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.45.0': - resolution: {integrity: sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==} + '@rollup/rollup-linux-x64-gnu@4.46.1': + resolution: {integrity: sha512-9OADZYryz/7E8/qt0vnaHQgmia2Y0wrjSSn1V/uL+zw/i7NUhxbX4cHXdEQ7dnJgzYDS81d8+tf6nbIdRFZQoQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.45.0': - resolution: {integrity: sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==} + '@rollup/rollup-linux-x64-musl@4.46.1': + resolution: {integrity: sha512-NuvSCbXEKY+NGWHyivzbjSVJi68Xfq1VnIvGmsuXs6TCtveeoDRKutI5vf2ntmNnVq64Q4zInet0UDQ+yMB6tA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.45.0': - resolution: {integrity: sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==} + '@rollup/rollup-win32-arm64-msvc@4.46.1': + resolution: {integrity: sha512-mWz+6FSRb82xuUMMV1X3NGiaPFqbLN9aIueHleTZCc46cJvwTlvIh7reQLk4p97dv0nddyewBhwzryBHH7wtPw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.45.0': - resolution: {integrity: sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==} + '@rollup/rollup-win32-ia32-msvc@4.46.1': + resolution: {integrity: sha512-7Thzy9TMXDw9AU4f4vsLNBxh7/VOKuXi73VH3d/kHGr0tZ3x/ewgL9uC7ojUKmH1/zvmZe2tLapYcZllk3SO8Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.45.0': - resolution: {integrity: sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==} + '@rollup/rollup-win32-x64-msvc@4.46.1': + resolution: {integrity: sha512-7GVB4luhFmGUNXXJhH2jJwZCFB3pIOixv2E3s17GQHBFUOQaISlt7aGcQgqvCaDSxTZJUzlK/QJ1FN8S94MrzQ==} cpu: [x64] os: [win32] - '@shikijs/engine-oniguruma@3.7.0': - resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==} + '@shikijs/engine-oniguruma@3.8.1': + resolution: {integrity: sha512-KGQJZHlNY7c656qPFEQpIoqOuC4LrxjyNndRdzk5WKB/Ie87+NJCF1xo9KkOUxwxylk7rT6nhlZyTGTC4fCe1g==} - '@shikijs/langs@3.7.0': - resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==} + '@shikijs/langs@3.8.1': + resolution: {integrity: sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==} - '@shikijs/themes@3.7.0': - resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==} + '@shikijs/themes@3.8.1': + resolution: {integrity: sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==} - '@shikijs/types@3.7.0': - resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==} + '@shikijs/types@3.8.1': + resolution: {integrity: sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -758,8 +730,8 @@ packages: '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} - '@types/node@22.16.3': - resolution: {integrity: sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==} + '@types/node@22.16.5': + resolution: {integrity: sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==} '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} @@ -996,8 +968,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.182: - resolution: {integrity: sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==} + electron-to-chromium@1.5.191: + resolution: {integrity: sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1032,8 +1004,8 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - esbuild@0.25.6: - resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} engines: {node: '>=18'} hasBin: true @@ -1217,8 +1189,8 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@12.7.0: - resolution: {integrity: sha512-KKFRc++IONSyE2UYw9CJ1V0IWx5yQKomwB+pp3cWomWs+v2+ZsG11G2OVfAjFS6WWCppKw+RfKmpqGfSzD5QBQ==} + inquirer@12.8.2: + resolution: {integrity: sha512-oBDL9f4+cDambZVJdfJu2M5JQfvaug9lbo6fKDlFV40i8t3FGA1Db67ov5Hp5DInG4zmXhHWTSnlXBntnJ7GMA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1396,8 +1368,8 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -1489,8 +1461,8 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nwsapi@2.2.21: + resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -1506,11 +1478,6 @@ packages: outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - oxlint@1.6.0: - resolution: {integrity: sha512-jtaD65PqzIa1udvSxxscTKBxYKuZoFXyKGLiU1Qjo1ulq3uv/fQDtoV1yey1FrQZrQjACGPi1Widsy1TucC7Jg==} - engines: {node: '>=8.*'} - hasBin: true - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -1556,19 +1523,14 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} - engines: {node: '>=14'} - hasBin: true - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -1617,16 +1579,16 @@ packages: engines: {node: '>= 0.4'} hasBin: true - rollup@4.45.0: - resolution: {integrity: sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==} + rollup@4.46.1: + resolution: {integrity: sha512-33xGNBsDJAkzt0PvninskHlWnTIPgDtTwhg0U38CUoNP/7H6wI2Cz6dUeoNPbjdTdsYTGuiFFASuUOWovH0SyQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-async@4.0.4: - resolution: {integrity: sha512-2cgeRHnV11lSXBEhq7sN7a5UVjTKm9JTb9x8ApIT//16D7QL96AgnNeWSGoB4gIHc0iYw/Ha0Z+waBaCYZVNhg==} + run-async@4.0.5: + resolution: {integrity: sha512-oN9GTgxUNDBumHTTDmQ8dep6VIJbgj9S3dPP+9XylVLIK4xB9XTXtKWROd5pnhdXR9k0EgO1JRcNh0T+Ny2FsA==} engines: {node: '>=0.12.0'} rxjs@7.8.2: @@ -1821,8 +1783,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - typedoc@0.28.7: - resolution: {integrity: sha512-lpz0Oxl6aidFkmS90VQDQjk/Qf2iw0IUvFqirdONBdj7jPSN9mGXhy66BcGNDxx5ZMyKKiBVAREvPEzT6Uxipw==} + typedoc@0.28.8: + resolution: {integrity: sha512-16GfLopc8icHfdvqZDqdGBoS2AieIRP2rpf9mU+MgN+gGLyEQvAO0QgOa6NJ5QNmQi0LFrDY9in4F2fUNKgJKA==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: @@ -1868,19 +1830,19 @@ packages: vite: optional: true - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@7.0.6: + resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 jiti: '>=1.21.0' - less: '*' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -2070,11 +2032,11 @@ snapshots: '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -2086,7 +2048,7 @@ snapshots: '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 @@ -2104,7 +2066,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -2123,22 +2085,22 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.2': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.2': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/traverse@7.28.0': dependencies: @@ -2147,12 +2109,12 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 debug: 4.4.1 transitivePeerDependencies: - supports-color - '@babel/types@7.28.1': + '@babel/types@7.28.2': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -2225,113 +2187,113 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} - '@esbuild/aix-ppc64@0.25.6': + '@esbuild/aix-ppc64@0.25.8': optional: true - '@esbuild/android-arm64@0.25.6': + '@esbuild/android-arm64@0.25.8': optional: true - '@esbuild/android-arm@0.25.6': + '@esbuild/android-arm@0.25.8': optional: true - '@esbuild/android-x64@0.25.6': + '@esbuild/android-x64@0.25.8': optional: true - '@esbuild/darwin-arm64@0.25.6': + '@esbuild/darwin-arm64@0.25.8': optional: true - '@esbuild/darwin-x64@0.25.6': + '@esbuild/darwin-x64@0.25.8': optional: true - '@esbuild/freebsd-arm64@0.25.6': + '@esbuild/freebsd-arm64@0.25.8': optional: true - '@esbuild/freebsd-x64@0.25.6': + '@esbuild/freebsd-x64@0.25.8': optional: true - '@esbuild/linux-arm64@0.25.6': + '@esbuild/linux-arm64@0.25.8': optional: true - '@esbuild/linux-arm@0.25.6': + '@esbuild/linux-arm@0.25.8': optional: true - '@esbuild/linux-ia32@0.25.6': + '@esbuild/linux-ia32@0.25.8': optional: true - '@esbuild/linux-loong64@0.25.6': + '@esbuild/linux-loong64@0.25.8': optional: true - '@esbuild/linux-mips64el@0.25.6': + '@esbuild/linux-mips64el@0.25.8': optional: true - '@esbuild/linux-ppc64@0.25.6': + '@esbuild/linux-ppc64@0.25.8': optional: true - '@esbuild/linux-riscv64@0.25.6': + '@esbuild/linux-riscv64@0.25.8': optional: true - '@esbuild/linux-s390x@0.25.6': + '@esbuild/linux-s390x@0.25.8': optional: true - '@esbuild/linux-x64@0.25.6': + '@esbuild/linux-x64@0.25.8': optional: true - '@esbuild/netbsd-arm64@0.25.6': + '@esbuild/netbsd-arm64@0.25.8': optional: true - '@esbuild/netbsd-x64@0.25.6': + '@esbuild/netbsd-x64@0.25.8': optional: true - '@esbuild/openbsd-arm64@0.25.6': + '@esbuild/openbsd-arm64@0.25.8': optional: true - '@esbuild/openbsd-x64@0.25.6': + '@esbuild/openbsd-x64@0.25.8': optional: true - '@esbuild/openharmony-arm64@0.25.6': + '@esbuild/openharmony-arm64@0.25.8': optional: true - '@esbuild/sunos-x64@0.25.6': + '@esbuild/sunos-x64@0.25.8': optional: true - '@esbuild/win32-arm64@0.25.6': + '@esbuild/win32-arm64@0.25.8': optional: true - '@esbuild/win32-ia32@0.25.6': + '@esbuild/win32-ia32@0.25.8': optional: true - '@esbuild/win32-x64@0.25.6': + '@esbuild/win32-x64@0.25.8': optional: true - '@gerrit0/mini-shiki@3.7.0': + '@gerrit0/mini-shiki@3.8.1': dependencies: - '@shikijs/engine-oniguruma': 3.7.0 - '@shikijs/langs': 3.7.0 - '@shikijs/themes': 3.7.0 - '@shikijs/types': 3.7.0 + '@shikijs/engine-oniguruma': 3.8.1 + '@shikijs/langs': 3.8.1 + '@shikijs/themes': 3.8.1 + '@shikijs/types': 3.8.1 '@shikijs/vscode-textmate': 10.0.2 - '@inquirer/checkbox@4.1.9(@types/node@22.16.3)': + '@inquirer/checkbox@4.2.0(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@22.16.5) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/confirm@5.1.13(@types/node@22.16.3)': + '@inquirer/confirm@5.1.14(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/core@10.1.14(@types/node@22.16.3)': + '@inquirer/core@10.1.15(@types/node@22.16.5)': dependencies: - '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@22.16.5) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2339,93 +2301,93 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/editor@4.2.14(@types/node@22.16.3)': + '@inquirer/editor@4.2.15(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) external-editor: 3.1.0 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/expand@4.0.16(@types/node@22.16.3)': + '@inquirer/expand@4.0.17(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/figures@1.0.12': {} + '@inquirer/figures@1.0.13': {} - '@inquirer/input@4.2.0(@types/node@22.16.3)': + '@inquirer/input@4.2.1(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/number@3.0.16(@types/node@22.16.3)': + '@inquirer/number@3.0.17(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/password@4.0.16(@types/node@22.16.3)': + '@inquirer/password@4.0.17(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/prompts@7.6.0(@types/node@22.16.3)': + '@inquirer/prompts@7.7.1(@types/node@22.16.5)': dependencies: - '@inquirer/checkbox': 4.1.9(@types/node@22.16.3) - '@inquirer/confirm': 5.1.13(@types/node@22.16.3) - '@inquirer/editor': 4.2.14(@types/node@22.16.3) - '@inquirer/expand': 4.0.16(@types/node@22.16.3) - '@inquirer/input': 4.2.0(@types/node@22.16.3) - '@inquirer/number': 3.0.16(@types/node@22.16.3) - '@inquirer/password': 4.0.16(@types/node@22.16.3) - '@inquirer/rawlist': 4.1.4(@types/node@22.16.3) - '@inquirer/search': 3.0.16(@types/node@22.16.3) - '@inquirer/select': 4.2.4(@types/node@22.16.3) + '@inquirer/checkbox': 4.2.0(@types/node@22.16.5) + '@inquirer/confirm': 5.1.14(@types/node@22.16.5) + '@inquirer/editor': 4.2.15(@types/node@22.16.5) + '@inquirer/expand': 4.0.17(@types/node@22.16.5) + '@inquirer/input': 4.2.1(@types/node@22.16.5) + '@inquirer/number': 3.0.17(@types/node@22.16.5) + '@inquirer/password': 4.0.17(@types/node@22.16.5) + '@inquirer/rawlist': 4.1.5(@types/node@22.16.5) + '@inquirer/search': 3.0.17(@types/node@22.16.5) + '@inquirer/select': 4.3.1(@types/node@22.16.5) optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/rawlist@4.1.4(@types/node@22.16.3)': + '@inquirer/rawlist@4.1.5(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/search@3.0.16(@types/node@22.16.3)': + '@inquirer/search@3.0.17(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@22.16.5) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/select@4.2.4(@types/node@22.16.3)': + '@inquirer/select@4.3.1(@types/node@22.16.5)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@22.16.5) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 - '@inquirer/type@3.0.7(@types/node@22.16.3)': + '@inquirer/type@3.0.8(@types/node@22.16.5)': optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 '@isaacs/cliui@8.0.2': dependencies: @@ -2452,9 +2414,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@ls-lint/ls-lint@2.3.1': {} + '@material/material-color-utilities@0.2.7': {} - '@mswjs/interceptors@0.39.2': + '@mswjs/interceptors@0.39.4': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -2472,107 +2436,83 @@ snapshots: '@open-draft/until@2.1.0': {} - '@oxlint/darwin-arm64@1.6.0': - optional: true - - '@oxlint/darwin-x64@1.6.0': - optional: true - - '@oxlint/linux-arm64-gnu@1.6.0': - optional: true - - '@oxlint/linux-arm64-musl@1.6.0': - optional: true - - '@oxlint/linux-x64-gnu@1.6.0': - optional: true - - '@oxlint/linux-x64-musl@1.6.0': - optional: true - - '@oxlint/win32-arm64@1.6.0': - optional: true - - '@oxlint/win32-x64@1.6.0': - optional: true - '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/rollup-android-arm-eabi@4.45.0': + '@rollup/rollup-android-arm-eabi@4.46.1': optional: true - '@rollup/rollup-android-arm64@4.45.0': + '@rollup/rollup-android-arm64@4.46.1': optional: true - '@rollup/rollup-darwin-arm64@4.45.0': + '@rollup/rollup-darwin-arm64@4.46.1': optional: true - '@rollup/rollup-darwin-x64@4.45.0': + '@rollup/rollup-darwin-x64@4.46.1': optional: true - '@rollup/rollup-freebsd-arm64@4.45.0': + '@rollup/rollup-freebsd-arm64@4.46.1': optional: true - '@rollup/rollup-freebsd-x64@4.45.0': + '@rollup/rollup-freebsd-x64@4.46.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.45.0': + '@rollup/rollup-linux-arm-gnueabihf@4.46.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.45.0': + '@rollup/rollup-linux-arm-musleabihf@4.46.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.45.0': + '@rollup/rollup-linux-arm64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.45.0': + '@rollup/rollup-linux-arm64-musl@4.46.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.45.0': + '@rollup/rollup-linux-loongarch64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': + '@rollup/rollup-linux-ppc64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.45.0': + '@rollup/rollup-linux-riscv64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.45.0': + '@rollup/rollup-linux-riscv64-musl@4.46.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.45.0': + '@rollup/rollup-linux-s390x-gnu@4.46.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.45.0': + '@rollup/rollup-linux-x64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-x64-musl@4.45.0': + '@rollup/rollup-linux-x64-musl@4.46.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.45.0': + '@rollup/rollup-win32-arm64-msvc@4.46.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.45.0': + '@rollup/rollup-win32-ia32-msvc@4.46.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.45.0': + '@rollup/rollup-win32-x64-msvc@4.46.1': optional: true - '@shikijs/engine-oniguruma@3.7.0': + '@shikijs/engine-oniguruma@3.8.1': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.1 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.7.0': + '@shikijs/langs@3.8.1': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.1 - '@shikijs/themes@3.7.0': + '@shikijs/themes@3.8.1': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.1 - '@shikijs/types@3.7.0': + '@shikijs/types@3.8.1': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -2595,11 +2535,11 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 - '@types/node@22.16.3': + '@types/node@22.16.5': dependencies: undici-types: 6.21.0 @@ -2609,7 +2549,7 @@ snapshots: '@types/unist@3.0.3': {} - '@vitest/coverage-istanbul@3.2.4(vitest@3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0))': + '@vitest/coverage-istanbul@3.2.4(vitest@3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0))': dependencies: '@istanbuljs/schema': 0.1.3 debug: 4.4.1 @@ -2621,7 +2561,7 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0) + vitest: 3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -2633,14 +2573,14 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(vite@7.0.6(@types/node@22.16.5)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.10.4(@types/node@22.16.3)(typescript@5.8.3) - vite: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) + msw: 2.10.4(@types/node@22.16.5)(typescript@5.8.3) + vite: 7.0.6(@types/node@22.16.5)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -2665,7 +2605,7 @@ snapshots: '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 + loupe: 3.2.0 tinyrainbow: 2.0.0 acorn-jsx-walk@2.0.0: {} @@ -2720,7 +2660,7 @@ snapshots: browserslist@4.25.1: dependencies: caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.182 + electron-to-chromium: 1.5.191 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -2750,7 +2690,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.4 + loupe: 3.2.0 pathval: 2.0.1 chalk@4.1.2: @@ -2849,7 +2789,7 @@ snapshots: json5: 2.2.3 memoize: 10.1.0 picocolors: 1.1.1 - picomatch: 4.0.2 + picomatch: 4.0.3 prompts: 2.4.2 rechoir: 0.8.0 safe-regex: 2.1.1 @@ -2866,7 +2806,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.182: {} + electron-to-chromium@1.5.191: {} emoji-regex@8.0.0: {} @@ -2891,34 +2831,34 @@ snapshots: dependencies: es-errors: 1.3.0 - esbuild@0.25.6: + esbuild@0.25.8: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.6 - '@esbuild/android-arm': 0.25.6 - '@esbuild/android-arm64': 0.25.6 - '@esbuild/android-x64': 0.25.6 - '@esbuild/darwin-arm64': 0.25.6 - '@esbuild/darwin-x64': 0.25.6 - '@esbuild/freebsd-arm64': 0.25.6 - '@esbuild/freebsd-x64': 0.25.6 - '@esbuild/linux-arm': 0.25.6 - '@esbuild/linux-arm64': 0.25.6 - '@esbuild/linux-ia32': 0.25.6 - '@esbuild/linux-loong64': 0.25.6 - '@esbuild/linux-mips64el': 0.25.6 - '@esbuild/linux-ppc64': 0.25.6 - '@esbuild/linux-riscv64': 0.25.6 - '@esbuild/linux-s390x': 0.25.6 - '@esbuild/linux-x64': 0.25.6 - '@esbuild/netbsd-arm64': 0.25.6 - '@esbuild/netbsd-x64': 0.25.6 - '@esbuild/openbsd-arm64': 0.25.6 - '@esbuild/openbsd-x64': 0.25.6 - '@esbuild/openharmony-arm64': 0.25.6 - '@esbuild/sunos-x64': 0.25.6 - '@esbuild/win32-arm64': 0.25.6 - '@esbuild/win32-ia32': 0.25.6 - '@esbuild/win32-x64': 0.25.6 + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 escalade@3.2.0: {} @@ -2944,9 +2884,9 @@ snapshots: fast-uri@3.0.6: {} - fdir@6.4.6(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 foreground-child@3.3.1: dependencies: @@ -3049,7 +2989,7 @@ snapshots: i18next-browser-languagedetector@8.2.0: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 i18next-http-backend@2.7.3: dependencies: @@ -3069,11 +3009,11 @@ snapshots: i18next@22.5.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 i18next@24.2.3(typescript@5.8.3): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 optionalDependencies: typescript: 5.8.3 @@ -3093,17 +3033,17 @@ snapshots: ini@4.1.1: {} - inquirer@12.7.0(@types/node@22.16.3): + inquirer@12.8.2(@types/node@22.16.5): dependencies: - '@inquirer/core': 10.1.14(@types/node@22.16.3) - '@inquirer/prompts': 7.6.0(@types/node@22.16.3) - '@inquirer/type': 3.0.7(@types/node@22.16.3) + '@inquirer/core': 10.1.15(@types/node@22.16.5) + '@inquirer/prompts': 7.7.1(@types/node@22.16.5) + '@inquirer/type': 3.0.8(@types/node@22.16.5) ansi-escapes: 4.3.2 mute-stream: 2.0.0 - run-async: 4.0.4 + run-async: 4.0.5 rxjs: 7.8.2 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 interpret@3.1.1: {} @@ -3189,7 +3129,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 + nwsapi: 2.2.21 parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -3285,7 +3225,7 @@ snapshots: lodash@4.17.21: {} - loupe@3.1.4: {} + loupe@3.2.0: {} lru-cache@10.4.3: {} @@ -3302,7 +3242,7 @@ snapshots: magicast@0.3.5: dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 source-map-js: 1.2.1 make-dir@4.0.0: @@ -3342,13 +3282,13 @@ snapshots: ms@2.1.3: {} - msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3): + msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.13(@types/node@22.16.3) - '@mswjs/interceptors': 0.39.2 + '@inquirer/confirm': 5.1.14(@types/node@22.16.5) + '@mswjs/interceptors': 0.39.4 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 @@ -3379,7 +3319,7 @@ snapshots: node-releases@2.0.19: {} - nwsapi@2.2.20: {} + nwsapi@2.2.21: {} object-keys@1.1.1: {} @@ -3389,17 +3329,6 @@ snapshots: outvariant@1.4.3: {} - oxlint@1.6.0: - optionalDependencies: - '@oxlint/darwin-arm64': 1.6.0 - '@oxlint/darwin-x64': 1.6.0 - '@oxlint/linux-arm64-gnu': 1.6.0 - '@oxlint/linux-arm64-musl': 1.6.0 - '@oxlint/linux-x64-gnu': 1.6.0 - '@oxlint/linux-x64-musl': 1.6.0 - '@oxlint/win32-arm64': 1.6.0 - '@oxlint/win32-x64': 1.6.0 - package-json-from-dist@1.0.1: {} pako@1.0.11: {} @@ -3448,7 +3377,7 @@ snapshots: picocolors@1.1.1: {} - picomatch@4.0.2: {} + picomatch@4.0.3: {} postcss@8.5.6: dependencies: @@ -3456,8 +3385,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.6.2: {} - process-nextick-args@2.0.1: {} prompts@2.4.2: @@ -3503,38 +3430,35 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - rollup@4.45.0: + rollup@4.46.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.45.0 - '@rollup/rollup-android-arm64': 4.45.0 - '@rollup/rollup-darwin-arm64': 4.45.0 - '@rollup/rollup-darwin-x64': 4.45.0 - '@rollup/rollup-freebsd-arm64': 4.45.0 - '@rollup/rollup-freebsd-x64': 4.45.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.0 - '@rollup/rollup-linux-arm-musleabihf': 4.45.0 - '@rollup/rollup-linux-arm64-gnu': 4.45.0 - '@rollup/rollup-linux-arm64-musl': 4.45.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.45.0 - '@rollup/rollup-linux-riscv64-gnu': 4.45.0 - '@rollup/rollup-linux-riscv64-musl': 4.45.0 - '@rollup/rollup-linux-s390x-gnu': 4.45.0 - '@rollup/rollup-linux-x64-gnu': 4.45.0 - '@rollup/rollup-linux-x64-musl': 4.45.0 - '@rollup/rollup-win32-arm64-msvc': 4.45.0 - '@rollup/rollup-win32-ia32-msvc': 4.45.0 - '@rollup/rollup-win32-x64-msvc': 4.45.0 + '@rollup/rollup-android-arm-eabi': 4.46.1 + '@rollup/rollup-android-arm64': 4.46.1 + '@rollup/rollup-darwin-arm64': 4.46.1 + '@rollup/rollup-darwin-x64': 4.46.1 + '@rollup/rollup-freebsd-arm64': 4.46.1 + '@rollup/rollup-freebsd-x64': 4.46.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.46.1 + '@rollup/rollup-linux-arm-musleabihf': 4.46.1 + '@rollup/rollup-linux-arm64-gnu': 4.46.1 + '@rollup/rollup-linux-arm64-musl': 4.46.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.46.1 + '@rollup/rollup-linux-ppc64-gnu': 4.46.1 + '@rollup/rollup-linux-riscv64-gnu': 4.46.1 + '@rollup/rollup-linux-riscv64-musl': 4.46.1 + '@rollup/rollup-linux-s390x-gnu': 4.46.1 + '@rollup/rollup-linux-x64-gnu': 4.46.1 + '@rollup/rollup-linux-x64-musl': 4.46.1 + '@rollup/rollup-win32-arm64-msvc': 4.46.1 + '@rollup/rollup-win32-ia32-msvc': 4.46.1 + '@rollup/rollup-win32-x64-msvc': 4.46.1 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} - run-async@4.0.4: - dependencies: - oxlint: 1.6.0 - prettier: 3.6.2 + run-async@4.0.5: {} rxjs@7.8.2: dependencies: @@ -3643,8 +3567,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 tinypool@1.1.1: {} @@ -3702,9 +3626,9 @@ snapshots: type-fest@4.41.0: {} - typedoc@0.28.7(typescript@5.8.3): + typedoc@0.28.8(typescript@5.8.3): dependencies: - '@gerrit0/mini-shiki': 3.7.0 + '@gerrit0/mini-shiki': 3.8.1 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 @@ -3732,13 +3656,13 @@ snapshots: util-deprecate@1.0.2: {} - vite-node@3.2.4(@types/node@22.16.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@22.16.5)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) + vite: 7.0.6(@types/node@22.16.5)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -3753,40 +3677,40 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@22.16.5)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: - vite: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) + vite: 7.0.6(@types/node@22.16.5)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0): + vite@7.0.6(@types/node@22.16.5)(yaml@2.8.0): dependencies: - esbuild: 0.25.6 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + esbuild: 0.25.8 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.45.0 + rollup: 4.46.1 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 fsevents: 2.3.3 yaml: 2.8.0 - vitest-canvas-mock@0.3.3(vitest@3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0)): + vitest-canvas-mock@0.3.3(vitest@3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0)): dependencies: jest-canvas-mock: 2.5.2 - vitest: 3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0) + vitest: 3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0) - vitest@3.2.4(@types/node@22.16.3)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(yaml@2.8.0): + vitest@3.2.4(@types/node@22.16.5)(jsdom@26.1.0)(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@22.16.3)(typescript@5.8.3))(vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@22.16.5)(typescript@5.8.3))(vite@7.0.6(@types/node@22.16.5)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -3797,18 +3721,18 @@ snapshots: expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@22.16.3)(yaml@2.8.0) + vite: 7.0.6(@types/node@22.16.5)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@22.16.5)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.5 jsdom: 26.1.0 transitivePeerDependencies: - jiti diff --git a/public/exp-sprites.json b/public/exp-sprites.json index 7430bcf4dba..1903a6c7804 100644 --- a/public/exp-sprites.json +++ b/public/exp-sprites.json @@ -333,8 +333,6 @@ "671-yellow", "6713", "6713", - "672", - "672", "6724", "6724", "673", @@ -377,10 +375,6 @@ "690", "691", "691", - "692", - "692", - "693", - "693", "695", "695", "696", @@ -503,10 +497,6 @@ "751", "752", "752", - "753", - "753", - "754", - "754", "755", "755", "756", @@ -1459,8 +1449,6 @@ "671b-yellow", "6713b", "6713b", - "672b", - "672b", "6724b", "6724b", "673b", @@ -1503,10 +1491,6 @@ "690b", "691b", "691b", - "692b", - "692b", - "693b", - "693b", "695b", "695b", "696b", @@ -1629,10 +1613,6 @@ "751b", "752b", "752b", - "753b", - "753b", - "754b", - "754b", "755b", "755b", "756b", @@ -2585,8 +2565,6 @@ "671sb-yellow", "6713sb", "6713sb", - "672sb", - "672sb", "6724sb", "6724sb", "673sb", @@ -2629,10 +2607,6 @@ "690sb", "691sb", "691sb", - "692sb", - "692sb", - "693sb", - "693sb", "695sb", "695sb", "696sb", @@ -2755,10 +2729,6 @@ "751sb", "752sb", "752sb", - "753sb", - "753sb", - "754sb", - "754sb", "755sb", "755sb", "756sb", @@ -3716,8 +3686,6 @@ "671s-yellow", "6713s", "6713s", - "672s", - "672s", "6724s", "6724s", "673s", @@ -3760,10 +3728,6 @@ "690s", "691s", "691s", - "692s", - "692s", - "693s", - "693s", "695s", "695s", "696s", @@ -3886,10 +3850,6 @@ "751s", "752s", "752s", - "753s", - "753s", - "754s", - "754s", "755s", "755s", "756s", @@ -4625,8 +4585,6 @@ "730", "747", "748", - "753", - "754", "755", "756", "761", diff --git a/public/images/pokemon/1003.png b/public/images/pokemon/1003.png index eb69527246d..3ec033c12dd 100644 Binary files a/public/images/pokemon/1003.png and b/public/images/pokemon/1003.png differ diff --git a/public/images/pokemon/1006.png b/public/images/pokemon/1006.png index b5baebdf428..d87d4e6f079 100644 Binary files a/public/images/pokemon/1006.png and b/public/images/pokemon/1006.png differ diff --git a/public/images/pokemon/1008-ultimate-mode.png b/public/images/pokemon/1008-ultimate-mode.png index 8d41ad14b1d..7a298b4102b 100644 Binary files a/public/images/pokemon/1008-ultimate-mode.png and b/public/images/pokemon/1008-ultimate-mode.png differ diff --git a/public/images/pokemon/1011.png b/public/images/pokemon/1011.png index 035ea0aca44..9078d5fb3a4 100644 Binary files a/public/images/pokemon/1011.png and b/public/images/pokemon/1011.png differ diff --git a/public/images/pokemon/1012-counterfeit.png b/public/images/pokemon/1012-counterfeit.png index 32d9c1790c9..c8edcba8c0d 100644 Binary files a/public/images/pokemon/1012-counterfeit.png and b/public/images/pokemon/1012-counterfeit.png differ diff --git a/public/images/pokemon/1013-unremarkable.png b/public/images/pokemon/1013-unremarkable.png index aaf57aa1a02..4c651d8e444 100644 Binary files a/public/images/pokemon/1013-unremarkable.png and b/public/images/pokemon/1013-unremarkable.png differ diff --git a/public/images/pokemon/1019.png b/public/images/pokemon/1019.png index f29e2df2fcf..73f9627176d 100644 Binary files a/public/images/pokemon/1019.png and b/public/images/pokemon/1019.png differ diff --git a/public/images/pokemon/1024-stellar.png b/public/images/pokemon/1024-stellar.png index 7e40fb0043f..0bb37dcd28b 100644 Binary files a/public/images/pokemon/1024-stellar.png and b/public/images/pokemon/1024-stellar.png differ diff --git a/public/images/pokemon/143-gigantamax.png b/public/images/pokemon/143-gigantamax.png index 3adc2c148cd..cc71fd0190b 100644 Binary files a/public/images/pokemon/143-gigantamax.png and b/public/images/pokemon/143-gigantamax.png differ diff --git a/public/images/pokemon/143.png b/public/images/pokemon/143.png index a09d0533fce..139ae728962 100644 Binary files a/public/images/pokemon/143.png and b/public/images/pokemon/143.png differ diff --git a/public/images/pokemon/154.png b/public/images/pokemon/154.png index 7547d4c573a..edbad0fadef 100644 Binary files a/public/images/pokemon/154.png and b/public/images/pokemon/154.png differ diff --git a/public/images/pokemon/159.png b/public/images/pokemon/159.png index 46073ff539c..e2f3e72cdfc 100644 Binary files a/public/images/pokemon/159.png and b/public/images/pokemon/159.png differ diff --git a/public/images/pokemon/164.png b/public/images/pokemon/164.png index b5d83ad6818..6026c10500e 100644 Binary files a/public/images/pokemon/164.png and b/public/images/pokemon/164.png differ diff --git a/public/images/pokemon/172-spiky.png b/public/images/pokemon/172-spiky.png index f74c6574344..6c87dd18067 100644 Binary files a/public/images/pokemon/172-spiky.png and b/public/images/pokemon/172-spiky.png differ diff --git a/public/images/pokemon/172.png b/public/images/pokemon/172.png index 9e96ff34936..2e5b01c226b 100644 Binary files a/public/images/pokemon/172.png and b/public/images/pokemon/172.png differ diff --git a/public/images/pokemon/178.png b/public/images/pokemon/178.png index c1de10a8c9e..cff38d21911 100644 Binary files a/public/images/pokemon/178.png and b/public/images/pokemon/178.png differ diff --git a/public/images/pokemon/189.png b/public/images/pokemon/189.png index 632366956bb..30a4cc2c176 100644 Binary files a/public/images/pokemon/189.png and b/public/images/pokemon/189.png differ diff --git a/public/images/pokemon/190.png b/public/images/pokemon/190.png index 40563cec158..fb412023a6f 100644 Binary files a/public/images/pokemon/190.png and b/public/images/pokemon/190.png differ diff --git a/public/images/pokemon/194.png b/public/images/pokemon/194.png index d126190685b..7814b8d6adf 100644 Binary files a/public/images/pokemon/194.png and b/public/images/pokemon/194.png differ diff --git a/public/images/pokemon/196.png b/public/images/pokemon/196.png index 7b1890777bd..67a7aee43da 100644 Binary files a/public/images/pokemon/196.png and b/public/images/pokemon/196.png differ diff --git a/public/images/pokemon/198.png b/public/images/pokemon/198.png index 5a310216129..09c3231bdd3 100644 Binary files a/public/images/pokemon/198.png and b/public/images/pokemon/198.png differ diff --git a/public/images/pokemon/199.png b/public/images/pokemon/199.png index f2e8888fb2d..0226c42050e 100644 Binary files a/public/images/pokemon/199.png and b/public/images/pokemon/199.png differ diff --git a/public/images/pokemon/2026.png b/public/images/pokemon/2026.png index fde7405f65a..413adec657e 100644 Binary files a/public/images/pokemon/2026.png and b/public/images/pokemon/2026.png differ diff --git a/public/images/pokemon/2038.png b/public/images/pokemon/2038.png index 7e8fd0ea1b2..bf2ed421d3a 100644 Binary files a/public/images/pokemon/2038.png and b/public/images/pokemon/2038.png differ diff --git a/public/images/pokemon/207.png b/public/images/pokemon/207.png index 115c41b0673..daea67ce06c 100644 Binary files a/public/images/pokemon/207.png and b/public/images/pokemon/207.png differ diff --git a/public/images/pokemon/218.png b/public/images/pokemon/218.png index 64faad88ba3..9e0d39b5703 100644 Binary files a/public/images/pokemon/218.png and b/public/images/pokemon/218.png differ diff --git a/public/images/pokemon/226.png b/public/images/pokemon/226.png index 006bd465b05..eb547c42ff2 100644 Binary files a/public/images/pokemon/226.png and b/public/images/pokemon/226.png differ diff --git a/public/images/pokemon/228.png b/public/images/pokemon/228.png index 476aa4d619d..d5d7c3e7b03 100644 Binary files a/public/images/pokemon/228.png and b/public/images/pokemon/228.png differ diff --git a/public/images/pokemon/229-mega.png b/public/images/pokemon/229-mega.png index fac79bad8c1..a6bcfd2d4d5 100644 Binary files a/public/images/pokemon/229-mega.png and b/public/images/pokemon/229-mega.png differ diff --git a/public/images/pokemon/229.png b/public/images/pokemon/229.png index 6439012bacf..bd00508c83a 100644 Binary files a/public/images/pokemon/229.png and b/public/images/pokemon/229.png differ diff --git a/public/images/pokemon/232.png b/public/images/pokemon/232.png index 0bfb76be5ed..b5b8f8b7dfd 100644 Binary files a/public/images/pokemon/232.png and b/public/images/pokemon/232.png differ diff --git a/public/images/pokemon/25-beauty-cosplay.png b/public/images/pokemon/25-beauty-cosplay.png index 0db73184c8e..f798f9e1a68 100644 Binary files a/public/images/pokemon/25-beauty-cosplay.png and b/public/images/pokemon/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/25-cool-cosplay.png b/public/images/pokemon/25-cool-cosplay.png index ba1e1145901..ceb0b071559 100644 Binary files a/public/images/pokemon/25-cool-cosplay.png and b/public/images/pokemon/25-cool-cosplay.png differ diff --git a/public/images/pokemon/25-cosplay.png b/public/images/pokemon/25-cosplay.png index 217ab730cc4..de97cf42280 100644 Binary files a/public/images/pokemon/25-cosplay.png and b/public/images/pokemon/25-cosplay.png differ diff --git a/public/images/pokemon/25-cute-cosplay.png b/public/images/pokemon/25-cute-cosplay.png index 17fdfd32609..f3e1f408d70 100644 Binary files a/public/images/pokemon/25-cute-cosplay.png and b/public/images/pokemon/25-cute-cosplay.png differ diff --git a/public/images/pokemon/25-gigantamax.png b/public/images/pokemon/25-gigantamax.png index e39511341a3..393c2a871f8 100644 Binary files a/public/images/pokemon/25-gigantamax.png and b/public/images/pokemon/25-gigantamax.png differ diff --git a/public/images/pokemon/25-partner.png b/public/images/pokemon/25-partner.png index f1cb33f9701..d35e16c90c6 100644 Binary files a/public/images/pokemon/25-partner.png and b/public/images/pokemon/25-partner.png differ diff --git a/public/images/pokemon/25-smart-cosplay.png b/public/images/pokemon/25-smart-cosplay.png index 603837dd34f..19498bce792 100644 Binary files a/public/images/pokemon/25-smart-cosplay.png and b/public/images/pokemon/25-smart-cosplay.png differ diff --git a/public/images/pokemon/25-tough-cosplay.png b/public/images/pokemon/25-tough-cosplay.png index 380269b87e7..0ba923ad111 100644 Binary files a/public/images/pokemon/25-tough-cosplay.png and b/public/images/pokemon/25-tough-cosplay.png differ diff --git a/public/images/pokemon/25.png b/public/images/pokemon/25.png index f1cb33f9701..d35e16c90c6 100644 Binary files a/public/images/pokemon/25.png and b/public/images/pokemon/25.png differ diff --git a/public/images/pokemon/253.png b/public/images/pokemon/253.png index f9b2258a5b1..75dd8375140 100644 Binary files a/public/images/pokemon/253.png and b/public/images/pokemon/253.png differ diff --git a/public/images/pokemon/256.png b/public/images/pokemon/256.png index 2a071e76188..6ca33fcd2be 100644 Binary files a/public/images/pokemon/256.png and b/public/images/pokemon/256.png differ diff --git a/public/images/pokemon/257-mega.png b/public/images/pokemon/257-mega.png index 51d700c3e9a..4be955d2a9b 100644 Binary files a/public/images/pokemon/257-mega.png and b/public/images/pokemon/257-mega.png differ diff --git a/public/images/pokemon/257.png b/public/images/pokemon/257.png index 77dbc705a60..7d1fa3abcd8 100644 Binary files a/public/images/pokemon/257.png and b/public/images/pokemon/257.png differ diff --git a/public/images/pokemon/26.png b/public/images/pokemon/26.png index f2cdf63c718..006b4ed7f4d 100644 Binary files a/public/images/pokemon/26.png and b/public/images/pokemon/26.png differ diff --git a/public/images/pokemon/261.png b/public/images/pokemon/261.png index da22d88806f..053dcf1cf7d 100644 Binary files a/public/images/pokemon/261.png and b/public/images/pokemon/261.png differ diff --git a/public/images/pokemon/262.png b/public/images/pokemon/262.png index 71509b88626..4bbea60d31a 100644 Binary files a/public/images/pokemon/262.png and b/public/images/pokemon/262.png differ diff --git a/public/images/pokemon/2670.png b/public/images/pokemon/2670.png index e6660c6285a..a67432b0867 100644 Binary files a/public/images/pokemon/2670.png and b/public/images/pokemon/2670.png differ diff --git a/public/images/pokemon/275.png b/public/images/pokemon/275.png index 61f98ed1655..b53ce70db82 100644 Binary files a/public/images/pokemon/275.png and b/public/images/pokemon/275.png differ diff --git a/public/images/pokemon/276.png b/public/images/pokemon/276.png index a191440497c..253e580e043 100644 Binary files a/public/images/pokemon/276.png and b/public/images/pokemon/276.png differ diff --git a/public/images/pokemon/277.png b/public/images/pokemon/277.png index 2ec0b9b8a9a..727c360b1eb 100644 Binary files a/public/images/pokemon/277.png and b/public/images/pokemon/277.png differ diff --git a/public/images/pokemon/279.png b/public/images/pokemon/279.png index e7243586515..36976dab884 100644 Binary files a/public/images/pokemon/279.png and b/public/images/pokemon/279.png differ diff --git a/public/images/pokemon/280.png b/public/images/pokemon/280.png index 7ec5a339757..22c2620cbc8 100644 Binary files a/public/images/pokemon/280.png and b/public/images/pokemon/280.png differ diff --git a/public/images/pokemon/281.png b/public/images/pokemon/281.png index 15b9eecb9ec..1d458f15e6c 100644 Binary files a/public/images/pokemon/281.png and b/public/images/pokemon/281.png differ diff --git a/public/images/pokemon/282.png b/public/images/pokemon/282.png index 7b2460756b6..b477f14ead4 100644 Binary files a/public/images/pokemon/282.png and b/public/images/pokemon/282.png differ diff --git a/public/images/pokemon/3-gigantamax.png b/public/images/pokemon/3-gigantamax.png index d551638c880..fdd6539c0f4 100644 Binary files a/public/images/pokemon/3-gigantamax.png and b/public/images/pokemon/3-gigantamax.png differ diff --git a/public/images/pokemon/3-mega.png b/public/images/pokemon/3-mega.png index c15a9cac092..5a2fa84e3c5 100644 Binary files a/public/images/pokemon/3-mega.png and b/public/images/pokemon/3-mega.png differ diff --git a/public/images/pokemon/3.png b/public/images/pokemon/3.png index 534a48fdfa6..827c7f2de9d 100644 Binary files a/public/images/pokemon/3.png and b/public/images/pokemon/3.png differ diff --git a/public/images/pokemon/308.png b/public/images/pokemon/308.png index 94dd021f209..f2d1d7a74ee 100644 Binary files a/public/images/pokemon/308.png and b/public/images/pokemon/308.png differ diff --git a/public/images/pokemon/313.png b/public/images/pokemon/313.png index fb0dd07c924..877b2b9468a 100644 Binary files a/public/images/pokemon/313.png and b/public/images/pokemon/313.png differ diff --git a/public/images/pokemon/314.png b/public/images/pokemon/314.png index 7252a7fb840..9caa1163c5f 100644 Binary files a/public/images/pokemon/314.png and b/public/images/pokemon/314.png differ diff --git a/public/images/pokemon/327.png b/public/images/pokemon/327.png index c103de3916d..f44cd53c24d 100644 Binary files a/public/images/pokemon/327.png and b/public/images/pokemon/327.png differ diff --git a/public/images/pokemon/332.png b/public/images/pokemon/332.png index 44e374426b4..5565bed4f50 100644 Binary files a/public/images/pokemon/332.png and b/public/images/pokemon/332.png differ diff --git a/public/images/pokemon/335.png b/public/images/pokemon/335.png index 65b56582339..3fca7fe6fd2 100644 Binary files a/public/images/pokemon/335.png and b/public/images/pokemon/335.png differ diff --git a/public/images/pokemon/336.png b/public/images/pokemon/336.png index daf64440220..3b9a18a7353 100644 Binary files a/public/images/pokemon/336.png and b/public/images/pokemon/336.png differ diff --git a/public/images/pokemon/34.png b/public/images/pokemon/34.png index e697a987354..eb493a7b2d9 100644 Binary files a/public/images/pokemon/34.png and b/public/images/pokemon/34.png differ diff --git a/public/images/pokemon/357.png b/public/images/pokemon/357.png index 6b1ed63c3fe..84d252e2f9c 100644 Binary files a/public/images/pokemon/357.png and b/public/images/pokemon/357.png differ diff --git a/public/images/pokemon/359-mega.png b/public/images/pokemon/359-mega.png index 9c026d78779..6e787782196 100644 Binary files a/public/images/pokemon/359-mega.png and b/public/images/pokemon/359-mega.png differ diff --git a/public/images/pokemon/359.png b/public/images/pokemon/359.png index e5a1d168ad2..37ccbc7ccae 100644 Binary files a/public/images/pokemon/359.png and b/public/images/pokemon/359.png differ diff --git a/public/images/pokemon/370.png b/public/images/pokemon/370.png index e9f29872fb2..62f8a8c89be 100644 Binary files a/public/images/pokemon/370.png and b/public/images/pokemon/370.png differ diff --git a/public/images/pokemon/373.png b/public/images/pokemon/373.png index 5174907b69b..4eb8f4c9668 100644 Binary files a/public/images/pokemon/373.png and b/public/images/pokemon/373.png differ diff --git a/public/images/pokemon/379.png b/public/images/pokemon/379.png index 3a4185ffaf6..40692b08591 100644 Binary files a/public/images/pokemon/379.png and b/public/images/pokemon/379.png differ diff --git a/public/images/pokemon/390.png b/public/images/pokemon/390.png index e96b6631c8a..73c1b12a96e 100644 Binary files a/public/images/pokemon/390.png and b/public/images/pokemon/390.png differ diff --git a/public/images/pokemon/391.png b/public/images/pokemon/391.png index bb6abefada7..1d969308ee6 100644 Binary files a/public/images/pokemon/391.png and b/public/images/pokemon/391.png differ diff --git a/public/images/pokemon/392.png b/public/images/pokemon/392.png index b65da9eecb4..9ec62c5f5d9 100644 Binary files a/public/images/pokemon/392.png and b/public/images/pokemon/392.png differ diff --git a/public/images/pokemon/394.png b/public/images/pokemon/394.png index 63b5aa5a29d..f6a7dfb244f 100644 Binary files a/public/images/pokemon/394.png and b/public/images/pokemon/394.png differ diff --git a/public/images/pokemon/395.png b/public/images/pokemon/395.png index a6a62e3b9f0..f87c0b4848c 100644 Binary files a/public/images/pokemon/395.png and b/public/images/pokemon/395.png differ diff --git a/public/images/pokemon/396.png b/public/images/pokemon/396.png index 34033368ac6..81aab613a8a 100644 Binary files a/public/images/pokemon/396.png and b/public/images/pokemon/396.png differ diff --git a/public/images/pokemon/397.png b/public/images/pokemon/397.png index e9d14db7eab..e334beb3b2a 100644 Binary files a/public/images/pokemon/397.png and b/public/images/pokemon/397.png differ diff --git a/public/images/pokemon/398.png b/public/images/pokemon/398.png index d1adb74b7ca..76d22f0a9bd 100644 Binary files a/public/images/pokemon/398.png and b/public/images/pokemon/398.png differ diff --git a/public/images/pokemon/40.png b/public/images/pokemon/40.png index e6b59c51bfe..7a5741f1cb1 100644 Binary files a/public/images/pokemon/40.png and b/public/images/pokemon/40.png differ diff --git a/public/images/pokemon/401.png b/public/images/pokemon/401.png index f4fffa67e54..7aa753cc221 100644 Binary files a/public/images/pokemon/401.png and b/public/images/pokemon/401.png differ diff --git a/public/images/pokemon/402.png b/public/images/pokemon/402.png index 15de8f02a0d..121a2f47218 100644 Binary files a/public/images/pokemon/402.png and b/public/images/pokemon/402.png differ diff --git a/public/images/pokemon/404.png b/public/images/pokemon/404.png index c3c77be70db..54a01d80382 100644 Binary files a/public/images/pokemon/404.png and b/public/images/pokemon/404.png differ diff --git a/public/images/pokemon/4078.png b/public/images/pokemon/4078.png index fcaf4304ea5..574e3a25c58 100644 Binary files a/public/images/pokemon/4078.png and b/public/images/pokemon/4078.png differ diff --git a/public/images/pokemon/4080.png b/public/images/pokemon/4080.png index 2ad2193cdbc..8143b8acb0e 100644 Binary files a/public/images/pokemon/4080.png and b/public/images/pokemon/4080.png differ diff --git a/public/images/pokemon/4145.png b/public/images/pokemon/4145.png index 7988a7b4f01..79220060047 100644 Binary files a/public/images/pokemon/4145.png and b/public/images/pokemon/4145.png differ diff --git a/public/images/pokemon/4146.png b/public/images/pokemon/4146.png index 1c18e4c1b65..0ea236a9540 100644 Binary files a/public/images/pokemon/4146.png and b/public/images/pokemon/4146.png differ diff --git a/public/images/pokemon/417.png b/public/images/pokemon/417.png index 02cffd1c73f..9fb8ab2f405 100644 Binary files a/public/images/pokemon/417.png and b/public/images/pokemon/417.png differ diff --git a/public/images/pokemon/418.png b/public/images/pokemon/418.png index fba2402c2b3..71e44be3fe5 100644 Binary files a/public/images/pokemon/418.png and b/public/images/pokemon/418.png differ diff --git a/public/images/pokemon/419.png b/public/images/pokemon/419.png index 5fbe90ff3bd..ce679569341 100644 Binary files a/public/images/pokemon/419.png and b/public/images/pokemon/419.png differ diff --git a/public/images/pokemon/4199.png b/public/images/pokemon/4199.png index 9c9f86e1f5d..3e52115df48 100644 Binary files a/public/images/pokemon/4199.png and b/public/images/pokemon/4199.png differ diff --git a/public/images/pokemon/420.png b/public/images/pokemon/420.png index 8cf4dfd0bfc..30706338425 100644 Binary files a/public/images/pokemon/420.png and b/public/images/pokemon/420.png differ diff --git a/public/images/pokemon/421-overcast.png b/public/images/pokemon/421-overcast.png index 82b66fd07f9..2d559909370 100644 Binary files a/public/images/pokemon/421-overcast.png and b/public/images/pokemon/421-overcast.png differ diff --git a/public/images/pokemon/421-sunshine.png b/public/images/pokemon/421-sunshine.png index 9da091ae12a..ba0590f35db 100644 Binary files a/public/images/pokemon/421-sunshine.png and b/public/images/pokemon/421-sunshine.png differ diff --git a/public/images/pokemon/424.png b/public/images/pokemon/424.png index c0bc59a0caa..a9a545549bf 100644 Binary files a/public/images/pokemon/424.png and b/public/images/pokemon/424.png differ diff --git a/public/images/pokemon/430.png b/public/images/pokemon/430.png index 5ed0fb19c20..af1b594446a 100644 Binary files a/public/images/pokemon/430.png and b/public/images/pokemon/430.png differ diff --git a/public/images/pokemon/431.png b/public/images/pokemon/431.png index e56ee99b0a2..10fb2dba57f 100644 Binary files a/public/images/pokemon/431.png and b/public/images/pokemon/431.png differ diff --git a/public/images/pokemon/436.png b/public/images/pokemon/436.png index 0308cb7303a..b1b1cf364bf 100644 Binary files a/public/images/pokemon/436.png and b/public/images/pokemon/436.png differ diff --git a/public/images/pokemon/446.png b/public/images/pokemon/446.png index 523d790a89c..40cfc447f9c 100644 Binary files a/public/images/pokemon/446.png and b/public/images/pokemon/446.png differ diff --git a/public/images/pokemon/45.png b/public/images/pokemon/45.png index 1c6f5a5a9f2..1a5ea734465 100644 Binary files a/public/images/pokemon/45.png and b/public/images/pokemon/45.png differ diff --git a/public/images/pokemon/451.png b/public/images/pokemon/451.png index 716e8a08041..3fd24102eca 100644 Binary files a/public/images/pokemon/451.png and b/public/images/pokemon/451.png differ diff --git a/public/images/pokemon/454.png b/public/images/pokemon/454.png index bf41f256575..39cef1051c8 100644 Binary files a/public/images/pokemon/454.png and b/public/images/pokemon/454.png differ diff --git a/public/images/pokemon/455.png b/public/images/pokemon/455.png index 731abfec4e6..f1f569d1770 100644 Binary files a/public/images/pokemon/455.png and b/public/images/pokemon/455.png differ diff --git a/public/images/pokemon/456.png b/public/images/pokemon/456.png index 501eb5904fe..1e2fd9d8e3e 100644 Binary files a/public/images/pokemon/456.png and b/public/images/pokemon/456.png differ diff --git a/public/images/pokemon/4562.png b/public/images/pokemon/4562.png index b08f724ab8b..58af7f0f9c4 100644 Binary files a/public/images/pokemon/4562.png and b/public/images/pokemon/4562.png differ diff --git a/public/images/pokemon/457.png b/public/images/pokemon/457.png index 07425b2a147..9bd67a133b0 100644 Binary files a/public/images/pokemon/457.png and b/public/images/pokemon/457.png differ diff --git a/public/images/pokemon/467.png b/public/images/pokemon/467.png index ec7039932d1..e3f8a04c925 100644 Binary files a/public/images/pokemon/467.png and b/public/images/pokemon/467.png differ diff --git a/public/images/pokemon/469.png b/public/images/pokemon/469.png index f9f9ea8af1a..8a4364e8e09 100644 Binary files a/public/images/pokemon/469.png and b/public/images/pokemon/469.png differ diff --git a/public/images/pokemon/47.png b/public/images/pokemon/47.png index 665cabf322e..af9eb1ceae5 100644 Binary files a/public/images/pokemon/47.png and b/public/images/pokemon/47.png differ diff --git a/public/images/pokemon/472.png b/public/images/pokemon/472.png index eefd055ffc3..bd05e476efc 100644 Binary files a/public/images/pokemon/472.png and b/public/images/pokemon/472.png differ diff --git a/public/images/pokemon/477.png b/public/images/pokemon/477.png index 1013ca3d0dd..0967dfc25af 100644 Binary files a/public/images/pokemon/477.png and b/public/images/pokemon/477.png differ diff --git a/public/images/pokemon/486.png b/public/images/pokemon/486.png index 328ed80c995..f660211ccfa 100644 Binary files a/public/images/pokemon/486.png and b/public/images/pokemon/486.png differ diff --git a/public/images/pokemon/493-fairy.png b/public/images/pokemon/493-fairy.png index 43fb67108c9..21e6fa27217 100644 Binary files a/public/images/pokemon/493-fairy.png and b/public/images/pokemon/493-fairy.png differ diff --git a/public/images/pokemon/498.png b/public/images/pokemon/498.png index f019a1f38b3..4c2dd7c90c3 100644 Binary files a/public/images/pokemon/498.png and b/public/images/pokemon/498.png differ diff --git a/public/images/pokemon/499.png b/public/images/pokemon/499.png index 8f2f76ca6bb..4e7daf578c0 100644 Binary files a/public/images/pokemon/499.png and b/public/images/pokemon/499.png differ diff --git a/public/images/pokemon/500.png b/public/images/pokemon/500.png index ae842c38bcd..f389f908404 100644 Binary files a/public/images/pokemon/500.png and b/public/images/pokemon/500.png differ diff --git a/public/images/pokemon/501.png b/public/images/pokemon/501.png index 79a012cadd5..947c5909390 100644 Binary files a/public/images/pokemon/501.png and b/public/images/pokemon/501.png differ diff --git a/public/images/pokemon/502.png b/public/images/pokemon/502.png index ef1291a2520..4baae914cd2 100644 Binary files a/public/images/pokemon/502.png and b/public/images/pokemon/502.png differ diff --git a/public/images/pokemon/503.png b/public/images/pokemon/503.png index 3571e64156c..df57fe4411e 100644 Binary files a/public/images/pokemon/503.png and b/public/images/pokemon/503.png differ diff --git a/public/images/pokemon/511.png b/public/images/pokemon/511.png index 77ba327fd12..16f8c973ab2 100644 Binary files a/public/images/pokemon/511.png and b/public/images/pokemon/511.png differ diff --git a/public/images/pokemon/512.png b/public/images/pokemon/512.png index 58870d253cb..3618f975a23 100644 Binary files a/public/images/pokemon/512.png and b/public/images/pokemon/512.png differ diff --git a/public/images/pokemon/513.png b/public/images/pokemon/513.png index 99f2fccc23e..26ffb98dee5 100644 Binary files a/public/images/pokemon/513.png and b/public/images/pokemon/513.png differ diff --git a/public/images/pokemon/514.png b/public/images/pokemon/514.png index 57216c76e08..b8b8d78e1b5 100644 Binary files a/public/images/pokemon/514.png and b/public/images/pokemon/514.png differ diff --git a/public/images/pokemon/515.png b/public/images/pokemon/515.png index e6187568544..e3dc6b67ab0 100644 Binary files a/public/images/pokemon/515.png and b/public/images/pokemon/515.png differ diff --git a/public/images/pokemon/516.png b/public/images/pokemon/516.png index cd4d5d64392..ec8d1bf66ee 100644 Binary files a/public/images/pokemon/516.png and b/public/images/pokemon/516.png differ diff --git a/public/images/pokemon/522.png b/public/images/pokemon/522.png index 64ca1253304..0b73b5d3588 100644 Binary files a/public/images/pokemon/522.png and b/public/images/pokemon/522.png differ diff --git a/public/images/pokemon/523.png b/public/images/pokemon/523.png index 3c491927a02..e294dfa64e0 100644 Binary files a/public/images/pokemon/523.png and b/public/images/pokemon/523.png differ diff --git a/public/images/pokemon/528.png b/public/images/pokemon/528.png index fd6e0c54a77..fa6d2598de7 100644 Binary files a/public/images/pokemon/528.png and b/public/images/pokemon/528.png differ diff --git a/public/images/pokemon/531-mega.png b/public/images/pokemon/531-mega.png index f08cc04b51c..9e8dfc31382 100644 Binary files a/public/images/pokemon/531-mega.png and b/public/images/pokemon/531-mega.png differ diff --git a/public/images/pokemon/535.png b/public/images/pokemon/535.png index b8a82d204c5..dbcdfc838c3 100644 Binary files a/public/images/pokemon/535.png and b/public/images/pokemon/535.png differ diff --git a/public/images/pokemon/536.png b/public/images/pokemon/536.png index 90202df0339..116ec31e70b 100644 Binary files a/public/images/pokemon/536.png and b/public/images/pokemon/536.png differ diff --git a/public/images/pokemon/537.png b/public/images/pokemon/537.png index 906b546cf42..cc23e678e24 100644 Binary files a/public/images/pokemon/537.png and b/public/images/pokemon/537.png differ diff --git a/public/images/pokemon/554.png b/public/images/pokemon/554.png index b0c4bb10335..e1aa8015870 100644 Binary files a/public/images/pokemon/554.png and b/public/images/pokemon/554.png differ diff --git a/public/images/pokemon/555-zen.png b/public/images/pokemon/555-zen.png index 48cbf58a17a..f08848d33ed 100644 Binary files a/public/images/pokemon/555-zen.png and b/public/images/pokemon/555-zen.png differ diff --git a/public/images/pokemon/555.png b/public/images/pokemon/555.png index 0ec02846a6a..804d809d9a5 100644 Binary files a/public/images/pokemon/555.png and b/public/images/pokemon/555.png differ diff --git a/public/images/pokemon/556.png b/public/images/pokemon/556.png index 2fa67c09d55..8d9d1a806bf 100644 Binary files a/public/images/pokemon/556.png and b/public/images/pokemon/556.png differ diff --git a/public/images/pokemon/563.png b/public/images/pokemon/563.png index 2834d54535e..0607caf76de 100644 Binary files a/public/images/pokemon/563.png and b/public/images/pokemon/563.png differ diff --git a/public/images/pokemon/566.png b/public/images/pokemon/566.png index e54a8680298..5e4f24b20e5 100644 Binary files a/public/images/pokemon/566.png and b/public/images/pokemon/566.png differ diff --git a/public/images/pokemon/569-gigantamax.png b/public/images/pokemon/569-gigantamax.png index d367d8d359d..c66158afc19 100644 Binary files a/public/images/pokemon/569-gigantamax.png and b/public/images/pokemon/569-gigantamax.png differ diff --git a/public/images/pokemon/572.png b/public/images/pokemon/572.png index 32f01341e2f..55bb302a719 100644 Binary files a/public/images/pokemon/572.png and b/public/images/pokemon/572.png differ diff --git a/public/images/pokemon/573.png b/public/images/pokemon/573.png index a33172fe8d3..f5d1e5d818c 100644 Binary files a/public/images/pokemon/573.png and b/public/images/pokemon/573.png differ diff --git a/public/images/pokemon/582.png b/public/images/pokemon/582.png index 306d04a01aa..be01508970d 100644 Binary files a/public/images/pokemon/582.png and b/public/images/pokemon/582.png differ diff --git a/public/images/pokemon/586-spring.png b/public/images/pokemon/586-spring.png index bf00ee5a0a1..d4c658861c1 100644 Binary files a/public/images/pokemon/586-spring.png and b/public/images/pokemon/586-spring.png differ diff --git a/public/images/pokemon/587.png b/public/images/pokemon/587.png index 6a870170219..8a71ff78740 100644 Binary files a/public/images/pokemon/587.png and b/public/images/pokemon/587.png differ diff --git a/public/images/pokemon/590.png b/public/images/pokemon/590.png index 0908b46cd83..6378be02fbd 100644 Binary files a/public/images/pokemon/590.png and b/public/images/pokemon/590.png differ diff --git a/public/images/pokemon/591.png b/public/images/pokemon/591.png index a294749149f..bb1f975b3b3 100644 Binary files a/public/images/pokemon/591.png and b/public/images/pokemon/591.png differ diff --git a/public/images/pokemon/60.png b/public/images/pokemon/60.png index 15328684bdf..cca592b8e6f 100644 Binary files a/public/images/pokemon/60.png and b/public/images/pokemon/60.png differ diff --git a/public/images/pokemon/616.png b/public/images/pokemon/616.png index aff43388faf..ba8a046dd09 100644 Binary files a/public/images/pokemon/616.png and b/public/images/pokemon/616.png differ diff --git a/public/images/pokemon/618.png b/public/images/pokemon/618.png index 9b2e3cae12d..5b5630f77d7 100644 Binary files a/public/images/pokemon/618.png and b/public/images/pokemon/618.png differ diff --git a/public/images/pokemon/62.png b/public/images/pokemon/62.png index bfbdf9ce733..0aae3668671 100644 Binary files a/public/images/pokemon/62.png and b/public/images/pokemon/62.png differ diff --git a/public/images/pokemon/626.png b/public/images/pokemon/626.png index 542cefe41bb..7ba9f680ded 100644 Binary files a/public/images/pokemon/626.png and b/public/images/pokemon/626.png differ diff --git a/public/images/pokemon/636.png b/public/images/pokemon/636.png index 24b296bcb9d..fd62637a03d 100644 Binary files a/public/images/pokemon/636.png and b/public/images/pokemon/636.png differ diff --git a/public/images/pokemon/643.png b/public/images/pokemon/643.png index 30d993791ab..7e991620a1d 100644 Binary files a/public/images/pokemon/643.png and b/public/images/pokemon/643.png differ diff --git a/public/images/pokemon/644.png b/public/images/pokemon/644.png index 14fce7e0bab..549caa67472 100644 Binary files a/public/images/pokemon/644.png and b/public/images/pokemon/644.png differ diff --git a/public/images/pokemon/646-black.png b/public/images/pokemon/646-black.png index f5ad11ddcac..0fcb0425e91 100644 Binary files a/public/images/pokemon/646-black.png and b/public/images/pokemon/646-black.png differ diff --git a/public/images/pokemon/646-white.png b/public/images/pokemon/646-white.png index 9907f8e278c..b49939d4a7e 100644 Binary files a/public/images/pokemon/646-white.png and b/public/images/pokemon/646-white.png differ diff --git a/public/images/pokemon/646.png b/public/images/pokemon/646.png index e54083bfc73..ba38bf66df2 100644 Binary files a/public/images/pokemon/646.png and b/public/images/pokemon/646.png differ diff --git a/public/images/pokemon/6503.png b/public/images/pokemon/6503.png index 71d6e27d855..711a774db5b 100644 Binary files a/public/images/pokemon/6503.png and b/public/images/pokemon/6503.png differ diff --git a/public/images/pokemon/656.png b/public/images/pokemon/656.png index 06a9cd58268..4921fd72efa 100644 Binary files a/public/images/pokemon/656.png and b/public/images/pokemon/656.png differ diff --git a/public/images/pokemon/657.png b/public/images/pokemon/657.png index 031c9404805..58ff0564e5d 100644 Binary files a/public/images/pokemon/657.png and b/public/images/pokemon/657.png differ diff --git a/public/images/pokemon/658-ash.png b/public/images/pokemon/658-ash.png index fa6ce5cb165..65a1d826f6f 100644 Binary files a/public/images/pokemon/658-ash.png and b/public/images/pokemon/658-ash.png differ diff --git a/public/images/pokemon/658.png b/public/images/pokemon/658.png index ed730c8b81c..5d84c2e13c5 100644 Binary files a/public/images/pokemon/658.png and b/public/images/pokemon/658.png differ diff --git a/public/images/pokemon/666-continental.png b/public/images/pokemon/666-continental.png index b45f5c4e76d..8a1a7a00e9c 100644 Binary files a/public/images/pokemon/666-continental.png and b/public/images/pokemon/666-continental.png differ diff --git a/public/images/pokemon/666-fancy.png b/public/images/pokemon/666-fancy.png index 9e40deb3568..227f9d09987 100644 Binary files a/public/images/pokemon/666-fancy.png and b/public/images/pokemon/666-fancy.png differ diff --git a/public/images/pokemon/666-high-plains.png b/public/images/pokemon/666-high-plains.png index 45cb22fc592..8cd360d11cf 100644 Binary files a/public/images/pokemon/666-high-plains.png and b/public/images/pokemon/666-high-plains.png differ diff --git a/public/images/pokemon/666-river.png b/public/images/pokemon/666-river.png index ca93fd612b7..64bf5ab54a6 100644 Binary files a/public/images/pokemon/666-river.png and b/public/images/pokemon/666-river.png differ diff --git a/public/images/pokemon/669-blue.png b/public/images/pokemon/669-blue.png index 85426c58d51..201f6762ec4 100644 Binary files a/public/images/pokemon/669-blue.png and b/public/images/pokemon/669-blue.png differ diff --git a/public/images/pokemon/669-orange.png b/public/images/pokemon/669-orange.png index 565301b795b..86c3b9f18bd 100644 Binary files a/public/images/pokemon/669-orange.png and b/public/images/pokemon/669-orange.png differ diff --git a/public/images/pokemon/669-red.png b/public/images/pokemon/669-red.png index b6219100729..668e28c833f 100644 Binary files a/public/images/pokemon/669-red.png and b/public/images/pokemon/669-red.png differ diff --git a/public/images/pokemon/669-white.png b/public/images/pokemon/669-white.png index a2809abf193..d93e95833c3 100644 Binary files a/public/images/pokemon/669-white.png and b/public/images/pokemon/669-white.png differ diff --git a/public/images/pokemon/669-yellow.png b/public/images/pokemon/669-yellow.png index c3ad0eff812..a2e96330fd2 100644 Binary files a/public/images/pokemon/669-yellow.png and b/public/images/pokemon/669-yellow.png differ diff --git a/public/images/pokemon/670-blue.png b/public/images/pokemon/670-blue.png index 4359006fe78..6a6a2bbb5b1 100644 Binary files a/public/images/pokemon/670-blue.png and b/public/images/pokemon/670-blue.png differ diff --git a/public/images/pokemon/670-orange.png b/public/images/pokemon/670-orange.png index d5c10c4c40b..459d71e6632 100644 Binary files a/public/images/pokemon/670-orange.png and b/public/images/pokemon/670-orange.png differ diff --git a/public/images/pokemon/670-red.png b/public/images/pokemon/670-red.png index 0ac18083828..271e823d327 100644 Binary files a/public/images/pokemon/670-red.png and b/public/images/pokemon/670-red.png differ diff --git a/public/images/pokemon/670-white.png b/public/images/pokemon/670-white.png index e8894d4f668..2a01d613241 100644 Binary files a/public/images/pokemon/670-white.png and b/public/images/pokemon/670-white.png differ diff --git a/public/images/pokemon/670-yellow.png b/public/images/pokemon/670-yellow.png index 4803acafcb5..78a31616fe7 100644 Binary files a/public/images/pokemon/670-yellow.png and b/public/images/pokemon/670-yellow.png differ diff --git a/public/images/pokemon/6706.png b/public/images/pokemon/6706.png index e967b550871..c9760f78d0c 100644 Binary files a/public/images/pokemon/6706.png and b/public/images/pokemon/6706.png differ diff --git a/public/images/pokemon/671-blue.png b/public/images/pokemon/671-blue.png index b384058bee9..b92ed63df06 100644 Binary files a/public/images/pokemon/671-blue.png and b/public/images/pokemon/671-blue.png differ diff --git a/public/images/pokemon/671-orange.png b/public/images/pokemon/671-orange.png index ac60adbcf10..10e7320acab 100644 Binary files a/public/images/pokemon/671-orange.png and b/public/images/pokemon/671-orange.png differ diff --git a/public/images/pokemon/671-red.png b/public/images/pokemon/671-red.png index 1b83ecf38ca..8aecb86e868 100644 Binary files a/public/images/pokemon/671-red.png and b/public/images/pokemon/671-red.png differ diff --git a/public/images/pokemon/671-white.png b/public/images/pokemon/671-white.png index 393970614d6..835920a6730 100644 Binary files a/public/images/pokemon/671-white.png and b/public/images/pokemon/671-white.png differ diff --git a/public/images/pokemon/671-yellow.png b/public/images/pokemon/671-yellow.png index 2af1b4aa543..5dd289d7b33 100644 Binary files a/public/images/pokemon/671-yellow.png and b/public/images/pokemon/671-yellow.png differ diff --git a/public/images/pokemon/672.json b/public/images/pokemon/672.json index eabec185e7a..f337bef7d29 100644 --- a/public/images/pokemon/672.json +++ b/public/images/pokemon/672.json @@ -1,41 +1,479 @@ -{ - "textures": [ - { - "image": "672.png", - "format": "RGBA8888", - "size": { - "w": 50, - "h": 50 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 42, - "h": 50 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 42, - "h": 50 - }, - "frame": { - "x": 0, - "y": 0, - "w": 42, - "h": 50 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a5389856891adb93e4e47b311ec032fc:ff2b44df2ba78f8e713e7ecfbd8a40e8:2e4767b7cd134fc0ab1bb6e9eee82bc7$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 42, "y": 100, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 83, "y": 101, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.11-x64", + "image": "672.png", + "format": "I8", + "size": { "w": 170, "h": 193 }, + "scale": "1" + } } diff --git a/public/images/pokemon/672.png b/public/images/pokemon/672.png index 2fdd68acd32..ff319db5822 100644 Binary files a/public/images/pokemon/672.png and b/public/images/pokemon/672.png differ diff --git a/public/images/pokemon/674.png b/public/images/pokemon/674.png index 85b2fafb91b..8f9094d6940 100644 Binary files a/public/images/pokemon/674.png and b/public/images/pokemon/674.png differ diff --git a/public/images/pokemon/676-dandy.png b/public/images/pokemon/676-dandy.png index 54e36574b2a..4d29f3df409 100644 Binary files a/public/images/pokemon/676-dandy.png and b/public/images/pokemon/676-dandy.png differ diff --git a/public/images/pokemon/676-debutante.png b/public/images/pokemon/676-debutante.png index 30d5bcafec5..b0f8355969d 100644 Binary files a/public/images/pokemon/676-debutante.png and b/public/images/pokemon/676-debutante.png differ diff --git a/public/images/pokemon/676-diamond.png b/public/images/pokemon/676-diamond.png index 953581d7bb7..e677d620b64 100644 Binary files a/public/images/pokemon/676-diamond.png and b/public/images/pokemon/676-diamond.png differ diff --git a/public/images/pokemon/676-heart.png b/public/images/pokemon/676-heart.png index 9e6950cc36c..6bd67f03dc1 100644 Binary files a/public/images/pokemon/676-heart.png and b/public/images/pokemon/676-heart.png differ diff --git a/public/images/pokemon/676-kabuki.png b/public/images/pokemon/676-kabuki.png index 0d7323a520c..16f1f243d69 100644 Binary files a/public/images/pokemon/676-kabuki.png and b/public/images/pokemon/676-kabuki.png differ diff --git a/public/images/pokemon/676-la-reine.png b/public/images/pokemon/676-la-reine.png index c2f0eb72d75..af02d93253d 100644 Binary files a/public/images/pokemon/676-la-reine.png and b/public/images/pokemon/676-la-reine.png differ diff --git a/public/images/pokemon/676-matron.png b/public/images/pokemon/676-matron.png index 1f93b11a277..5ac63fc58d6 100644 Binary files a/public/images/pokemon/676-matron.png and b/public/images/pokemon/676-matron.png differ diff --git a/public/images/pokemon/676-pharaoh.png b/public/images/pokemon/676-pharaoh.png index e0f48c46bab..77c57b25804 100644 Binary files a/public/images/pokemon/676-pharaoh.png and b/public/images/pokemon/676-pharaoh.png differ diff --git a/public/images/pokemon/676-star.png b/public/images/pokemon/676-star.png index 566aa713aee..739986983a6 100644 Binary files a/public/images/pokemon/676-star.png and b/public/images/pokemon/676-star.png differ diff --git a/public/images/pokemon/677.png b/public/images/pokemon/677.png index 3a5d6833ced..0c5d2eb028e 100644 Binary files a/public/images/pokemon/677.png and b/public/images/pokemon/677.png differ diff --git a/public/images/pokemon/678-female.png b/public/images/pokemon/678-female.png index 087c5301dd0..b47690299f4 100644 Binary files a/public/images/pokemon/678-female.png and b/public/images/pokemon/678-female.png differ diff --git a/public/images/pokemon/678.png b/public/images/pokemon/678.png index e4a1f8854fb..157f690f67e 100644 Binary files a/public/images/pokemon/678.png and b/public/images/pokemon/678.png differ diff --git a/public/images/pokemon/682.png b/public/images/pokemon/682.png index 2a83ceedaa9..b80dd7b4a72 100644 Binary files a/public/images/pokemon/682.png and b/public/images/pokemon/682.png differ diff --git a/public/images/pokemon/683.png b/public/images/pokemon/683.png index 1b16b038c51..1d9b3e1a376 100644 Binary files a/public/images/pokemon/683.png and b/public/images/pokemon/683.png differ diff --git a/public/images/pokemon/684.png b/public/images/pokemon/684.png index a3f7e544f89..9230181894b 100644 Binary files a/public/images/pokemon/684.png and b/public/images/pokemon/684.png differ diff --git a/public/images/pokemon/685.png b/public/images/pokemon/685.png index 957cd5d815b..e406e2762d3 100644 Binary files a/public/images/pokemon/685.png and b/public/images/pokemon/685.png differ diff --git a/public/images/pokemon/688.png b/public/images/pokemon/688.png index 2e65d4beb6f..4dfc49cf319 100644 Binary files a/public/images/pokemon/688.png and b/public/images/pokemon/688.png differ diff --git a/public/images/pokemon/689.png b/public/images/pokemon/689.png index 1ec1bcec98a..10fb9ea7f7b 100644 Binary files a/public/images/pokemon/689.png and b/public/images/pokemon/689.png differ diff --git a/public/images/pokemon/692.json b/public/images/pokemon/692.json index 125642a01f1..86b535260ae 100644 --- a/public/images/pokemon/692.json +++ b/public/images/pokemon/692.json @@ -7,6 +7,780 @@ "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, "sourceSize": { "w": 63, "h": 35 }, "duration": 50 + }, + { + "filename": "0002.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0003.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0004.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0005.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0006.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0007.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0008.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0009.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0010.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0011.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0012.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0013.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0014.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0015.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0016.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0017.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0018.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0019.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0020.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0021.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0022.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0023.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0024.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0025.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0026.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0027.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0028.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0029.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0030.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0031.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0032.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0033.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0034.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0035.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0036.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0037.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0038.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0039.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0040.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0041.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0042.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0043.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0044.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0045.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0046.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0047.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0048.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0049.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0050.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0051.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0052.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0053.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0054.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0055.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0056.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0057.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0058.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0059.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0060.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0061.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0062.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0063.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0064.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0065.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0066.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0067.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0068.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0069.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0070.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0071.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0072.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0073.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0074.png", + "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0075.png", + "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0076.png", + "frame": { "x": 117, "y": 72, "w": 59, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 59, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0077.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0078.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0079.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0080.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0081.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0082.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0084.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0085.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0086.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0087.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 } ], "meta": { diff --git a/public/images/pokemon/692.png b/public/images/pokemon/692.png index a22655931a8..daa9db0a203 100644 Binary files a/public/images/pokemon/692.png and b/public/images/pokemon/692.png differ diff --git a/public/images/pokemon/693.json b/public/images/pokemon/693.json index 5e35ec822d2..c8f7763de1d 100644 --- a/public/images/pokemon/693.json +++ b/public/images/pokemon/693.json @@ -1,41 +1,902 @@ -{ - "textures": [ - { - "image": "693.png", - "format": "RGBA8888", - "size": { - "w": 87, - "h": 87 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 87, - "h": 78 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 87, - "h": 78 - }, - "frame": { - "x": 0, - "y": 0, - "w": 87, - "h": 78 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:56529e9f35f7fe73552976d184900c50:cf9846d335c4b48dea98b7f53c4caa05:9c1f9147e693c05eb4655590e9099679$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0073.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0074.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0075.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0076.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0077.png", + "frame": { "x": 303, "y": 140, "w": 102, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 102, "h": 70 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0078.png", + "frame": { "x": 523, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 11, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0079.png", + "frame": { "x": 318, "y": 290, "w": 103, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 7, "w": 103, "h": 64 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0080.png", + "frame": { "x": 105, "y": 1, "w": 102, "h": 75 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 0, "w": 102, "h": 75 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0081.png", + "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0082.png", + "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0084.png", + "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0085.png", + "frame": { "x": 508, "y": 152, "w": 106, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 15, "w": 106, "h": 67 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0086.png", + "frame": { "x": 414, "y": 74, "w": 103, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 103, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0087.png", + "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0088.png", + "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0089.png", + "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0090.png", + "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0091.png", + "frame": { "x": 309, "y": 214, "w": 107, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 14, "w": 107, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0092.png", + "frame": { "x": 306, "y": 1, "w": 106, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 9, "w": 106, "h": 70 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0093.png", + "frame": { "x": 1, "y": 218, "w": 107, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 14, "w": 107, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0094.png", + "frame": { "x": 213, "y": 279, "w": 105, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 14, "w": 105, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0095.png", + "frame": { "x": 103, "y": 341, "w": 104, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 15, "w": 104, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0096.png", + "frame": { "x": 516, "y": 1, "w": 101, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 101, "h": 73 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0097.png", + "frame": { "x": 100, "y": 149, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0098.png", + "frame": { "x": 1, "y": 349, "w": 102, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 16, "w": 102, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0099.png", + "frame": { "x": 103, "y": 404, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 16, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.12-x64", + "image": "693.png", + "format": "I8", + "size": { "w": 626, "h": 466 }, + "scale": "1" + } } diff --git a/public/images/pokemon/693.png b/public/images/pokemon/693.png index 848c881311a..28f3bd88282 100644 Binary files a/public/images/pokemon/693.png and b/public/images/pokemon/693.png differ diff --git a/public/images/pokemon/694.png b/public/images/pokemon/694.png index fbd210e7d89..6dc5093a94f 100644 Binary files a/public/images/pokemon/694.png and b/public/images/pokemon/694.png differ diff --git a/public/images/pokemon/696.png b/public/images/pokemon/696.png index 8d6b387b4fd..fff2b820aad 100644 Binary files a/public/images/pokemon/696.png and b/public/images/pokemon/696.png differ diff --git a/public/images/pokemon/697.png b/public/images/pokemon/697.png index 6a9b70d8ac7..acab8bd3339 100644 Binary files a/public/images/pokemon/697.png and b/public/images/pokemon/697.png differ diff --git a/public/images/pokemon/698.png b/public/images/pokemon/698.png index d9e638561d1..9e8caed54be 100644 Binary files a/public/images/pokemon/698.png and b/public/images/pokemon/698.png differ diff --git a/public/images/pokemon/699.png b/public/images/pokemon/699.png index 2d5320b71a2..b52623bc39c 100644 Binary files a/public/images/pokemon/699.png and b/public/images/pokemon/699.png differ diff --git a/public/images/pokemon/702.png b/public/images/pokemon/702.png index 4e0eccee204..8315789f515 100644 Binary files a/public/images/pokemon/702.png and b/public/images/pokemon/702.png differ diff --git a/public/images/pokemon/703.png b/public/images/pokemon/703.png index ea231fc6c09..83c9cafa0c0 100644 Binary files a/public/images/pokemon/703.png and b/public/images/pokemon/703.png differ diff --git a/public/images/pokemon/707.png b/public/images/pokemon/707.png index 899ab995926..8d354862907 100644 Binary files a/public/images/pokemon/707.png and b/public/images/pokemon/707.png differ diff --git a/public/images/pokemon/708.png b/public/images/pokemon/708.png index 0b612280028..c1fe8a753df 100644 Binary files a/public/images/pokemon/708.png and b/public/images/pokemon/708.png differ diff --git a/public/images/pokemon/714.png b/public/images/pokemon/714.png index 4572eada3f3..12b23334ce1 100644 Binary files a/public/images/pokemon/714.png and b/public/images/pokemon/714.png differ diff --git a/public/images/pokemon/715.png b/public/images/pokemon/715.png index 08d9c985776..b858a8572c0 100644 Binary files a/public/images/pokemon/715.png and b/public/images/pokemon/715.png differ diff --git a/public/images/pokemon/716-active.png b/public/images/pokemon/716-active.png index 55ad63f4d3d..fb80470b354 100644 Binary files a/public/images/pokemon/716-active.png and b/public/images/pokemon/716-active.png differ diff --git a/public/images/pokemon/716-neutral.png b/public/images/pokemon/716-neutral.png index 8390dddffdc..615878c96d0 100644 Binary files a/public/images/pokemon/716-neutral.png and b/public/images/pokemon/716-neutral.png differ diff --git a/public/images/pokemon/718-10.png b/public/images/pokemon/718-10.png index 4d15f78dd83..f830a9dddc2 100644 Binary files a/public/images/pokemon/718-10.png and b/public/images/pokemon/718-10.png differ diff --git a/public/images/pokemon/718.png b/public/images/pokemon/718.png index 07319fd6de0..7dcfb43770d 100644 Binary files a/public/images/pokemon/718.png and b/public/images/pokemon/718.png differ diff --git a/public/images/pokemon/719.png b/public/images/pokemon/719.png index 536e999a3d6..7410e120f56 100644 Binary files a/public/images/pokemon/719.png and b/public/images/pokemon/719.png differ diff --git a/public/images/pokemon/728.png b/public/images/pokemon/728.png index 4c7f3f94f27..f765f9c5254 100644 Binary files a/public/images/pokemon/728.png and b/public/images/pokemon/728.png differ diff --git a/public/images/pokemon/730.png b/public/images/pokemon/730.png index 92090460124..41a59ce4f16 100644 Binary files a/public/images/pokemon/730.png and b/public/images/pokemon/730.png differ diff --git a/public/images/pokemon/746-school.png b/public/images/pokemon/746-school.png index c592b71a66a..5bb93d9ee89 100644 Binary files a/public/images/pokemon/746-school.png and b/public/images/pokemon/746-school.png differ diff --git a/public/images/pokemon/746.png b/public/images/pokemon/746.png index 3de01770ee6..71fceb3debc 100644 Binary files a/public/images/pokemon/746.png and b/public/images/pokemon/746.png differ diff --git a/public/images/pokemon/749.png b/public/images/pokemon/749.png index 28c2f5ce4e3..37163bde3ed 100644 Binary files a/public/images/pokemon/749.png and b/public/images/pokemon/749.png differ diff --git a/public/images/pokemon/750.png b/public/images/pokemon/750.png index f0ca7b407dd..b38dbab89e1 100644 Binary files a/public/images/pokemon/750.png and b/public/images/pokemon/750.png differ diff --git a/public/images/pokemon/753.json b/public/images/pokemon/753.json index 95341485d9c..a1056b119b2 100644 --- a/public/images/pokemon/753.json +++ b/public/images/pokemon/753.json @@ -4,30 +4,2571 @@ "image": "753.png", "format": "RGBA8888", "size": { - "w": 45, - "h": 45 + "w": 137, + "h": 137 }, "scale": 1, "frames": [ { "filename": "0001.png", "rotated": false, - "trimmed": false, + "trimmed": true, "sourceSize": { - "w": 28, - "h": 45 + "w": 30, + "h": 52 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 28, - "h": 45 + "y": 5, + "w": 30, + "h": 47 }, "frame": { "x": 0, "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0101.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0120.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0121.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0122.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 92, + "w": 30, + "h": 45 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 92, + "w": 30, + "h": 45 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 } } ] @@ -36,6 +2577,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:baa756b85b9e29dd287f11359ba84c8e:e7faac2fce21b45c820722ab57c0565d:16c1874bc814253ca78e52a99a340ff7$" + "smartupdate": "$TexturePacker:SmartUpdate:2ba4d00a53c1e7152a0bd73555d70dba:5086780147a4891c997ba1592c9a1508:16c1874bc814253ca78e52a99a340ff7$" } } diff --git a/public/images/pokemon/753.png b/public/images/pokemon/753.png index 3357ef01264..21a16f7861c 100644 Binary files a/public/images/pokemon/753.png and b/public/images/pokemon/753.png differ diff --git a/public/images/pokemon/754.json b/public/images/pokemon/754.json index 4dcfc088066..64490baa49f 100644 --- a/public/images/pokemon/754.json +++ b/public/images/pokemon/754.json @@ -4,29 +4,1121 @@ "image": "754.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 234, + "h": 234 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0036.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 46, + "w": 93, "h": 68 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 46, + "w": 93, "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 46, + "w": 93, + "h": 68 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 93, + "h": 68 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 93, + "h": 68 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 68, + "w": 93, + "h": 68 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 85, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 85, + "h": 68 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 85, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 85, + "h": 68 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 181, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 181, + "y": 136, + "w": 48, "h": 68 } } @@ -36,6 +1128,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ceddf112e2007d3f4cfd18be932f4bea:d91e84a313a44dd4f7c06626c59dc5d6:f7cb0e9bb3adbe899317e6e2e306035d$" + "smartupdate": "$TexturePacker:SmartUpdate:f79fcee4451cea6aad915f561b31bf78:95fdb55190edb6ce0d5847a4e46b4d5c:f7cb0e9bb3adbe899317e6e2e306035d$" } } diff --git a/public/images/pokemon/754.png b/public/images/pokemon/754.png index 975490eb6a4..f6410e02a11 100644 Binary files a/public/images/pokemon/754.png and b/public/images/pokemon/754.png differ diff --git a/public/images/pokemon/772.png b/public/images/pokemon/772.png index 129e12d1e4c..cd21e8c682e 100644 Binary files a/public/images/pokemon/772.png and b/public/images/pokemon/772.png differ diff --git a/public/images/pokemon/773-bug.png b/public/images/pokemon/773-bug.png index 8a2fba0585f..1ec3171fe7a 100644 Binary files a/public/images/pokemon/773-bug.png and b/public/images/pokemon/773-bug.png differ diff --git a/public/images/pokemon/773-dark.png b/public/images/pokemon/773-dark.png index 3580d6c5f43..54ec6567e60 100644 Binary files a/public/images/pokemon/773-dark.png and b/public/images/pokemon/773-dark.png differ diff --git a/public/images/pokemon/773-dragon.png b/public/images/pokemon/773-dragon.png index f27c696b33b..01f9c717678 100644 Binary files a/public/images/pokemon/773-dragon.png and b/public/images/pokemon/773-dragon.png differ diff --git a/public/images/pokemon/773-electric.png b/public/images/pokemon/773-electric.png index cd8ec8ee74f..6d3323d8f45 100644 Binary files a/public/images/pokemon/773-electric.png and b/public/images/pokemon/773-electric.png differ diff --git a/public/images/pokemon/773-fairy.png b/public/images/pokemon/773-fairy.png index 54a59751c87..4d093de1a05 100644 Binary files a/public/images/pokemon/773-fairy.png and b/public/images/pokemon/773-fairy.png differ diff --git a/public/images/pokemon/773-fighting.png b/public/images/pokemon/773-fighting.png index 2ee950f4bb7..59bff2fa14d 100644 Binary files a/public/images/pokemon/773-fighting.png and b/public/images/pokemon/773-fighting.png differ diff --git a/public/images/pokemon/773-fire.png b/public/images/pokemon/773-fire.png index dd58ec8a3f0..3e58d630366 100644 Binary files a/public/images/pokemon/773-fire.png and b/public/images/pokemon/773-fire.png differ diff --git a/public/images/pokemon/773-flying.png b/public/images/pokemon/773-flying.png index f28eddafb92..44db04e6959 100644 Binary files a/public/images/pokemon/773-flying.png and b/public/images/pokemon/773-flying.png differ diff --git a/public/images/pokemon/773-ghost.png b/public/images/pokemon/773-ghost.png index 2634a92b49e..5d343d3cf0c 100644 Binary files a/public/images/pokemon/773-ghost.png and b/public/images/pokemon/773-ghost.png differ diff --git a/public/images/pokemon/773-grass.png b/public/images/pokemon/773-grass.png index 159f2d2faef..763f2b62385 100644 Binary files a/public/images/pokemon/773-grass.png and b/public/images/pokemon/773-grass.png differ diff --git a/public/images/pokemon/773-ground.png b/public/images/pokemon/773-ground.png index a55d0932ad7..3eb14ea513c 100644 Binary files a/public/images/pokemon/773-ground.png and b/public/images/pokemon/773-ground.png differ diff --git a/public/images/pokemon/773-ice.png b/public/images/pokemon/773-ice.png index 8c0c173b1c3..633a094f5d0 100644 Binary files a/public/images/pokemon/773-ice.png and b/public/images/pokemon/773-ice.png differ diff --git a/public/images/pokemon/773-poison.png b/public/images/pokemon/773-poison.png index 6491f0d471e..2d3a3d4c03b 100644 Binary files a/public/images/pokemon/773-poison.png and b/public/images/pokemon/773-poison.png differ diff --git a/public/images/pokemon/773-psychic.png b/public/images/pokemon/773-psychic.png index cdcfab97ba8..3c5ff9339d6 100644 Binary files a/public/images/pokemon/773-psychic.png and b/public/images/pokemon/773-psychic.png differ diff --git a/public/images/pokemon/773-rock.png b/public/images/pokemon/773-rock.png index e59849cda82..25161c3df36 100644 Binary files a/public/images/pokemon/773-rock.png and b/public/images/pokemon/773-rock.png differ diff --git a/public/images/pokemon/773-steel.png b/public/images/pokemon/773-steel.png index 75f940fe96b..ad50698714a 100644 Binary files a/public/images/pokemon/773-steel.png and b/public/images/pokemon/773-steel.png differ diff --git a/public/images/pokemon/773-water.png b/public/images/pokemon/773-water.png index 1f126cfb55c..36c76e23f36 100644 Binary files a/public/images/pokemon/773-water.png and b/public/images/pokemon/773-water.png differ diff --git a/public/images/pokemon/773.png b/public/images/pokemon/773.png index da3752b27a4..b8c8d32677b 100644 Binary files a/public/images/pokemon/773.png and b/public/images/pokemon/773.png differ diff --git a/public/images/pokemon/774-blue-meteor.png b/public/images/pokemon/774-blue-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-blue-meteor.png and b/public/images/pokemon/774-blue-meteor.png differ diff --git a/public/images/pokemon/774-blue.png b/public/images/pokemon/774-blue.png index 56404ee1a15..f84205c39a4 100644 Binary files a/public/images/pokemon/774-blue.png and b/public/images/pokemon/774-blue.png differ diff --git a/public/images/pokemon/774-green-meteor.png b/public/images/pokemon/774-green-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-green-meteor.png and b/public/images/pokemon/774-green-meteor.png differ diff --git a/public/images/pokemon/774-green.png b/public/images/pokemon/774-green.png index 6a7a608407e..fa0f190dfaf 100644 Binary files a/public/images/pokemon/774-green.png and b/public/images/pokemon/774-green.png differ diff --git a/public/images/pokemon/774-indigo-meteor.png b/public/images/pokemon/774-indigo-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-indigo-meteor.png and b/public/images/pokemon/774-indigo-meteor.png differ diff --git a/public/images/pokemon/774-indigo.png b/public/images/pokemon/774-indigo.png index a214eaace27..9da8bd79f9a 100644 Binary files a/public/images/pokemon/774-indigo.png and b/public/images/pokemon/774-indigo.png differ diff --git a/public/images/pokemon/774-orange-meteor.png b/public/images/pokemon/774-orange-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-orange-meteor.png and b/public/images/pokemon/774-orange-meteor.png differ diff --git a/public/images/pokemon/774-orange.png b/public/images/pokemon/774-orange.png index 4f0333a772b..c4e9e21b578 100644 Binary files a/public/images/pokemon/774-orange.png and b/public/images/pokemon/774-orange.png differ diff --git a/public/images/pokemon/774-red-meteor.png b/public/images/pokemon/774-red-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-red-meteor.png and b/public/images/pokemon/774-red-meteor.png differ diff --git a/public/images/pokemon/774-red.png b/public/images/pokemon/774-red.png index 72bc071a8cd..735398af8b9 100644 Binary files a/public/images/pokemon/774-red.png and b/public/images/pokemon/774-red.png differ diff --git a/public/images/pokemon/774-violet-meteor.png b/public/images/pokemon/774-violet-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-violet-meteor.png and b/public/images/pokemon/774-violet-meteor.png differ diff --git a/public/images/pokemon/774-violet.png b/public/images/pokemon/774-violet.png index 1bc41fa06fd..99db8df7560 100644 Binary files a/public/images/pokemon/774-violet.png and b/public/images/pokemon/774-violet.png differ diff --git a/public/images/pokemon/774-yellow-meteor.png b/public/images/pokemon/774-yellow-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774-yellow-meteor.png and b/public/images/pokemon/774-yellow-meteor.png differ diff --git a/public/images/pokemon/774-yellow.png b/public/images/pokemon/774-yellow.png index 98096ea9751..ab8ef17ebd3 100644 Binary files a/public/images/pokemon/774-yellow.png and b/public/images/pokemon/774-yellow.png differ diff --git a/public/images/pokemon/774.png b/public/images/pokemon/774.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/774.png and b/public/images/pokemon/774.png differ diff --git a/public/images/pokemon/777.png b/public/images/pokemon/777.png index bf1779d0f10..69046d030c8 100644 Binary files a/public/images/pokemon/777.png and b/public/images/pokemon/777.png differ diff --git a/public/images/pokemon/778-busted.png b/public/images/pokemon/778-busted.png index dbc478381cd..1ad7b167ada 100644 Binary files a/public/images/pokemon/778-busted.png and b/public/images/pokemon/778-busted.png differ diff --git a/public/images/pokemon/778-disguised.png b/public/images/pokemon/778-disguised.png index b048cf02233..1c1550492e1 100644 Binary files a/public/images/pokemon/778-disguised.png and b/public/images/pokemon/778-disguised.png differ diff --git a/public/images/pokemon/782.png b/public/images/pokemon/782.png index 093d0189535..9d01ae9ce1f 100644 Binary files a/public/images/pokemon/782.png and b/public/images/pokemon/782.png differ diff --git a/public/images/pokemon/783.png b/public/images/pokemon/783.png index 9396392b588..09f8016dc70 100644 Binary files a/public/images/pokemon/783.png and b/public/images/pokemon/783.png differ diff --git a/public/images/pokemon/784.png b/public/images/pokemon/784.png index 6d37807b8a0..d1764ccb16f 100644 Binary files a/public/images/pokemon/784.png and b/public/images/pokemon/784.png differ diff --git a/public/images/pokemon/80-mega.png b/public/images/pokemon/80-mega.png index 6f7e9f0d962..59f404d7b7f 100644 Binary files a/public/images/pokemon/80-mega.png and b/public/images/pokemon/80-mega.png differ diff --git a/public/images/pokemon/80.png b/public/images/pokemon/80.png index bcea1acb9b7..4bd58a44f70 100644 Binary files a/public/images/pokemon/80.png and b/public/images/pokemon/80.png differ diff --git a/public/images/pokemon/802-zenith.png b/public/images/pokemon/802-zenith.png index 17d2831a50c..c029cc21b60 100644 Binary files a/public/images/pokemon/802-zenith.png and b/public/images/pokemon/802-zenith.png differ diff --git a/public/images/pokemon/818-gigantamax.png b/public/images/pokemon/818-gigantamax.png index c19add87a4f..4769157ddbe 100644 Binary files a/public/images/pokemon/818-gigantamax.png and b/public/images/pokemon/818-gigantamax.png differ diff --git a/public/images/pokemon/822.png b/public/images/pokemon/822.png index c61ee4cba9f..20481aa524c 100644 Binary files a/public/images/pokemon/822.png and b/public/images/pokemon/822.png differ diff --git a/public/images/pokemon/840.png b/public/images/pokemon/840.png index 1a263e3ee19..b3c65738b4d 100644 Binary files a/public/images/pokemon/840.png and b/public/images/pokemon/840.png differ diff --git a/public/images/pokemon/841-gigantamax.png b/public/images/pokemon/841-gigantamax.png index 07121b9c12f..58bc9277283 100644 Binary files a/public/images/pokemon/841-gigantamax.png and b/public/images/pokemon/841-gigantamax.png differ diff --git a/public/images/pokemon/841.png b/public/images/pokemon/841.png index e7329f2eb97..a2f58bb6633 100644 Binary files a/public/images/pokemon/841.png and b/public/images/pokemon/841.png differ diff --git a/public/images/pokemon/842-gigantamax.png b/public/images/pokemon/842-gigantamax.png index aee95b7b881..8d28c3b36a1 100644 Binary files a/public/images/pokemon/842-gigantamax.png and b/public/images/pokemon/842-gigantamax.png differ diff --git a/public/images/pokemon/842.png b/public/images/pokemon/842.png index ba1f379370c..9d20574a23e 100644 Binary files a/public/images/pokemon/842.png and b/public/images/pokemon/842.png differ diff --git a/public/images/pokemon/862.png b/public/images/pokemon/862.png index 3d82d7ef07a..7eddf2987da 100644 Binary files a/public/images/pokemon/862.png and b/public/images/pokemon/862.png differ diff --git a/public/images/pokemon/867.png b/public/images/pokemon/867.png index 2fe8856d74d..9965f3ce59a 100644 Binary files a/public/images/pokemon/867.png and b/public/images/pokemon/867.png differ diff --git a/public/images/pokemon/869-caramel-swirl.png b/public/images/pokemon/869-caramel-swirl.png index c6bf967942f..d26235fa4cd 100644 Binary files a/public/images/pokemon/869-caramel-swirl.png and b/public/images/pokemon/869-caramel-swirl.png differ diff --git a/public/images/pokemon/869-lemon-cream.png b/public/images/pokemon/869-lemon-cream.png index 88e238ece14..92a98055a57 100644 Binary files a/public/images/pokemon/869-lemon-cream.png and b/public/images/pokemon/869-lemon-cream.png differ diff --git a/public/images/pokemon/869-matcha-cream.png b/public/images/pokemon/869-matcha-cream.png index 5e282236ceb..bb98281a74c 100644 Binary files a/public/images/pokemon/869-matcha-cream.png and b/public/images/pokemon/869-matcha-cream.png differ diff --git a/public/images/pokemon/869-mint-cream.png b/public/images/pokemon/869-mint-cream.png index d67741eaa57..209c6aa29d4 100644 Binary files a/public/images/pokemon/869-mint-cream.png and b/public/images/pokemon/869-mint-cream.png differ diff --git a/public/images/pokemon/869-rainbow-swirl.png b/public/images/pokemon/869-rainbow-swirl.png index 2e75b933316..fdfc7397fbe 100644 Binary files a/public/images/pokemon/869-rainbow-swirl.png and b/public/images/pokemon/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/869-ruby-cream.png b/public/images/pokemon/869-ruby-cream.png index c699e109e08..2f4ea9c48f6 100644 Binary files a/public/images/pokemon/869-ruby-cream.png and b/public/images/pokemon/869-ruby-cream.png differ diff --git a/public/images/pokemon/869-ruby-swirl.png b/public/images/pokemon/869-ruby-swirl.png index 3ce92c3e363..9eeb2cb22c9 100644 Binary files a/public/images/pokemon/869-ruby-swirl.png and b/public/images/pokemon/869-ruby-swirl.png differ diff --git a/public/images/pokemon/869-salted-cream.png b/public/images/pokemon/869-salted-cream.png index d8f495476fe..89ab8ed77af 100644 Binary files a/public/images/pokemon/869-salted-cream.png and b/public/images/pokemon/869-salted-cream.png differ diff --git a/public/images/pokemon/871.png b/public/images/pokemon/871.png index af53b0275e6..cbe0cc1b45d 100644 Binary files a/public/images/pokemon/871.png and b/public/images/pokemon/871.png differ diff --git a/public/images/pokemon/876-female.png b/public/images/pokemon/876-female.png index 3294cfc5b21..94b504b91a6 100644 Binary files a/public/images/pokemon/876-female.png and b/public/images/pokemon/876-female.png differ diff --git a/public/images/pokemon/876.png b/public/images/pokemon/876.png index ae5a23d3d94..1680b19e3c4 100644 Binary files a/public/images/pokemon/876.png and b/public/images/pokemon/876.png differ diff --git a/public/images/pokemon/881.png b/public/images/pokemon/881.png index 321e2962b8b..9eab664addb 100644 Binary files a/public/images/pokemon/881.png and b/public/images/pokemon/881.png differ diff --git a/public/images/pokemon/890-eternamax.png b/public/images/pokemon/890-eternamax.png index 33c8f5f9631..ed70122162e 100644 Binary files a/public/images/pokemon/890-eternamax.png and b/public/images/pokemon/890-eternamax.png differ diff --git a/public/images/pokemon/892-gigantamax-rapid.png b/public/images/pokemon/892-gigantamax-rapid.png index 99d50a3f6fb..87d44713e64 100644 Binary files a/public/images/pokemon/892-gigantamax-rapid.png and b/public/images/pokemon/892-gigantamax-rapid.png differ diff --git a/public/images/pokemon/892-rapid-strike.png b/public/images/pokemon/892-rapid-strike.png index 4f7a352bcd7..bf91145843e 100644 Binary files a/public/images/pokemon/892-rapid-strike.png and b/public/images/pokemon/892-rapid-strike.png differ diff --git a/public/images/pokemon/894.png b/public/images/pokemon/894.png index 5f5b0535e8a..f52fdb5c5a8 100644 Binary files a/public/images/pokemon/894.png and b/public/images/pokemon/894.png differ diff --git a/public/images/pokemon/896.png b/public/images/pokemon/896.png index 8157c737363..73d8a741b37 100644 Binary files a/public/images/pokemon/896.png and b/public/images/pokemon/896.png differ diff --git a/public/images/pokemon/898-ice.png b/public/images/pokemon/898-ice.png index ebbe798f696..8020ba4588b 100644 Binary files a/public/images/pokemon/898-ice.png and b/public/images/pokemon/898-ice.png differ diff --git a/public/images/pokemon/898-shadow.png b/public/images/pokemon/898-shadow.png index cf6e79c1794..6d098dd98cd 100644 Binary files a/public/images/pokemon/898-shadow.png and b/public/images/pokemon/898-shadow.png differ diff --git a/public/images/pokemon/898.png b/public/images/pokemon/898.png index 6966777e821..5e1ff936d11 100644 Binary files a/public/images/pokemon/898.png and b/public/images/pokemon/898.png differ diff --git a/public/images/pokemon/912.png b/public/images/pokemon/912.png index 022a653212c..afe24f5489b 100644 Binary files a/public/images/pokemon/912.png and b/public/images/pokemon/912.png differ diff --git a/public/images/pokemon/913.png b/public/images/pokemon/913.png index 328b48ff47b..0e00dc5682c 100644 Binary files a/public/images/pokemon/913.png and b/public/images/pokemon/913.png differ diff --git a/public/images/pokemon/914.png b/public/images/pokemon/914.png index 4e044dfae23..e4f40f27ee1 100644 Binary files a/public/images/pokemon/914.png and b/public/images/pokemon/914.png differ diff --git a/public/images/pokemon/940.png b/public/images/pokemon/940.png index 434afc4a180..4bc54f682d4 100644 Binary files a/public/images/pokemon/940.png and b/public/images/pokemon/940.png differ diff --git a/public/images/pokemon/941.png b/public/images/pokemon/941.png index bbe885fd7b1..1129a3a8436 100644 Binary files a/public/images/pokemon/941.png and b/public/images/pokemon/941.png differ diff --git a/public/images/pokemon/945.png b/public/images/pokemon/945.png index 74c43b6d32e..31e96387240 100644 Binary files a/public/images/pokemon/945.png and b/public/images/pokemon/945.png differ diff --git a/public/images/pokemon/959.png b/public/images/pokemon/959.png index b9fbe4d5e81..494b4d65fa7 100644 Binary files a/public/images/pokemon/959.png and b/public/images/pokemon/959.png differ diff --git a/public/images/pokemon/964-zero.png b/public/images/pokemon/964-zero.png index dec5ac5be00..50bd298913e 100644 Binary files a/public/images/pokemon/964-zero.png and b/public/images/pokemon/964-zero.png differ diff --git a/public/images/pokemon/966-caph-starmobile.png b/public/images/pokemon/966-caph-starmobile.png index 987782e529e..cbfd94f8316 100644 Binary files a/public/images/pokemon/966-caph-starmobile.png and b/public/images/pokemon/966-caph-starmobile.png differ diff --git a/public/images/pokemon/966-navi-starmobile.png b/public/images/pokemon/966-navi-starmobile.png index 41d0fd4690c..f3af62cc83a 100644 Binary files a/public/images/pokemon/966-navi-starmobile.png and b/public/images/pokemon/966-navi-starmobile.png differ diff --git a/public/images/pokemon/966-ruchbah-starmobile.png b/public/images/pokemon/966-ruchbah-starmobile.png index 765f1fe5eaa..5f2b4e06053 100644 Binary files a/public/images/pokemon/966-ruchbah-starmobile.png and b/public/images/pokemon/966-ruchbah-starmobile.png differ diff --git a/public/images/pokemon/966-schedar-starmobile.png b/public/images/pokemon/966-schedar-starmobile.png index 4cbc60f581f..84e06cd6a4c 100644 Binary files a/public/images/pokemon/966-schedar-starmobile.png and b/public/images/pokemon/966-schedar-starmobile.png differ diff --git a/public/images/pokemon/966-segin-starmobile.png b/public/images/pokemon/966-segin-starmobile.png index fab6b1f62ee..a1996a96974 100644 Binary files a/public/images/pokemon/966-segin-starmobile.png and b/public/images/pokemon/966-segin-starmobile.png differ diff --git a/public/images/pokemon/966.png b/public/images/pokemon/966.png index 5281411a053..f482c814ba9 100644 Binary files a/public/images/pokemon/966.png and b/public/images/pokemon/966.png differ diff --git a/public/images/pokemon/974.png b/public/images/pokemon/974.png index 8ba1bb8fc21..6f25d82d27b 100644 Binary files a/public/images/pokemon/974.png and b/public/images/pokemon/974.png differ diff --git a/public/images/pokemon/975.png b/public/images/pokemon/975.png index 7f9ad12e49d..a72874c1621 100644 Binary files a/public/images/pokemon/975.png and b/public/images/pokemon/975.png differ diff --git a/public/images/pokemon/981.png b/public/images/pokemon/981.png index b0f4a16498e..fb7fbb7bc54 100644 Binary files a/public/images/pokemon/981.png and b/public/images/pokemon/981.png differ diff --git a/public/images/pokemon/997.png b/public/images/pokemon/997.png index 5fee59edad6..bc41a4feced 100644 Binary files a/public/images/pokemon/997.png and b/public/images/pokemon/997.png differ diff --git a/public/images/pokemon/back/1003.png b/public/images/pokemon/back/1003.png index 36ee14788b3..265cd7130a8 100644 Binary files a/public/images/pokemon/back/1003.png and b/public/images/pokemon/back/1003.png differ diff --git a/public/images/pokemon/back/1006.png b/public/images/pokemon/back/1006.png index 527665e6ec1..d82b5bf0823 100644 Binary files a/public/images/pokemon/back/1006.png and b/public/images/pokemon/back/1006.png differ diff --git a/public/images/pokemon/back/1011.png b/public/images/pokemon/back/1011.png index ab3cc75482d..545f8f75c3d 100644 Binary files a/public/images/pokemon/back/1011.png and b/public/images/pokemon/back/1011.png differ diff --git a/public/images/pokemon/back/1012-counterfeit.png b/public/images/pokemon/back/1012-counterfeit.png index e6deb02c70c..4a591ca9ad5 100644 Binary files a/public/images/pokemon/back/1012-counterfeit.png and b/public/images/pokemon/back/1012-counterfeit.png differ diff --git a/public/images/pokemon/back/1013-unremarkable.png b/public/images/pokemon/back/1013-unremarkable.png index 479f0e51cff..ecc267a5f5c 100644 Binary files a/public/images/pokemon/back/1013-unremarkable.png and b/public/images/pokemon/back/1013-unremarkable.png differ diff --git a/public/images/pokemon/back/1018.png b/public/images/pokemon/back/1018.png index 67c458a9973..3ab80eaa5c7 100644 Binary files a/public/images/pokemon/back/1018.png and b/public/images/pokemon/back/1018.png differ diff --git a/public/images/pokemon/back/1019.png b/public/images/pokemon/back/1019.png index d80a0930192..040ce5745b8 100644 Binary files a/public/images/pokemon/back/1019.png and b/public/images/pokemon/back/1019.png differ diff --git a/public/images/pokemon/back/1024-stellar.png b/public/images/pokemon/back/1024-stellar.png index 0bb2993d857..b69f62ac3a2 100644 Binary files a/public/images/pokemon/back/1024-stellar.png and b/public/images/pokemon/back/1024-stellar.png differ diff --git a/public/images/pokemon/back/126.png b/public/images/pokemon/back/126.png index 193c38f7e2c..fc5390a9334 100644 Binary files a/public/images/pokemon/back/126.png and b/public/images/pokemon/back/126.png differ diff --git a/public/images/pokemon/back/143-gigantamax.png b/public/images/pokemon/back/143-gigantamax.png index cd251a515e6..cfba124f830 100644 Binary files a/public/images/pokemon/back/143-gigantamax.png and b/public/images/pokemon/back/143-gigantamax.png differ diff --git a/public/images/pokemon/back/159.png b/public/images/pokemon/back/159.png index 699661bb510..ffbf38bf4df 100644 Binary files a/public/images/pokemon/back/159.png and b/public/images/pokemon/back/159.png differ diff --git a/public/images/pokemon/back/172-spiky.png b/public/images/pokemon/back/172-spiky.png index d038e0d3661..356d5da1a17 100644 Binary files a/public/images/pokemon/back/172-spiky.png and b/public/images/pokemon/back/172-spiky.png differ diff --git a/public/images/pokemon/back/172.png b/public/images/pokemon/back/172.png index 775a42dd948..7d5b9c5ce7e 100644 Binary files a/public/images/pokemon/back/172.png and b/public/images/pokemon/back/172.png differ diff --git a/public/images/pokemon/back/174.png b/public/images/pokemon/back/174.png index ee0605b1f40..fb833afbcee 100644 Binary files a/public/images/pokemon/back/174.png and b/public/images/pokemon/back/174.png differ diff --git a/public/images/pokemon/back/178.png b/public/images/pokemon/back/178.png index 34b837f5082..b220aecbc53 100644 Binary files a/public/images/pokemon/back/178.png and b/public/images/pokemon/back/178.png differ diff --git a/public/images/pokemon/back/186.png b/public/images/pokemon/back/186.png index e6af67d75fa..d928e76d386 100644 Binary files a/public/images/pokemon/back/186.png and b/public/images/pokemon/back/186.png differ diff --git a/public/images/pokemon/back/190.png b/public/images/pokemon/back/190.png index 687eb29a67f..5fddade2990 100644 Binary files a/public/images/pokemon/back/190.png and b/public/images/pokemon/back/190.png differ diff --git a/public/images/pokemon/back/198.png b/public/images/pokemon/back/198.png index dc92c8b1d59..11304efcb1a 100644 Binary files a/public/images/pokemon/back/198.png and b/public/images/pokemon/back/198.png differ diff --git a/public/images/pokemon/back/199.png b/public/images/pokemon/back/199.png index a7cffbc7820..40cd1c18eb9 100644 Binary files a/public/images/pokemon/back/199.png and b/public/images/pokemon/back/199.png differ diff --git a/public/images/pokemon/back/2026.png b/public/images/pokemon/back/2026.png index 1f0411ffcd8..50326a6c54b 100644 Binary files a/public/images/pokemon/back/2026.png and b/public/images/pokemon/back/2026.png differ diff --git a/public/images/pokemon/back/2028.png b/public/images/pokemon/back/2028.png index 722fb3698bf..9c3430debc3 100644 Binary files a/public/images/pokemon/back/2028.png and b/public/images/pokemon/back/2028.png differ diff --git a/public/images/pokemon/back/2038.png b/public/images/pokemon/back/2038.png index 957b2d31714..94ca92bb6e1 100644 Binary files a/public/images/pokemon/back/2038.png and b/public/images/pokemon/back/2038.png differ diff --git a/public/images/pokemon/back/2075.png b/public/images/pokemon/back/2075.png index 6c11c18bd1d..abac1e16c61 100644 Binary files a/public/images/pokemon/back/2075.png and b/public/images/pokemon/back/2075.png differ diff --git a/public/images/pokemon/back/228.png b/public/images/pokemon/back/228.png index 3a1952f81e7..8e42c3a5d9c 100644 Binary files a/public/images/pokemon/back/228.png and b/public/images/pokemon/back/228.png differ diff --git a/public/images/pokemon/back/229-mega.png b/public/images/pokemon/back/229-mega.png index 2c13a17ccc1..9245d358586 100644 Binary files a/public/images/pokemon/back/229-mega.png and b/public/images/pokemon/back/229-mega.png differ diff --git a/public/images/pokemon/back/229.png b/public/images/pokemon/back/229.png index 08692a9babe..6fbccb62690 100644 Binary files a/public/images/pokemon/back/229.png and b/public/images/pokemon/back/229.png differ diff --git a/public/images/pokemon/back/232.png b/public/images/pokemon/back/232.png index ba0db3a1c36..afa666ed7ed 100644 Binary files a/public/images/pokemon/back/232.png and b/public/images/pokemon/back/232.png differ diff --git a/public/images/pokemon/back/249.png b/public/images/pokemon/back/249.png index 181c7076e5d..5d157d50d05 100644 Binary files a/public/images/pokemon/back/249.png and b/public/images/pokemon/back/249.png differ diff --git a/public/images/pokemon/back/25-beauty-cosplay.png b/public/images/pokemon/back/25-beauty-cosplay.png index 8a57b642aa7..1e32a3cb2bb 100644 Binary files a/public/images/pokemon/back/25-beauty-cosplay.png and b/public/images/pokemon/back/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/back/25-cool-cosplay.png b/public/images/pokemon/back/25-cool-cosplay.png index 1c9528eb350..186a8f14f73 100644 Binary files a/public/images/pokemon/back/25-cool-cosplay.png and b/public/images/pokemon/back/25-cool-cosplay.png differ diff --git a/public/images/pokemon/back/25-cosplay.png b/public/images/pokemon/back/25-cosplay.png index 38e573f5784..f9cba27eb5c 100644 Binary files a/public/images/pokemon/back/25-cosplay.png and b/public/images/pokemon/back/25-cosplay.png differ diff --git a/public/images/pokemon/back/25-cute-cosplay.png b/public/images/pokemon/back/25-cute-cosplay.png index 64b180067d5..a6ad1b84f51 100644 Binary files a/public/images/pokemon/back/25-cute-cosplay.png and b/public/images/pokemon/back/25-cute-cosplay.png differ diff --git a/public/images/pokemon/back/25-gigantamax.png b/public/images/pokemon/back/25-gigantamax.png index 1bed545d749..492349e9094 100644 Binary files a/public/images/pokemon/back/25-gigantamax.png and b/public/images/pokemon/back/25-gigantamax.png differ diff --git a/public/images/pokemon/back/25-partner.png b/public/images/pokemon/back/25-partner.png index ae6133aefff..44cd2833d7c 100644 Binary files a/public/images/pokemon/back/25-partner.png and b/public/images/pokemon/back/25-partner.png differ diff --git a/public/images/pokemon/back/25-smart-cosplay.png b/public/images/pokemon/back/25-smart-cosplay.png index 6f23b7f4df0..d5acb8a5ddf 100644 Binary files a/public/images/pokemon/back/25-smart-cosplay.png and b/public/images/pokemon/back/25-smart-cosplay.png differ diff --git a/public/images/pokemon/back/25-tough-cosplay.png b/public/images/pokemon/back/25-tough-cosplay.png index cfc9392efe8..b0a53577722 100644 Binary files a/public/images/pokemon/back/25-tough-cosplay.png and b/public/images/pokemon/back/25-tough-cosplay.png differ diff --git a/public/images/pokemon/back/25.png b/public/images/pokemon/back/25.png index ae6133aefff..44cd2833d7c 100644 Binary files a/public/images/pokemon/back/25.png and b/public/images/pokemon/back/25.png differ diff --git a/public/images/pokemon/back/256.png b/public/images/pokemon/back/256.png index 9e58466f2ba..508a3bd8528 100644 Binary files a/public/images/pokemon/back/256.png and b/public/images/pokemon/back/256.png differ diff --git a/public/images/pokemon/back/257-mega.png b/public/images/pokemon/back/257-mega.png index df1f65d5811..ed6044523cb 100644 Binary files a/public/images/pokemon/back/257-mega.png and b/public/images/pokemon/back/257-mega.png differ diff --git a/public/images/pokemon/back/257.png b/public/images/pokemon/back/257.png index 0104c4799da..29899889621 100644 Binary files a/public/images/pokemon/back/257.png and b/public/images/pokemon/back/257.png differ diff --git a/public/images/pokemon/back/26.png b/public/images/pokemon/back/26.png index 454c581edae..3c622d538b7 100644 Binary files a/public/images/pokemon/back/26.png and b/public/images/pokemon/back/26.png differ diff --git a/public/images/pokemon/back/261.png b/public/images/pokemon/back/261.png index b44a6dc019e..e7b387f7007 100644 Binary files a/public/images/pokemon/back/261.png and b/public/images/pokemon/back/261.png differ diff --git a/public/images/pokemon/back/262.png b/public/images/pokemon/back/262.png index 2bc9bf59816..2a6d763f0c1 100644 Binary files a/public/images/pokemon/back/262.png and b/public/images/pokemon/back/262.png differ diff --git a/public/images/pokemon/back/276.png b/public/images/pokemon/back/276.png index fef264f004e..b4ed6d69cdb 100644 Binary files a/public/images/pokemon/back/276.png and b/public/images/pokemon/back/276.png differ diff --git a/public/images/pokemon/back/277.png b/public/images/pokemon/back/277.png index ced72a75a73..a3c20bc84d7 100644 Binary files a/public/images/pokemon/back/277.png and b/public/images/pokemon/back/277.png differ diff --git a/public/images/pokemon/back/280.png b/public/images/pokemon/back/280.png index b14179df4e3..bc70b082043 100644 Binary files a/public/images/pokemon/back/280.png and b/public/images/pokemon/back/280.png differ diff --git a/public/images/pokemon/back/281.png b/public/images/pokemon/back/281.png index a26c4638688..80e9e7a4fd3 100644 Binary files a/public/images/pokemon/back/281.png and b/public/images/pokemon/back/281.png differ diff --git a/public/images/pokemon/back/282.png b/public/images/pokemon/back/282.png index 0cd51fca3a0..fd4b8be539a 100644 Binary files a/public/images/pokemon/back/282.png and b/public/images/pokemon/back/282.png differ diff --git a/public/images/pokemon/back/3-gigantamax.png b/public/images/pokemon/back/3-gigantamax.png index 278cb58b765..9550141f561 100644 Binary files a/public/images/pokemon/back/3-gigantamax.png and b/public/images/pokemon/back/3-gigantamax.png differ diff --git a/public/images/pokemon/back/3-mega.png b/public/images/pokemon/back/3-mega.png index 5f4986de090..b7c18ce6561 100644 Binary files a/public/images/pokemon/back/3-mega.png and b/public/images/pokemon/back/3-mega.png differ diff --git a/public/images/pokemon/back/3.png b/public/images/pokemon/back/3.png index 9f833c7d122..ed32f742843 100644 Binary files a/public/images/pokemon/back/3.png and b/public/images/pokemon/back/3.png differ diff --git a/public/images/pokemon/back/303-mega.png b/public/images/pokemon/back/303-mega.png index 94960dc84b1..c8015c93db8 100644 Binary files a/public/images/pokemon/back/303-mega.png and b/public/images/pokemon/back/303-mega.png differ diff --git a/public/images/pokemon/back/332.png b/public/images/pokemon/back/332.png index b251a35e468..21093f48984 100644 Binary files a/public/images/pokemon/back/332.png and b/public/images/pokemon/back/332.png differ diff --git a/public/images/pokemon/back/34.png b/public/images/pokemon/back/34.png index bb0ad630d1a..a13646983e6 100644 Binary files a/public/images/pokemon/back/34.png and b/public/images/pokemon/back/34.png differ diff --git a/public/images/pokemon/back/357.png b/public/images/pokemon/back/357.png index 7a7e551c4a2..06f1d3ac20d 100644 Binary files a/public/images/pokemon/back/357.png and b/public/images/pokemon/back/357.png differ diff --git a/public/images/pokemon/back/379.png b/public/images/pokemon/back/379.png index b4f282d5989..e61f34108f4 100644 Binary files a/public/images/pokemon/back/379.png and b/public/images/pokemon/back/379.png differ diff --git a/public/images/pokemon/back/386.png b/public/images/pokemon/back/386.png index 67ab8a4b235..ffd491c5b96 100644 Binary files a/public/images/pokemon/back/386.png and b/public/images/pokemon/back/386.png differ diff --git a/public/images/pokemon/back/390.png b/public/images/pokemon/back/390.png index d6dcc990c48..6ff5df0859a 100644 Binary files a/public/images/pokemon/back/390.png and b/public/images/pokemon/back/390.png differ diff --git a/public/images/pokemon/back/391.png b/public/images/pokemon/back/391.png index 9b41cd2bd89..e1c9aefaa68 100644 Binary files a/public/images/pokemon/back/391.png and b/public/images/pokemon/back/391.png differ diff --git a/public/images/pokemon/back/392.png b/public/images/pokemon/back/392.png index 2e7466294da..d1e7a16dc47 100644 Binary files a/public/images/pokemon/back/392.png and b/public/images/pokemon/back/392.png differ diff --git a/public/images/pokemon/back/394.png b/public/images/pokemon/back/394.png index cded0dbb0ec..3a92ac7144a 100644 Binary files a/public/images/pokemon/back/394.png and b/public/images/pokemon/back/394.png differ diff --git a/public/images/pokemon/back/395.png b/public/images/pokemon/back/395.png index 877b3e352a4..a4d7775f240 100644 Binary files a/public/images/pokemon/back/395.png and b/public/images/pokemon/back/395.png differ diff --git a/public/images/pokemon/back/396.png b/public/images/pokemon/back/396.png index 843c9dca1e4..48e47816829 100644 Binary files a/public/images/pokemon/back/396.png and b/public/images/pokemon/back/396.png differ diff --git a/public/images/pokemon/back/397.png b/public/images/pokemon/back/397.png index 236fc18ea44..0a1ee962bb8 100644 Binary files a/public/images/pokemon/back/397.png and b/public/images/pokemon/back/397.png differ diff --git a/public/images/pokemon/back/398.png b/public/images/pokemon/back/398.png index 63ed37bfd15..14653cc3630 100644 Binary files a/public/images/pokemon/back/398.png and b/public/images/pokemon/back/398.png differ diff --git a/public/images/pokemon/back/399.png b/public/images/pokemon/back/399.png index bc35bf83e6f..3074bf7402f 100644 Binary files a/public/images/pokemon/back/399.png and b/public/images/pokemon/back/399.png differ diff --git a/public/images/pokemon/back/401.png b/public/images/pokemon/back/401.png index 1227e0533e3..75f20b65ee3 100644 Binary files a/public/images/pokemon/back/401.png and b/public/images/pokemon/back/401.png differ diff --git a/public/images/pokemon/back/402.png b/public/images/pokemon/back/402.png index f74de4e8dc2..6bd8a93a6e6 100644 Binary files a/public/images/pokemon/back/402.png and b/public/images/pokemon/back/402.png differ diff --git a/public/images/pokemon/back/403.png b/public/images/pokemon/back/403.png index 303c4b57cbd..eebbfa22443 100644 Binary files a/public/images/pokemon/back/403.png and b/public/images/pokemon/back/403.png differ diff --git a/public/images/pokemon/back/404.png b/public/images/pokemon/back/404.png index 6592f80c58d..552d1bd6208 100644 Binary files a/public/images/pokemon/back/404.png and b/public/images/pokemon/back/404.png differ diff --git a/public/images/pokemon/back/405.png b/public/images/pokemon/back/405.png index 0afe5b3036d..1e2b5ed4aaa 100644 Binary files a/public/images/pokemon/back/405.png and b/public/images/pokemon/back/405.png differ diff --git a/public/images/pokemon/back/4080.png b/public/images/pokemon/back/4080.png index 182424bd1e0..378ac1c1280 100644 Binary files a/public/images/pokemon/back/4080.png and b/public/images/pokemon/back/4080.png differ diff --git a/public/images/pokemon/back/412-sandy.png b/public/images/pokemon/back/412-sandy.png index 61219669129..bd082ec6c6a 100644 Binary files a/public/images/pokemon/back/412-sandy.png and b/public/images/pokemon/back/412-sandy.png differ diff --git a/public/images/pokemon/back/4144.png b/public/images/pokemon/back/4144.png index a8270354def..0adacbe4c5c 100644 Binary files a/public/images/pokemon/back/4144.png and b/public/images/pokemon/back/4144.png differ diff --git a/public/images/pokemon/back/4145.png b/public/images/pokemon/back/4145.png index a9735fb171a..2727043bf06 100644 Binary files a/public/images/pokemon/back/4145.png and b/public/images/pokemon/back/4145.png differ diff --git a/public/images/pokemon/back/4146.png b/public/images/pokemon/back/4146.png index a93c746d8a9..2a49e28bbca 100644 Binary files a/public/images/pokemon/back/4146.png and b/public/images/pokemon/back/4146.png differ diff --git a/public/images/pokemon/back/418.png b/public/images/pokemon/back/418.png index 724948d9809..33ab0c7f8c9 100644 Binary files a/public/images/pokemon/back/418.png and b/public/images/pokemon/back/418.png differ diff --git a/public/images/pokemon/back/419.png b/public/images/pokemon/back/419.png index 7a389c2cbe3..8e99de7a1db 100644 Binary files a/public/images/pokemon/back/419.png and b/public/images/pokemon/back/419.png differ diff --git a/public/images/pokemon/back/4199.png b/public/images/pokemon/back/4199.png index eb02986212f..b409d593567 100644 Binary files a/public/images/pokemon/back/4199.png and b/public/images/pokemon/back/4199.png differ diff --git a/public/images/pokemon/back/421-sunshine.png b/public/images/pokemon/back/421-sunshine.png index fc041d6cdeb..f9ba186617b 100644 Binary files a/public/images/pokemon/back/421-sunshine.png and b/public/images/pokemon/back/421-sunshine.png differ diff --git a/public/images/pokemon/back/424.png b/public/images/pokemon/back/424.png index c953801431e..bfe490b15a6 100644 Binary files a/public/images/pokemon/back/424.png and b/public/images/pokemon/back/424.png differ diff --git a/public/images/pokemon/back/430.png b/public/images/pokemon/back/430.png index 383685fa816..352d0c52a2e 100644 Binary files a/public/images/pokemon/back/430.png and b/public/images/pokemon/back/430.png differ diff --git a/public/images/pokemon/back/431.png b/public/images/pokemon/back/431.png index f67604890f0..c58d9642e33 100644 Binary files a/public/images/pokemon/back/431.png and b/public/images/pokemon/back/431.png differ diff --git a/public/images/pokemon/back/436.png b/public/images/pokemon/back/436.png index 5d08304bff1..cc3b77a84eb 100644 Binary files a/public/images/pokemon/back/436.png and b/public/images/pokemon/back/436.png differ diff --git a/public/images/pokemon/back/451.png b/public/images/pokemon/back/451.png index 03fc0d8f723..3e59961ed9f 100644 Binary files a/public/images/pokemon/back/451.png and b/public/images/pokemon/back/451.png differ diff --git a/public/images/pokemon/back/455.png b/public/images/pokemon/back/455.png index 2191905e2ce..e086de0b451 100644 Binary files a/public/images/pokemon/back/455.png and b/public/images/pokemon/back/455.png differ diff --git a/public/images/pokemon/back/456.png b/public/images/pokemon/back/456.png index 216cca54757..9cffdd3ba91 100644 Binary files a/public/images/pokemon/back/456.png and b/public/images/pokemon/back/456.png differ diff --git a/public/images/pokemon/back/4562.png b/public/images/pokemon/back/4562.png index 1e23be42716..507274dfbb0 100644 Binary files a/public/images/pokemon/back/4562.png and b/public/images/pokemon/back/4562.png differ diff --git a/public/images/pokemon/back/457.png b/public/images/pokemon/back/457.png index 806cacfaed2..f06dcd0bd30 100644 Binary files a/public/images/pokemon/back/457.png and b/public/images/pokemon/back/457.png differ diff --git a/public/images/pokemon/back/467.png b/public/images/pokemon/back/467.png index 5edba20e48e..6011029d643 100644 Binary files a/public/images/pokemon/back/467.png and b/public/images/pokemon/back/467.png differ diff --git a/public/images/pokemon/back/469.png b/public/images/pokemon/back/469.png index f55bdd8f25f..ac5c5e0351b 100644 Binary files a/public/images/pokemon/back/469.png and b/public/images/pokemon/back/469.png differ diff --git a/public/images/pokemon/back/472.png b/public/images/pokemon/back/472.png index af5bfd64473..bd400deb626 100644 Binary files a/public/images/pokemon/back/472.png and b/public/images/pokemon/back/472.png differ diff --git a/public/images/pokemon/back/477.png b/public/images/pokemon/back/477.png index 02b662fbd74..d68ac7b03fd 100644 Binary files a/public/images/pokemon/back/477.png and b/public/images/pokemon/back/477.png differ diff --git a/public/images/pokemon/back/486.png b/public/images/pokemon/back/486.png index 4df438f6320..7011e805978 100644 Binary files a/public/images/pokemon/back/486.png and b/public/images/pokemon/back/486.png differ diff --git a/public/images/pokemon/back/493-fairy.png b/public/images/pokemon/back/493-fairy.png index b335c1dcb17..4e06aa32deb 100644 Binary files a/public/images/pokemon/back/493-fairy.png and b/public/images/pokemon/back/493-fairy.png differ diff --git a/public/images/pokemon/back/498.png b/public/images/pokemon/back/498.png index c14fb4561e7..c2ba65ae4a7 100644 Binary files a/public/images/pokemon/back/498.png and b/public/images/pokemon/back/498.png differ diff --git a/public/images/pokemon/back/500.png b/public/images/pokemon/back/500.png index 082f0460ff2..20580d2fe97 100644 Binary files a/public/images/pokemon/back/500.png and b/public/images/pokemon/back/500.png differ diff --git a/public/images/pokemon/back/502.png b/public/images/pokemon/back/502.png index 5225cb803e0..6cfc3aab6e7 100644 Binary files a/public/images/pokemon/back/502.png and b/public/images/pokemon/back/502.png differ diff --git a/public/images/pokemon/back/503.png b/public/images/pokemon/back/503.png index 8b38780da27..ec5b2f603d7 100644 Binary files a/public/images/pokemon/back/503.png and b/public/images/pokemon/back/503.png differ diff --git a/public/images/pokemon/back/522.png b/public/images/pokemon/back/522.png index ff5bbafb915..46ad7cf09de 100644 Binary files a/public/images/pokemon/back/522.png and b/public/images/pokemon/back/522.png differ diff --git a/public/images/pokemon/back/523.png b/public/images/pokemon/back/523.png index 023afbd1008..397e17424d6 100644 Binary files a/public/images/pokemon/back/523.png and b/public/images/pokemon/back/523.png differ diff --git a/public/images/pokemon/back/527.png b/public/images/pokemon/back/527.png index ce061ffe60a..87ff66551f8 100644 Binary files a/public/images/pokemon/back/527.png and b/public/images/pokemon/back/527.png differ diff --git a/public/images/pokemon/back/528.png b/public/images/pokemon/back/528.png index 81fc8414dd8..f44a56eaf41 100644 Binary files a/public/images/pokemon/back/528.png and b/public/images/pokemon/back/528.png differ diff --git a/public/images/pokemon/back/535.png b/public/images/pokemon/back/535.png index 2556d646aa6..c3bdccbff6e 100644 Binary files a/public/images/pokemon/back/535.png and b/public/images/pokemon/back/535.png differ diff --git a/public/images/pokemon/back/536.png b/public/images/pokemon/back/536.png index 393006e83b9..66d7467a49d 100644 Binary files a/public/images/pokemon/back/536.png and b/public/images/pokemon/back/536.png differ diff --git a/public/images/pokemon/back/554.png b/public/images/pokemon/back/554.png index f6423a5e66e..b512a8ea8b3 100644 Binary files a/public/images/pokemon/back/554.png and b/public/images/pokemon/back/554.png differ diff --git a/public/images/pokemon/back/555-zen.png b/public/images/pokemon/back/555-zen.png index 8fe0e672a3a..c69256f777d 100644 Binary files a/public/images/pokemon/back/555-zen.png and b/public/images/pokemon/back/555-zen.png differ diff --git a/public/images/pokemon/back/555.png b/public/images/pokemon/back/555.png index 77c04139079..430c0d890fb 100644 Binary files a/public/images/pokemon/back/555.png and b/public/images/pokemon/back/555.png differ diff --git a/public/images/pokemon/back/556.png b/public/images/pokemon/back/556.png index 43652a17d06..24afb7921f4 100644 Binary files a/public/images/pokemon/back/556.png and b/public/images/pokemon/back/556.png differ diff --git a/public/images/pokemon/back/567.png b/public/images/pokemon/back/567.png index ec4197fbb92..a1f0b2eb2cc 100644 Binary files a/public/images/pokemon/back/567.png and b/public/images/pokemon/back/567.png differ diff --git a/public/images/pokemon/back/569-gigantamax.png b/public/images/pokemon/back/569-gigantamax.png index 334c513dd73..1345225cd93 100644 Binary files a/public/images/pokemon/back/569-gigantamax.png and b/public/images/pokemon/back/569-gigantamax.png differ diff --git a/public/images/pokemon/back/572.png b/public/images/pokemon/back/572.png index 4d081564b50..a749c059d26 100644 Binary files a/public/images/pokemon/back/572.png and b/public/images/pokemon/back/572.png differ diff --git a/public/images/pokemon/back/573.png b/public/images/pokemon/back/573.png index ef4a8bc14ab..9782dc43713 100644 Binary files a/public/images/pokemon/back/573.png and b/public/images/pokemon/back/573.png differ diff --git a/public/images/pokemon/back/587.png b/public/images/pokemon/back/587.png index 8932c1f480a..8ff01a044e9 100644 Binary files a/public/images/pokemon/back/587.png and b/public/images/pokemon/back/587.png differ diff --git a/public/images/pokemon/back/590.png b/public/images/pokemon/back/590.png index 6e7685b2ced..94583a96839 100644 Binary files a/public/images/pokemon/back/590.png and b/public/images/pokemon/back/590.png differ diff --git a/public/images/pokemon/back/591.png b/public/images/pokemon/back/591.png index 2f2d9f34f08..70e42d8ade9 100644 Binary files a/public/images/pokemon/back/591.png and b/public/images/pokemon/back/591.png differ diff --git a/public/images/pokemon/back/605.png b/public/images/pokemon/back/605.png index a7206e78a2d..287c80eb736 100644 Binary files a/public/images/pokemon/back/605.png and b/public/images/pokemon/back/605.png differ diff --git a/public/images/pokemon/back/616.png b/public/images/pokemon/back/616.png index 7033e50a0dd..73a6eb25750 100644 Binary files a/public/images/pokemon/back/616.png and b/public/images/pokemon/back/616.png differ diff --git a/public/images/pokemon/back/618.png b/public/images/pokemon/back/618.png index a3bc75aa00e..e899c011079 100644 Binary files a/public/images/pokemon/back/618.png and b/public/images/pokemon/back/618.png differ diff --git a/public/images/pokemon/back/626.png b/public/images/pokemon/back/626.png index a3098a1c1d3..7ffe0bd54c6 100644 Binary files a/public/images/pokemon/back/626.png and b/public/images/pokemon/back/626.png differ diff --git a/public/images/pokemon/back/63.png b/public/images/pokemon/back/63.png index 2a9f10832ad..793a57fe8a6 100644 Binary files a/public/images/pokemon/back/63.png and b/public/images/pokemon/back/63.png differ diff --git a/public/images/pokemon/back/643.png b/public/images/pokemon/back/643.png index 597b4bcb189..8e10570c971 100644 Binary files a/public/images/pokemon/back/643.png and b/public/images/pokemon/back/643.png differ diff --git a/public/images/pokemon/back/644.png b/public/images/pokemon/back/644.png index 39a4d3499bd..d63f2106b35 100644 Binary files a/public/images/pokemon/back/644.png and b/public/images/pokemon/back/644.png differ diff --git a/public/images/pokemon/back/645-incarnate.png b/public/images/pokemon/back/645-incarnate.png index d47e03c718b..28c11ad0394 100644 Binary files a/public/images/pokemon/back/645-incarnate.png and b/public/images/pokemon/back/645-incarnate.png differ diff --git a/public/images/pokemon/back/645-therian.png b/public/images/pokemon/back/645-therian.png index 127a759f89a..067835b0d2d 100644 Binary files a/public/images/pokemon/back/645-therian.png and b/public/images/pokemon/back/645-therian.png differ diff --git a/public/images/pokemon/back/646-black.png b/public/images/pokemon/back/646-black.png index 7783e4c8cd5..0eab161612a 100644 Binary files a/public/images/pokemon/back/646-black.png and b/public/images/pokemon/back/646-black.png differ diff --git a/public/images/pokemon/back/646-white.png b/public/images/pokemon/back/646-white.png index 1dc659ed6ac..0b33c809221 100644 Binary files a/public/images/pokemon/back/646-white.png and b/public/images/pokemon/back/646-white.png differ diff --git a/public/images/pokemon/back/646.png b/public/images/pokemon/back/646.png index 6ca7f51f01d..613c1e32d00 100644 Binary files a/public/images/pokemon/back/646.png and b/public/images/pokemon/back/646.png differ diff --git a/public/images/pokemon/back/6503.png b/public/images/pokemon/back/6503.png index c88de28046e..f93e0bb7b1d 100644 Binary files a/public/images/pokemon/back/6503.png and b/public/images/pokemon/back/6503.png differ diff --git a/public/images/pokemon/back/656.png b/public/images/pokemon/back/656.png index 62362337762..683c1b2a4aa 100644 Binary files a/public/images/pokemon/back/656.png and b/public/images/pokemon/back/656.png differ diff --git a/public/images/pokemon/back/657.png b/public/images/pokemon/back/657.png index 1e61b595e49..35de4f1dcd7 100644 Binary files a/public/images/pokemon/back/657.png and b/public/images/pokemon/back/657.png differ diff --git a/public/images/pokemon/back/658-ash.png b/public/images/pokemon/back/658-ash.png index 382b06fd6cb..344194eda80 100644 Binary files a/public/images/pokemon/back/658-ash.png and b/public/images/pokemon/back/658-ash.png differ diff --git a/public/images/pokemon/back/658.png b/public/images/pokemon/back/658.png index be286b88666..0611199ad4a 100644 Binary files a/public/images/pokemon/back/658.png and b/public/images/pokemon/back/658.png differ diff --git a/public/images/pokemon/back/666-fancy.png b/public/images/pokemon/back/666-fancy.png index b56daf08a52..172e2e4ff51 100644 Binary files a/public/images/pokemon/back/666-fancy.png and b/public/images/pokemon/back/666-fancy.png differ diff --git a/public/images/pokemon/back/666-high-plains.png b/public/images/pokemon/back/666-high-plains.png index d6cca9c2413..a01c63d4e3f 100644 Binary files a/public/images/pokemon/back/666-high-plains.png and b/public/images/pokemon/back/666-high-plains.png differ diff --git a/public/images/pokemon/back/666-river.png b/public/images/pokemon/back/666-river.png index effabe7fa2d..dd732209e6d 100644 Binary files a/public/images/pokemon/back/666-river.png and b/public/images/pokemon/back/666-river.png differ diff --git a/public/images/pokemon/back/6706.png b/public/images/pokemon/back/6706.png index 82c64e98535..ea9bd9a4e77 100644 Binary files a/public/images/pokemon/back/6706.png and b/public/images/pokemon/back/6706.png differ diff --git a/public/images/pokemon/back/672.json b/public/images/pokemon/back/672.json index 572cfc63cab..f877b9abc2e 100644 --- a/public/images/pokemon/back/672.json +++ b/public/images/pokemon/back/672.json @@ -1,41 +1,479 @@ -{ - "textures": [ - { - "image": "672.png", - "format": "RGBA8888", - "size": { - "w": 50, - "h": 50 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 40, - "h": 50 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 40, - "h": 50 - }, - "frame": { - "x": 0, - "y": 0, - "w": 40, - "h": 50 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f1e3530f741a26e873c3fc51d143d47e:cf5c123cdad11dba2ff9baade57233bb:2e4767b7cd134fc0ab1bb6e9eee82bc7$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.11-x64", + "image": "672.png", + "format": "I8", + "size": { "w": 160, "h": 195 }, + "scale": "1" + } } diff --git a/public/images/pokemon/back/672.png b/public/images/pokemon/back/672.png index 360c79fef32..2201da3b627 100644 Binary files a/public/images/pokemon/back/672.png and b/public/images/pokemon/back/672.png differ diff --git a/public/images/pokemon/back/674.png b/public/images/pokemon/back/674.png index 9a9d0ec59dd..eb2a0c04f56 100644 Binary files a/public/images/pokemon/back/674.png and b/public/images/pokemon/back/674.png differ diff --git a/public/images/pokemon/back/676-dandy.png b/public/images/pokemon/back/676-dandy.png index 8a4f26e17b2..213963572ab 100644 Binary files a/public/images/pokemon/back/676-dandy.png and b/public/images/pokemon/back/676-dandy.png differ diff --git a/public/images/pokemon/back/676-debutante.png b/public/images/pokemon/back/676-debutante.png index bed3f323a6b..574d24a7763 100644 Binary files a/public/images/pokemon/back/676-debutante.png and b/public/images/pokemon/back/676-debutante.png differ diff --git a/public/images/pokemon/back/676-diamond.png b/public/images/pokemon/back/676-diamond.png index 436d9b6dbde..a1e4c2cebee 100644 Binary files a/public/images/pokemon/back/676-diamond.png and b/public/images/pokemon/back/676-diamond.png differ diff --git a/public/images/pokemon/back/676-heart.png b/public/images/pokemon/back/676-heart.png index 57d472c3834..2deca7617fa 100644 Binary files a/public/images/pokemon/back/676-heart.png and b/public/images/pokemon/back/676-heart.png differ diff --git a/public/images/pokemon/back/676-kabuki.png b/public/images/pokemon/back/676-kabuki.png index d602c607643..f4bc50373dc 100644 Binary files a/public/images/pokemon/back/676-kabuki.png and b/public/images/pokemon/back/676-kabuki.png differ diff --git a/public/images/pokemon/back/676-la-reine.png b/public/images/pokemon/back/676-la-reine.png index de1b1a15b90..c30e17dcd92 100644 Binary files a/public/images/pokemon/back/676-la-reine.png and b/public/images/pokemon/back/676-la-reine.png differ diff --git a/public/images/pokemon/back/676-matron.png b/public/images/pokemon/back/676-matron.png index e01a8f273af..02b348bff65 100644 Binary files a/public/images/pokemon/back/676-matron.png and b/public/images/pokemon/back/676-matron.png differ diff --git a/public/images/pokemon/back/676-pharaoh.png b/public/images/pokemon/back/676-pharaoh.png index 13952c58c68..596831f7ff5 100644 Binary files a/public/images/pokemon/back/676-pharaoh.png and b/public/images/pokemon/back/676-pharaoh.png differ diff --git a/public/images/pokemon/back/676-star.png b/public/images/pokemon/back/676-star.png index 5b188f33498..9810d29bc50 100644 Binary files a/public/images/pokemon/back/676-star.png and b/public/images/pokemon/back/676-star.png differ diff --git a/public/images/pokemon/back/682.png b/public/images/pokemon/back/682.png index 60f869b2f2c..888d35548b9 100644 Binary files a/public/images/pokemon/back/682.png and b/public/images/pokemon/back/682.png differ diff --git a/public/images/pokemon/back/683.png b/public/images/pokemon/back/683.png index 38247067a25..9bb382302fe 100644 Binary files a/public/images/pokemon/back/683.png and b/public/images/pokemon/back/683.png differ diff --git a/public/images/pokemon/back/684.png b/public/images/pokemon/back/684.png index 3f02f312123..913501f7a82 100644 Binary files a/public/images/pokemon/back/684.png and b/public/images/pokemon/back/684.png differ diff --git a/public/images/pokemon/back/685.png b/public/images/pokemon/back/685.png index eab453253cc..c55efc30fe8 100644 Binary files a/public/images/pokemon/back/685.png and b/public/images/pokemon/back/685.png differ diff --git a/public/images/pokemon/back/688.png b/public/images/pokemon/back/688.png index bb22ceed75e..ceb6302e4a0 100644 Binary files a/public/images/pokemon/back/688.png and b/public/images/pokemon/back/688.png differ diff --git a/public/images/pokemon/back/692.json b/public/images/pokemon/back/692.json index e83252f8486..801710c4861 100644 --- a/public/images/pokemon/back/692.json +++ b/public/images/pokemon/back/692.json @@ -7,6 +7,780 @@ "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, "sourceSize": { "w": 63, "h": 35 }, "duration": 50 + }, + { + "filename": "0002.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0003.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0004.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0005.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0006.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0007.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0008.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0009.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0010.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0011.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0012.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0013.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0014.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0015.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0016.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0017.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0018.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0019.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0020.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0021.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0022.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0023.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0024.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0025.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0026.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0027.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0028.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0029.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0030.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0031.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0032.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0033.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0034.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0035.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0036.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0037.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0038.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0039.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0040.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0041.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0042.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0043.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0044.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0045.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0046.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0047.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0048.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0049.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0050.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0051.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0052.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0053.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0054.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0055.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0056.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0057.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0058.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0059.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0060.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0061.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0062.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0063.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0064.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0065.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0066.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0067.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0068.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0069.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0070.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0071.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0072.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0073.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0074.png", + "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0075.png", + "frame": { "x": 119, "y": 72, "w": 56, "h": 31 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 56, "h": 31 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0076.png", + "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0077.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0078.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0079.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0080.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0081.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0082.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0084.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0085.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0086.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0087.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 } ], "meta": { diff --git a/public/images/pokemon/back/692.png b/public/images/pokemon/back/692.png index 33059d53c05..b1d83831d2b 100644 Binary files a/public/images/pokemon/back/692.png and b/public/images/pokemon/back/692.png differ diff --git a/public/images/pokemon/back/693.json b/public/images/pokemon/back/693.json index c9b4f798435..6358a8908f6 100644 --- a/public/images/pokemon/back/693.json +++ b/public/images/pokemon/back/693.json @@ -1,41 +1,902 @@ -{ - "textures": [ - { - "image": "693.png", - "format": "RGBA8888", - "size": { - "w": 90, - "h": 90 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 90, - "h": 70 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 90, - "h": 70 - }, - "frame": { - "x": 0, - "y": 0, - "w": 90, - "h": 70 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:d6632bd48b7744ae3f1ffbbdeb6c73ca:0a9c6468e4ad2560c13c7880c39eaab2:9c1f9147e693c05eb4655590e9099679$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0073.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0074.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0075.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0076.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0077.png", + "frame": { "x": 565, "y": 196, "w": 90, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 6, "w": 90, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0078.png", + "frame": { "x": 278, "y": 266, "w": 90, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 90, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0079.png", + "frame": { "x": 189, "y": 199, "w": 95, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 8, "w": 95, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0080.png", + "frame": { "x": 193, "y": 1, "w": 98, "h": 68 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 3, "w": 98, "h": 68 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0081.png", + "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0082.png", + "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0084.png", + "frame": { "x": 1, "y": 136, "w": 94, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0085.png", + "frame": { "x": 95, "y": 72, "w": 96, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 12, "w": 96, "h": 63 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0086.png", + "frame": { "x": 381, "y": 1, "w": 97, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 97, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0087.png", + "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0088.png", + "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0089.png", + "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0090.png", + "frame": { "x": 191, "y": 136, "w": 94, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0091.png", + "frame": { "x": 95, "y": 135, "w": 96, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 96, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0092.png", + "frame": { "x": 572, "y": 67, "w": 99, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 99, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0093.png", + "frame": { "x": 284, "y": 205, "w": 95, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 11, "w": 95, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0094.png", + "frame": { "x": 1, "y": 199, "w": 91, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 12, "w": 91, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0095.png", + "frame": { "x": 1, "y": 259, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 12, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0096.png", + "frame": { "x": 193, "y": 69, "w": 95, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 5, "w": 95, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0097.png", + "frame": { "x": 285, "y": 141, "w": 92, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 8, "w": 92, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0098.png", + "frame": { "x": 96, "y": 318, "w": 89, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 22, "y": 14, "w": 89, "h": 58 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0099.png", + "frame": { "x": 564, "y": 261, "w": 92, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 19, "y": 14, "w": 92, "h": 58 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.12-x64", + "image": "693.png", + "format": "I8", + "size": { "w": 672, "h": 377 }, + "scale": "1" + } } diff --git a/public/images/pokemon/back/693.png b/public/images/pokemon/back/693.png index 2386eb03683..1ff5db69b60 100644 Binary files a/public/images/pokemon/back/693.png and b/public/images/pokemon/back/693.png differ diff --git a/public/images/pokemon/back/694.png b/public/images/pokemon/back/694.png index d5f2f5f9563..4e0e06972b0 100644 Binary files a/public/images/pokemon/back/694.png and b/public/images/pokemon/back/694.png differ diff --git a/public/images/pokemon/back/696.png b/public/images/pokemon/back/696.png index a8ba08aa6ab..607e8526e9f 100644 Binary files a/public/images/pokemon/back/696.png and b/public/images/pokemon/back/696.png differ diff --git a/public/images/pokemon/back/697.png b/public/images/pokemon/back/697.png index c3883f76b72..d3dfa2bb546 100644 Binary files a/public/images/pokemon/back/697.png and b/public/images/pokemon/back/697.png differ diff --git a/public/images/pokemon/back/698.png b/public/images/pokemon/back/698.png index cd49968a7cd..cf69ac133eb 100644 Binary files a/public/images/pokemon/back/698.png and b/public/images/pokemon/back/698.png differ diff --git a/public/images/pokemon/back/699.png b/public/images/pokemon/back/699.png index 25693e4a3f9..84ddc0599cc 100644 Binary files a/public/images/pokemon/back/699.png and b/public/images/pokemon/back/699.png differ diff --git a/public/images/pokemon/back/700.png b/public/images/pokemon/back/700.png index 229c786c67e..2583419fcb0 100644 Binary files a/public/images/pokemon/back/700.png and b/public/images/pokemon/back/700.png differ diff --git a/public/images/pokemon/back/702.png b/public/images/pokemon/back/702.png index 2b1d490b71a..a42e8767948 100644 Binary files a/public/images/pokemon/back/702.png and b/public/images/pokemon/back/702.png differ diff --git a/public/images/pokemon/back/703.png b/public/images/pokemon/back/703.png index b5b35e07027..da6bd1456ad 100644 Binary files a/public/images/pokemon/back/703.png and b/public/images/pokemon/back/703.png differ diff --git a/public/images/pokemon/back/707.png b/public/images/pokemon/back/707.png index 83ca7298f45..19e64de086b 100644 Binary files a/public/images/pokemon/back/707.png and b/public/images/pokemon/back/707.png differ diff --git a/public/images/pokemon/back/708.png b/public/images/pokemon/back/708.png index 9e094aa7122..478d1414889 100644 Binary files a/public/images/pokemon/back/708.png and b/public/images/pokemon/back/708.png differ diff --git a/public/images/pokemon/back/71.png b/public/images/pokemon/back/71.png index 24a546f6166..b3b0c04afee 100644 Binary files a/public/images/pokemon/back/71.png and b/public/images/pokemon/back/71.png differ diff --git a/public/images/pokemon/back/714.png b/public/images/pokemon/back/714.png index afe2bce45a4..c0b3040d0fc 100644 Binary files a/public/images/pokemon/back/714.png and b/public/images/pokemon/back/714.png differ diff --git a/public/images/pokemon/back/715.png b/public/images/pokemon/back/715.png index 624780ff0c6..16eb828ac33 100644 Binary files a/public/images/pokemon/back/715.png and b/public/images/pokemon/back/715.png differ diff --git a/public/images/pokemon/back/716-active.png b/public/images/pokemon/back/716-active.png index c3276ec81b6..7385823eadc 100644 Binary files a/public/images/pokemon/back/716-active.png and b/public/images/pokemon/back/716-active.png differ diff --git a/public/images/pokemon/back/716-neutral.png b/public/images/pokemon/back/716-neutral.png index 73ebb3231cc..7410b1e9281 100644 Binary files a/public/images/pokemon/back/716-neutral.png and b/public/images/pokemon/back/716-neutral.png differ diff --git a/public/images/pokemon/back/718-10.png b/public/images/pokemon/back/718-10.png index 2f3b211e9a6..7cd832997d5 100644 Binary files a/public/images/pokemon/back/718-10.png and b/public/images/pokemon/back/718-10.png differ diff --git a/public/images/pokemon/back/718.png b/public/images/pokemon/back/718.png index ce48ca205b4..c6287112f5c 100644 Binary files a/public/images/pokemon/back/718.png and b/public/images/pokemon/back/718.png differ diff --git a/public/images/pokemon/back/719.png b/public/images/pokemon/back/719.png index 1c275f3241d..b980b7a11d2 100644 Binary files a/public/images/pokemon/back/719.png and b/public/images/pokemon/back/719.png differ diff --git a/public/images/pokemon/back/728.png b/public/images/pokemon/back/728.png index fa04ca2bdbb..2995fb995f4 100644 Binary files a/public/images/pokemon/back/728.png and b/public/images/pokemon/back/728.png differ diff --git a/public/images/pokemon/back/730.png b/public/images/pokemon/back/730.png index 5c150efb08c..6be8e9f4453 100644 Binary files a/public/images/pokemon/back/730.png and b/public/images/pokemon/back/730.png differ diff --git a/public/images/pokemon/back/746-school.png b/public/images/pokemon/back/746-school.png index 1884123d82e..9b8852325bc 100644 Binary files a/public/images/pokemon/back/746-school.png and b/public/images/pokemon/back/746-school.png differ diff --git a/public/images/pokemon/back/746.png b/public/images/pokemon/back/746.png index cb424c9fbe1..9383a5f4d1f 100644 Binary files a/public/images/pokemon/back/746.png and b/public/images/pokemon/back/746.png differ diff --git a/public/images/pokemon/back/749.png b/public/images/pokemon/back/749.png index 0f28ee107c9..c349a91078f 100644 Binary files a/public/images/pokemon/back/749.png and b/public/images/pokemon/back/749.png differ diff --git a/public/images/pokemon/back/750.png b/public/images/pokemon/back/750.png index 62015e8714e..7c702da4923 100644 Binary files a/public/images/pokemon/back/750.png and b/public/images/pokemon/back/750.png differ diff --git a/public/images/pokemon/back/753.json b/public/images/pokemon/back/753.json index 128b96a0337..dbd9fd7d635 100644 --- a/public/images/pokemon/back/753.json +++ b/public/images/pokemon/back/753.json @@ -4,29 +4,2570 @@ "image": "753.png", "format": "RGBA8888", "size": { - "w": 45, - "h": 45 + "w": 140, + "h": 140 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0019.png", "rotated": false, - "trimmed": false, + "trimmed": true, "sourceSize": { - "w": 28, - "h": 45 + "w": 31, + "h": 53 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 28, - "h": 45 + "y": 5, + "w": 31, + "h": 47 }, "frame": { "x": 0, "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0101.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0120.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0121.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0122.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 7, + "w": 30, + "h": 46 + }, + "frame": { + "x": 31, + "y": 94, + "w": 30, + "h": 46 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 7, + "w": 30, + "h": 46 + }, + "frame": { + "x": 31, + "y": 94, + "w": 30, + "h": 46 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, "h": 45 } } @@ -36,6 +2577,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:36128f93c74cadc1ff97b730d6db648e:070937eb6d31e4dff84a2f739fd6c444:16c1874bc814253ca78e52a99a340ff7$" + "smartupdate": "$TexturePacker:SmartUpdate:4209223453e7dabb3758c23bb26a3f91:234fdcf4efd83f52e8b51f13ec19a55c:16c1874bc814253ca78e52a99a340ff7$" } } diff --git a/public/images/pokemon/back/753.png b/public/images/pokemon/back/753.png index 5c5218546e7..aa1fb706745 100644 Binary files a/public/images/pokemon/back/753.png and b/public/images/pokemon/back/753.png differ diff --git a/public/images/pokemon/back/754.json b/public/images/pokemon/back/754.json index 125ebed161c..86abaac1814 100644 --- a/public/images/pokemon/back/754.json +++ b/public/images/pokemon/back/754.json @@ -4,29 +4,1100 @@ "image": "754.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 222, + "h": 222 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0036.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 36, + "w": 92, "h": 68 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 36, + "w": 92, "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 36, + "w": 92, + "h": 68 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 92, + "h": 68 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 92, + "h": 68 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 92, + "h": 68 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 92, + "h": 68 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 88, + "h": 68 + }, + "frame": { + "x": 92, + "y": 68, + "w": 88, + "h": 68 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 88, + "h": 68 + }, + "frame": { + "x": 92, + "y": 68, + "w": 88, + "h": 68 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 40, + "h": 68 + }, + "frame": { + "x": 180, + "y": 68, + "w": 40, + "h": 68 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 40, + "h": 68 + }, + "frame": { + "x": 180, + "y": 68, + "w": 40, + "h": 68 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, "h": 68 } } @@ -36,6 +1107,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2774f1d6c293a696177c371795e6ba38:d35951afed6391313aa94000563ae143:f7cb0e9bb3adbe899317e6e2e306035d$" + "smartupdate": "$TexturePacker:SmartUpdate:3adad944aac48ad53efa41f8c9916d1c:ea15b954875ad08814f50cbbf849c1b3:f7cb0e9bb3adbe899317e6e2e306035d$" } } diff --git a/public/images/pokemon/back/754.png b/public/images/pokemon/back/754.png index ec44dc63266..66bd6a1b975 100644 Binary files a/public/images/pokemon/back/754.png and b/public/images/pokemon/back/754.png differ diff --git a/public/images/pokemon/back/772.png b/public/images/pokemon/back/772.png index 059671261d7..2150d894290 100644 Binary files a/public/images/pokemon/back/772.png and b/public/images/pokemon/back/772.png differ diff --git a/public/images/pokemon/back/773-bug.png b/public/images/pokemon/back/773-bug.png index d0bb3a6df96..0f26f93a982 100644 Binary files a/public/images/pokemon/back/773-bug.png and b/public/images/pokemon/back/773-bug.png differ diff --git a/public/images/pokemon/back/773-dark.png b/public/images/pokemon/back/773-dark.png index 38cbb671d36..22fe28984a4 100644 Binary files a/public/images/pokemon/back/773-dark.png and b/public/images/pokemon/back/773-dark.png differ diff --git a/public/images/pokemon/back/773-dragon.png b/public/images/pokemon/back/773-dragon.png index 7853bacc32a..e6499c19d9c 100644 Binary files a/public/images/pokemon/back/773-dragon.png and b/public/images/pokemon/back/773-dragon.png differ diff --git a/public/images/pokemon/back/773-electric.png b/public/images/pokemon/back/773-electric.png index 69fa1e7a569..a3bd5b3c23a 100644 Binary files a/public/images/pokemon/back/773-electric.png and b/public/images/pokemon/back/773-electric.png differ diff --git a/public/images/pokemon/back/773-fairy.png b/public/images/pokemon/back/773-fairy.png index 4ee19812296..4169b255d9d 100644 Binary files a/public/images/pokemon/back/773-fairy.png and b/public/images/pokemon/back/773-fairy.png differ diff --git a/public/images/pokemon/back/773-fighting.png b/public/images/pokemon/back/773-fighting.png index af01b260684..224014faa5e 100644 Binary files a/public/images/pokemon/back/773-fighting.png and b/public/images/pokemon/back/773-fighting.png differ diff --git a/public/images/pokemon/back/773-fire.png b/public/images/pokemon/back/773-fire.png index ee604c52a8e..5acb2e328b5 100644 Binary files a/public/images/pokemon/back/773-fire.png and b/public/images/pokemon/back/773-fire.png differ diff --git a/public/images/pokemon/back/773-flying.png b/public/images/pokemon/back/773-flying.png index 70101d4ce73..1a8a441d1a7 100644 Binary files a/public/images/pokemon/back/773-flying.png and b/public/images/pokemon/back/773-flying.png differ diff --git a/public/images/pokemon/back/773-ghost.png b/public/images/pokemon/back/773-ghost.png index 717ce1bd5b2..6aa681097c3 100644 Binary files a/public/images/pokemon/back/773-ghost.png and b/public/images/pokemon/back/773-ghost.png differ diff --git a/public/images/pokemon/back/773-grass.png b/public/images/pokemon/back/773-grass.png index 0df3177ede0..947637af06f 100644 Binary files a/public/images/pokemon/back/773-grass.png and b/public/images/pokemon/back/773-grass.png differ diff --git a/public/images/pokemon/back/773-ground.png b/public/images/pokemon/back/773-ground.png index 247fc277f24..e38f3ca635f 100644 Binary files a/public/images/pokemon/back/773-ground.png and b/public/images/pokemon/back/773-ground.png differ diff --git a/public/images/pokemon/back/773-ice.png b/public/images/pokemon/back/773-ice.png index 9d336ec248f..77b8e2d961c 100644 Binary files a/public/images/pokemon/back/773-ice.png and b/public/images/pokemon/back/773-ice.png differ diff --git a/public/images/pokemon/back/773-poison.png b/public/images/pokemon/back/773-poison.png index 68af7bee299..ab3e266c157 100644 Binary files a/public/images/pokemon/back/773-poison.png and b/public/images/pokemon/back/773-poison.png differ diff --git a/public/images/pokemon/back/773-psychic.png b/public/images/pokemon/back/773-psychic.png index e9f37a2f583..50d63a22313 100644 Binary files a/public/images/pokemon/back/773-psychic.png and b/public/images/pokemon/back/773-psychic.png differ diff --git a/public/images/pokemon/back/773-rock.png b/public/images/pokemon/back/773-rock.png index 79eb24d99bb..0e87342dcc2 100644 Binary files a/public/images/pokemon/back/773-rock.png and b/public/images/pokemon/back/773-rock.png differ diff --git a/public/images/pokemon/back/773-steel.png b/public/images/pokemon/back/773-steel.png index f686581903b..f4993de50b4 100644 Binary files a/public/images/pokemon/back/773-steel.png and b/public/images/pokemon/back/773-steel.png differ diff --git a/public/images/pokemon/back/773-water.png b/public/images/pokemon/back/773-water.png index f9a5afacd7e..38c84f07a66 100644 Binary files a/public/images/pokemon/back/773-water.png and b/public/images/pokemon/back/773-water.png differ diff --git a/public/images/pokemon/back/773.png b/public/images/pokemon/back/773.png index 7e264ef335f..7a3d335a677 100644 Binary files a/public/images/pokemon/back/773.png and b/public/images/pokemon/back/773.png differ diff --git a/public/images/pokemon/back/774-blue-meteor.png b/public/images/pokemon/back/774-blue-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-blue-meteor.png and b/public/images/pokemon/back/774-blue-meteor.png differ diff --git a/public/images/pokemon/back/774-blue.png b/public/images/pokemon/back/774-blue.png index 5da4c0d9bb9..2e5c1868248 100644 Binary files a/public/images/pokemon/back/774-blue.png and b/public/images/pokemon/back/774-blue.png differ diff --git a/public/images/pokemon/back/774-green-meteor.png b/public/images/pokemon/back/774-green-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-green-meteor.png and b/public/images/pokemon/back/774-green-meteor.png differ diff --git a/public/images/pokemon/back/774-green.png b/public/images/pokemon/back/774-green.png index 21e50a43f18..021a23dc8d6 100644 Binary files a/public/images/pokemon/back/774-green.png and b/public/images/pokemon/back/774-green.png differ diff --git a/public/images/pokemon/back/774-indigo-meteor.png b/public/images/pokemon/back/774-indigo-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-indigo-meteor.png and b/public/images/pokemon/back/774-indigo-meteor.png differ diff --git a/public/images/pokemon/back/774-indigo.png b/public/images/pokemon/back/774-indigo.png index 329b3a3957c..97c38c56cba 100644 Binary files a/public/images/pokemon/back/774-indigo.png and b/public/images/pokemon/back/774-indigo.png differ diff --git a/public/images/pokemon/back/774-orange-meteor.png b/public/images/pokemon/back/774-orange-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-orange-meteor.png and b/public/images/pokemon/back/774-orange-meteor.png differ diff --git a/public/images/pokemon/back/774-orange.png b/public/images/pokemon/back/774-orange.png index 65e9c25e52d..6cc8f96b9f5 100644 Binary files a/public/images/pokemon/back/774-orange.png and b/public/images/pokemon/back/774-orange.png differ diff --git a/public/images/pokemon/back/774-red-meteor.png b/public/images/pokemon/back/774-red-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-red-meteor.png and b/public/images/pokemon/back/774-red-meteor.png differ diff --git a/public/images/pokemon/back/774-red.png b/public/images/pokemon/back/774-red.png index 20e823dc0af..d0826d29a9a 100644 Binary files a/public/images/pokemon/back/774-red.png and b/public/images/pokemon/back/774-red.png differ diff --git a/public/images/pokemon/back/774-violet-meteor.png b/public/images/pokemon/back/774-violet-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-violet-meteor.png and b/public/images/pokemon/back/774-violet-meteor.png differ diff --git a/public/images/pokemon/back/774-violet.png b/public/images/pokemon/back/774-violet.png index 6e4cb3156e3..1859be3a9aa 100644 Binary files a/public/images/pokemon/back/774-violet.png and b/public/images/pokemon/back/774-violet.png differ diff --git a/public/images/pokemon/back/774-yellow-meteor.png b/public/images/pokemon/back/774-yellow-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774-yellow-meteor.png and b/public/images/pokemon/back/774-yellow-meteor.png differ diff --git a/public/images/pokemon/back/774-yellow.png b/public/images/pokemon/back/774-yellow.png index e59d7027e4d..fc98e7cf045 100644 Binary files a/public/images/pokemon/back/774-yellow.png and b/public/images/pokemon/back/774-yellow.png differ diff --git a/public/images/pokemon/back/774.png b/public/images/pokemon/back/774.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/774.png and b/public/images/pokemon/back/774.png differ diff --git a/public/images/pokemon/back/782.png b/public/images/pokemon/back/782.png index eb222077d81..ffc532dd720 100644 Binary files a/public/images/pokemon/back/782.png and b/public/images/pokemon/back/782.png differ diff --git a/public/images/pokemon/back/783.png b/public/images/pokemon/back/783.png index ff8c7ca052f..3edebf9085b 100644 Binary files a/public/images/pokemon/back/783.png and b/public/images/pokemon/back/783.png differ diff --git a/public/images/pokemon/back/784.png b/public/images/pokemon/back/784.png index 08b953b3351..0020ed3144f 100644 Binary files a/public/images/pokemon/back/784.png and b/public/images/pokemon/back/784.png differ diff --git a/public/images/pokemon/back/798.png b/public/images/pokemon/back/798.png index 262f0b4fd79..f0f40a5673c 100644 Binary files a/public/images/pokemon/back/798.png and b/public/images/pokemon/back/798.png differ diff --git a/public/images/pokemon/back/80-mega.png b/public/images/pokemon/back/80-mega.png index 005e2a813f3..9f50765f221 100644 Binary files a/public/images/pokemon/back/80-mega.png and b/public/images/pokemon/back/80-mega.png differ diff --git a/public/images/pokemon/back/80.png b/public/images/pokemon/back/80.png index f993d4b695b..0a768d6b7bf 100644 Binary files a/public/images/pokemon/back/80.png and b/public/images/pokemon/back/80.png differ diff --git a/public/images/pokemon/back/802-zenith.png b/public/images/pokemon/back/802-zenith.png index e38e295be75..cb7c829370c 100644 Binary files a/public/images/pokemon/back/802-zenith.png and b/public/images/pokemon/back/802-zenith.png differ diff --git a/public/images/pokemon/back/818-gigantamax.png b/public/images/pokemon/back/818-gigantamax.png index 22b6e71281a..1b2c81f1196 100644 Binary files a/public/images/pokemon/back/818-gigantamax.png and b/public/images/pokemon/back/818-gigantamax.png differ diff --git a/public/images/pokemon/back/821.png b/public/images/pokemon/back/821.png index 24e0edd705d..31794f20ccf 100644 Binary files a/public/images/pokemon/back/821.png and b/public/images/pokemon/back/821.png differ diff --git a/public/images/pokemon/back/840.png b/public/images/pokemon/back/840.png index a247dc33939..106745c1040 100644 Binary files a/public/images/pokemon/back/840.png and b/public/images/pokemon/back/840.png differ diff --git a/public/images/pokemon/back/841-gigantamax.png b/public/images/pokemon/back/841-gigantamax.png index 7c7e9e442b5..47b5f487795 100644 Binary files a/public/images/pokemon/back/841-gigantamax.png and b/public/images/pokemon/back/841-gigantamax.png differ diff --git a/public/images/pokemon/back/841.png b/public/images/pokemon/back/841.png index 7b083594ab0..5022b304de6 100644 Binary files a/public/images/pokemon/back/841.png and b/public/images/pokemon/back/841.png differ diff --git a/public/images/pokemon/back/842-gigantamax.png b/public/images/pokemon/back/842-gigantamax.png index 7c7e9e442b5..47b5f487795 100644 Binary files a/public/images/pokemon/back/842-gigantamax.png and b/public/images/pokemon/back/842-gigantamax.png differ diff --git a/public/images/pokemon/back/842.png b/public/images/pokemon/back/842.png index f6f72d57b06..2f727a91edc 100644 Binary files a/public/images/pokemon/back/842.png and b/public/images/pokemon/back/842.png differ diff --git a/public/images/pokemon/back/867.png b/public/images/pokemon/back/867.png index ae631607ef2..c4079e1c2f7 100644 Binary files a/public/images/pokemon/back/867.png and b/public/images/pokemon/back/867.png differ diff --git a/public/images/pokemon/back/869-caramel-swirl.png b/public/images/pokemon/back/869-caramel-swirl.png index 74556910bc1..7f4c07a613c 100644 Binary files a/public/images/pokemon/back/869-caramel-swirl.png and b/public/images/pokemon/back/869-caramel-swirl.png differ diff --git a/public/images/pokemon/back/869-lemon-cream.png b/public/images/pokemon/back/869-lemon-cream.png index 749e7c7aa65..65ec2c1bb91 100644 Binary files a/public/images/pokemon/back/869-lemon-cream.png and b/public/images/pokemon/back/869-lemon-cream.png differ diff --git a/public/images/pokemon/back/869-matcha-cream.png b/public/images/pokemon/back/869-matcha-cream.png index 32570610f13..aada3b684de 100644 Binary files a/public/images/pokemon/back/869-matcha-cream.png and b/public/images/pokemon/back/869-matcha-cream.png differ diff --git a/public/images/pokemon/back/869-mint-cream.png b/public/images/pokemon/back/869-mint-cream.png index ec1976d3568..4d92c9fa403 100644 Binary files a/public/images/pokemon/back/869-mint-cream.png and b/public/images/pokemon/back/869-mint-cream.png differ diff --git a/public/images/pokemon/back/869-rainbow-swirl.png b/public/images/pokemon/back/869-rainbow-swirl.png index 5454202ef27..7a25ebab09a 100644 Binary files a/public/images/pokemon/back/869-rainbow-swirl.png and b/public/images/pokemon/back/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/back/869-ruby-cream.png b/public/images/pokemon/back/869-ruby-cream.png index 00cbd472026..61197abb9df 100644 Binary files a/public/images/pokemon/back/869-ruby-cream.png and b/public/images/pokemon/back/869-ruby-cream.png differ diff --git a/public/images/pokemon/back/869-ruby-swirl.png b/public/images/pokemon/back/869-ruby-swirl.png index 96f91ba6c52..b48ce9a43fa 100644 Binary files a/public/images/pokemon/back/869-ruby-swirl.png and b/public/images/pokemon/back/869-ruby-swirl.png differ diff --git a/public/images/pokemon/back/869-salted-cream.png b/public/images/pokemon/back/869-salted-cream.png index 7b81e6e7fa3..a95b4705ef4 100644 Binary files a/public/images/pokemon/back/869-salted-cream.png and b/public/images/pokemon/back/869-salted-cream.png differ diff --git a/public/images/pokemon/back/871.png b/public/images/pokemon/back/871.png index 73eb65ab089..7cf4a0718be 100644 Binary files a/public/images/pokemon/back/871.png and b/public/images/pokemon/back/871.png differ diff --git a/public/images/pokemon/back/876-female.png b/public/images/pokemon/back/876-female.png index 5c25cc2f977..89ca155c118 100644 Binary files a/public/images/pokemon/back/876-female.png and b/public/images/pokemon/back/876-female.png differ diff --git a/public/images/pokemon/back/876.png b/public/images/pokemon/back/876.png index 1fc71387c62..c9c8c22e7ed 100644 Binary files a/public/images/pokemon/back/876.png and b/public/images/pokemon/back/876.png differ diff --git a/public/images/pokemon/back/880.png b/public/images/pokemon/back/880.png index d175b340bb8..e2ce3ec6d02 100644 Binary files a/public/images/pokemon/back/880.png and b/public/images/pokemon/back/880.png differ diff --git a/public/images/pokemon/back/881.png b/public/images/pokemon/back/881.png index 60ab60a9aa1..33be638c1d2 100644 Binary files a/public/images/pokemon/back/881.png and b/public/images/pokemon/back/881.png differ diff --git a/public/images/pokemon/back/882.png b/public/images/pokemon/back/882.png index 0675270f6e9..3ae005ebe84 100644 Binary files a/public/images/pokemon/back/882.png and b/public/images/pokemon/back/882.png differ diff --git a/public/images/pokemon/back/894.png b/public/images/pokemon/back/894.png index b4cc4974ce2..35a85d33817 100644 Binary files a/public/images/pokemon/back/894.png and b/public/images/pokemon/back/894.png differ diff --git a/public/images/pokemon/back/896.png b/public/images/pokemon/back/896.png index f989d532c8b..c75e14ac6dc 100644 Binary files a/public/images/pokemon/back/896.png and b/public/images/pokemon/back/896.png differ diff --git a/public/images/pokemon/back/898-ice.png b/public/images/pokemon/back/898-ice.png index b279a7416ed..41148f937bf 100644 Binary files a/public/images/pokemon/back/898-ice.png and b/public/images/pokemon/back/898-ice.png differ diff --git a/public/images/pokemon/back/898-shadow.png b/public/images/pokemon/back/898-shadow.png index 0491ba74c86..2c84656eb8e 100644 Binary files a/public/images/pokemon/back/898-shadow.png and b/public/images/pokemon/back/898-shadow.png differ diff --git a/public/images/pokemon/back/898.png b/public/images/pokemon/back/898.png index fafc2947908..df1dc086d50 100644 Binary files a/public/images/pokemon/back/898.png and b/public/images/pokemon/back/898.png differ diff --git a/public/images/pokemon/back/913.png b/public/images/pokemon/back/913.png index 4a08acae4ea..decb3a3eaf8 100644 Binary files a/public/images/pokemon/back/913.png and b/public/images/pokemon/back/913.png differ diff --git a/public/images/pokemon/back/914.png b/public/images/pokemon/back/914.png index 221a91d018a..f051bc5c004 100644 Binary files a/public/images/pokemon/back/914.png and b/public/images/pokemon/back/914.png differ diff --git a/public/images/pokemon/back/945.png b/public/images/pokemon/back/945.png index 6359f2cd77a..9ef867fac47 100644 Binary files a/public/images/pokemon/back/945.png and b/public/images/pokemon/back/945.png differ diff --git a/public/images/pokemon/back/974.png b/public/images/pokemon/back/974.png index 76d87de26e0..b4731c23b76 100644 Binary files a/public/images/pokemon/back/974.png and b/public/images/pokemon/back/974.png differ diff --git a/public/images/pokemon/back/975.png b/public/images/pokemon/back/975.png index c7cd7b92e70..0efca7749b8 100644 Binary files a/public/images/pokemon/back/975.png and b/public/images/pokemon/back/975.png differ diff --git a/public/images/pokemon/back/981.png b/public/images/pokemon/back/981.png index 6744ddcf6b9..c6df3452c42 100644 Binary files a/public/images/pokemon/back/981.png and b/public/images/pokemon/back/981.png differ diff --git a/public/images/pokemon/back/987.png b/public/images/pokemon/back/987.png index ab4e628de28..322242a19e9 100644 Binary files a/public/images/pokemon/back/987.png and b/public/images/pokemon/back/987.png differ diff --git a/public/images/pokemon/back/female/178.png b/public/images/pokemon/back/female/178.png index bf4e727088f..290dccedc30 100644 Binary files a/public/images/pokemon/back/female/178.png and b/public/images/pokemon/back/female/178.png differ diff --git a/public/images/pokemon/back/female/186.png b/public/images/pokemon/back/female/186.png index 2156157cf8d..bce2e127339 100644 Binary files a/public/images/pokemon/back/female/186.png and b/public/images/pokemon/back/female/186.png differ diff --git a/public/images/pokemon/back/female/190.png b/public/images/pokemon/back/female/190.png index 1028c6410a6..ba48d02d0bb 100644 Binary files a/public/images/pokemon/back/female/190.png and b/public/images/pokemon/back/female/190.png differ diff --git a/public/images/pokemon/back/female/198.png b/public/images/pokemon/back/female/198.png index 01489a05fb0..912dd5a21d4 100644 Binary files a/public/images/pokemon/back/female/198.png and b/public/images/pokemon/back/female/198.png differ diff --git a/public/images/pokemon/back/female/229.png b/public/images/pokemon/back/female/229.png index f3bb6b6f2f6..67639337926 100644 Binary files a/public/images/pokemon/back/female/229.png and b/public/images/pokemon/back/female/229.png differ diff --git a/public/images/pokemon/back/female/232.png b/public/images/pokemon/back/female/232.png index 1b467668241..dcf8c92f4c4 100644 Binary files a/public/images/pokemon/back/female/232.png and b/public/images/pokemon/back/female/232.png differ diff --git a/public/images/pokemon/back/female/25-beauty-cosplay.png b/public/images/pokemon/back/female/25-beauty-cosplay.png index 161cc301f7b..15c386fafaa 100644 Binary files a/public/images/pokemon/back/female/25-beauty-cosplay.png and b/public/images/pokemon/back/female/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/back/female/25-cool-cosplay.png b/public/images/pokemon/back/female/25-cool-cosplay.png index d10328785c8..91148e90e1a 100644 Binary files a/public/images/pokemon/back/female/25-cool-cosplay.png and b/public/images/pokemon/back/female/25-cool-cosplay.png differ diff --git a/public/images/pokemon/back/female/25-cosplay.png b/public/images/pokemon/back/female/25-cosplay.png index 644aec70f50..e65ea5ffd09 100644 Binary files a/public/images/pokemon/back/female/25-cosplay.png and b/public/images/pokemon/back/female/25-cosplay.png differ diff --git a/public/images/pokemon/back/female/25-cute-cosplay.png b/public/images/pokemon/back/female/25-cute-cosplay.png index 552d816e142..b5dd2c011c9 100644 Binary files a/public/images/pokemon/back/female/25-cute-cosplay.png and b/public/images/pokemon/back/female/25-cute-cosplay.png differ diff --git a/public/images/pokemon/back/female/25-partner.png b/public/images/pokemon/back/female/25-partner.png index e65e58ec131..7494d151bc9 100644 Binary files a/public/images/pokemon/back/female/25-partner.png and b/public/images/pokemon/back/female/25-partner.png differ diff --git a/public/images/pokemon/back/female/25-smart-cosplay.png b/public/images/pokemon/back/female/25-smart-cosplay.png index c84c0b556aa..59b59b6fb5e 100644 Binary files a/public/images/pokemon/back/female/25-smart-cosplay.png and b/public/images/pokemon/back/female/25-smart-cosplay.png differ diff --git a/public/images/pokemon/back/female/25-tough-cosplay.png b/public/images/pokemon/back/female/25-tough-cosplay.png index 73be0c8fb85..040676418c3 100644 Binary files a/public/images/pokemon/back/female/25-tough-cosplay.png and b/public/images/pokemon/back/female/25-tough-cosplay.png differ diff --git a/public/images/pokemon/back/female/25.png b/public/images/pokemon/back/female/25.png index e65e58ec131..7494d151bc9 100644 Binary files a/public/images/pokemon/back/female/25.png and b/public/images/pokemon/back/female/25.png differ diff --git a/public/images/pokemon/back/female/256.png b/public/images/pokemon/back/female/256.png index 92612d4ccdc..933290f96c5 100644 Binary files a/public/images/pokemon/back/female/256.png and b/public/images/pokemon/back/female/256.png differ diff --git a/public/images/pokemon/back/female/257.png b/public/images/pokemon/back/female/257.png index 7b8171f39c0..ca9540a209d 100644 Binary files a/public/images/pokemon/back/female/257.png and b/public/images/pokemon/back/female/257.png differ diff --git a/public/images/pokemon/back/female/26.png b/public/images/pokemon/back/female/26.png index 2a6a3e41b2f..7fbb2447e70 100644 Binary files a/public/images/pokemon/back/female/26.png and b/public/images/pokemon/back/female/26.png differ diff --git a/public/images/pokemon/back/female/3.png b/public/images/pokemon/back/female/3.png index ef103db8ce0..8831d22da78 100644 Binary files a/public/images/pokemon/back/female/3.png and b/public/images/pokemon/back/female/3.png differ diff --git a/public/images/pokemon/back/female/332.png b/public/images/pokemon/back/female/332.png index b251a35e468..21093f48984 100644 Binary files a/public/images/pokemon/back/female/332.png and b/public/images/pokemon/back/female/332.png differ diff --git a/public/images/pokemon/back/female/396.png b/public/images/pokemon/back/female/396.png index d18d4c1a99a..9785978eb21 100644 Binary files a/public/images/pokemon/back/female/396.png and b/public/images/pokemon/back/female/396.png differ diff --git a/public/images/pokemon/back/female/397.png b/public/images/pokemon/back/female/397.png index 32768daead2..86cf2ea447a 100644 Binary files a/public/images/pokemon/back/female/397.png and b/public/images/pokemon/back/female/397.png differ diff --git a/public/images/pokemon/back/female/398.png b/public/images/pokemon/back/female/398.png index bf296c54b91..14653cc3630 100644 Binary files a/public/images/pokemon/back/female/398.png and b/public/images/pokemon/back/female/398.png differ diff --git a/public/images/pokemon/back/female/399.png b/public/images/pokemon/back/female/399.png index 888551b5f0a..8ad802918f3 100644 Binary files a/public/images/pokemon/back/female/399.png and b/public/images/pokemon/back/female/399.png differ diff --git a/public/images/pokemon/back/female/401.png b/public/images/pokemon/back/female/401.png index 8ebce5ff353..4cf4c7c433c 100644 Binary files a/public/images/pokemon/back/female/401.png and b/public/images/pokemon/back/female/401.png differ diff --git a/public/images/pokemon/back/female/402.png b/public/images/pokemon/back/female/402.png index 6e88b492759..8f6e7429dfe 100644 Binary files a/public/images/pokemon/back/female/402.png and b/public/images/pokemon/back/female/402.png differ diff --git a/public/images/pokemon/back/female/403.png b/public/images/pokemon/back/female/403.png index b730b32f6ee..0f1b5d32893 100644 Binary files a/public/images/pokemon/back/female/403.png and b/public/images/pokemon/back/female/403.png differ diff --git a/public/images/pokemon/back/female/404.png b/public/images/pokemon/back/female/404.png index 27602ee0439..1a610dc6be9 100644 Binary files a/public/images/pokemon/back/female/404.png and b/public/images/pokemon/back/female/404.png differ diff --git a/public/images/pokemon/back/female/405.png b/public/images/pokemon/back/female/405.png index 1aa669e1fbd..a7b35dce444 100644 Binary files a/public/images/pokemon/back/female/405.png and b/public/images/pokemon/back/female/405.png differ diff --git a/public/images/pokemon/back/female/418.png b/public/images/pokemon/back/female/418.png index 1fc721cd534..36b9a29d313 100644 Binary files a/public/images/pokemon/back/female/418.png and b/public/images/pokemon/back/female/418.png differ diff --git a/public/images/pokemon/back/female/419.png b/public/images/pokemon/back/female/419.png index 22ac91c7208..8ade895f3b0 100644 Binary files a/public/images/pokemon/back/female/419.png and b/public/images/pokemon/back/female/419.png differ diff --git a/public/images/pokemon/back/female/424.png b/public/images/pokemon/back/female/424.png index b8128ba481b..082dd08656e 100644 Binary files a/public/images/pokemon/back/female/424.png and b/public/images/pokemon/back/female/424.png differ diff --git a/public/images/pokemon/back/female/456.png b/public/images/pokemon/back/female/456.png index 4c666b8cc19..9643a75e465 100644 Binary files a/public/images/pokemon/back/female/456.png and b/public/images/pokemon/back/female/456.png differ diff --git a/public/images/pokemon/back/female/457.png b/public/images/pokemon/back/female/457.png index 9f243381edc..b614380afb8 100644 Binary files a/public/images/pokemon/back/female/457.png and b/public/images/pokemon/back/female/457.png differ diff --git a/public/images/pokemon/back/shiny/1003.png b/public/images/pokemon/back/shiny/1003.png index fa50a1c8ffe..903e2b7fe70 100644 Binary files a/public/images/pokemon/back/shiny/1003.png and b/public/images/pokemon/back/shiny/1003.png differ diff --git a/public/images/pokemon/back/shiny/1008-ultimate-mode.png b/public/images/pokemon/back/shiny/1008-ultimate-mode.png index 09609b8a613..5b402ba8872 100644 Binary files a/public/images/pokemon/back/shiny/1008-ultimate-mode.png and b/public/images/pokemon/back/shiny/1008-ultimate-mode.png differ diff --git a/public/images/pokemon/back/shiny/1018.png b/public/images/pokemon/back/shiny/1018.png index a1dbb2f558f..39c8c1e0839 100644 Binary files a/public/images/pokemon/back/shiny/1018.png and b/public/images/pokemon/back/shiny/1018.png differ diff --git a/public/images/pokemon/back/shiny/1019.png b/public/images/pokemon/back/shiny/1019.png index a2c32635078..b0c821be5e7 100644 Binary files a/public/images/pokemon/back/shiny/1019.png and b/public/images/pokemon/back/shiny/1019.png differ diff --git a/public/images/pokemon/back/shiny/1024-stellar.png b/public/images/pokemon/back/shiny/1024-stellar.png index 0bb2993d857..b69f62ac3a2 100644 Binary files a/public/images/pokemon/back/shiny/1024-stellar.png and b/public/images/pokemon/back/shiny/1024-stellar.png differ diff --git a/public/images/pokemon/back/shiny/174.png b/public/images/pokemon/back/shiny/174.png index cc60a7b9e17..696d4814eff 100644 Binary files a/public/images/pokemon/back/shiny/174.png and b/public/images/pokemon/back/shiny/174.png differ diff --git a/public/images/pokemon/back/shiny/178.png b/public/images/pokemon/back/shiny/178.png index 4ea3e7ea3be..24500b3dd6c 100644 Binary files a/public/images/pokemon/back/shiny/178.png and b/public/images/pokemon/back/shiny/178.png differ diff --git a/public/images/pokemon/back/shiny/186.png b/public/images/pokemon/back/shiny/186.png index 336c3727346..ddac298b0f0 100644 Binary files a/public/images/pokemon/back/shiny/186.png and b/public/images/pokemon/back/shiny/186.png differ diff --git a/public/images/pokemon/back/shiny/190.png b/public/images/pokemon/back/shiny/190.png index a0a65c18c7f..d9aa9dc0ab0 100644 Binary files a/public/images/pokemon/back/shiny/190.png and b/public/images/pokemon/back/shiny/190.png differ diff --git a/public/images/pokemon/back/shiny/249.png b/public/images/pokemon/back/shiny/249.png index 066a38999e0..fa91b1d8775 100644 Binary files a/public/images/pokemon/back/shiny/249.png and b/public/images/pokemon/back/shiny/249.png differ diff --git a/public/images/pokemon/back/shiny/25-beauty-cosplay.png b/public/images/pokemon/back/shiny/25-beauty-cosplay.png index 83c9ba781fa..4ee0ea21804 100644 Binary files a/public/images/pokemon/back/shiny/25-beauty-cosplay.png and b/public/images/pokemon/back/shiny/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/25-cool-cosplay.png b/public/images/pokemon/back/shiny/25-cool-cosplay.png index f344443d9fe..990aefe3008 100644 Binary files a/public/images/pokemon/back/shiny/25-cool-cosplay.png and b/public/images/pokemon/back/shiny/25-cool-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/25-cosplay.png b/public/images/pokemon/back/shiny/25-cosplay.png index 4842c658550..dac91783d22 100644 Binary files a/public/images/pokemon/back/shiny/25-cosplay.png and b/public/images/pokemon/back/shiny/25-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/25-cute-cosplay.png b/public/images/pokemon/back/shiny/25-cute-cosplay.png index a37c9f981ae..db6a06f241f 100644 Binary files a/public/images/pokemon/back/shiny/25-cute-cosplay.png and b/public/images/pokemon/back/shiny/25-cute-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/25-smart-cosplay.png b/public/images/pokemon/back/shiny/25-smart-cosplay.png index a43f9331191..3fa04b9c45b 100644 Binary files a/public/images/pokemon/back/shiny/25-smart-cosplay.png and b/public/images/pokemon/back/shiny/25-smart-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/25-tough-cosplay.png b/public/images/pokemon/back/shiny/25-tough-cosplay.png index 9ba48aac9bb..03ed47da53f 100644 Binary files a/public/images/pokemon/back/shiny/25-tough-cosplay.png and b/public/images/pokemon/back/shiny/25-tough-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/257-mega.png b/public/images/pokemon/back/shiny/257-mega.png index 04603c4a5e0..b736b572077 100644 Binary files a/public/images/pokemon/back/shiny/257-mega.png and b/public/images/pokemon/back/shiny/257-mega.png differ diff --git a/public/images/pokemon/back/shiny/261.png b/public/images/pokemon/back/shiny/261.png index 3399736c315..053062c61e4 100644 Binary files a/public/images/pokemon/back/shiny/261.png and b/public/images/pokemon/back/shiny/261.png differ diff --git a/public/images/pokemon/back/shiny/262.png b/public/images/pokemon/back/shiny/262.png index 9e76bfed3fc..b057e3d3da9 100644 Binary files a/public/images/pokemon/back/shiny/262.png and b/public/images/pokemon/back/shiny/262.png differ diff --git a/public/images/pokemon/back/shiny/280.png b/public/images/pokemon/back/shiny/280.png index 17d519f6ea1..89221776c3c 100644 Binary files a/public/images/pokemon/back/shiny/280.png and b/public/images/pokemon/back/shiny/280.png differ diff --git a/public/images/pokemon/back/shiny/281.png b/public/images/pokemon/back/shiny/281.png index 642b9bb27bd..f35166f2abf 100644 Binary files a/public/images/pokemon/back/shiny/281.png and b/public/images/pokemon/back/shiny/281.png differ diff --git a/public/images/pokemon/back/shiny/282.png b/public/images/pokemon/back/shiny/282.png index cc8370730c0..4989206083a 100644 Binary files a/public/images/pokemon/back/shiny/282.png and b/public/images/pokemon/back/shiny/282.png differ diff --git a/public/images/pokemon/back/shiny/3-gigantamax.png b/public/images/pokemon/back/shiny/3-gigantamax.png index 24b79e4211e..f6ab7a8a801 100644 Binary files a/public/images/pokemon/back/shiny/3-gigantamax.png and b/public/images/pokemon/back/shiny/3-gigantamax.png differ diff --git a/public/images/pokemon/back/shiny/3.png b/public/images/pokemon/back/shiny/3.png index 890fce10821..67c8c57dff7 100644 Binary files a/public/images/pokemon/back/shiny/3.png and b/public/images/pokemon/back/shiny/3.png differ diff --git a/public/images/pokemon/back/shiny/303-mega.png b/public/images/pokemon/back/shiny/303-mega.png index 7097e527ddf..cd3fa4b5b90 100644 Binary files a/public/images/pokemon/back/shiny/303-mega.png and b/public/images/pokemon/back/shiny/303-mega.png differ diff --git a/public/images/pokemon/back/shiny/357.png b/public/images/pokemon/back/shiny/357.png index 783f4401b2d..d8d020fa3ff 100644 Binary files a/public/images/pokemon/back/shiny/357.png and b/public/images/pokemon/back/shiny/357.png differ diff --git a/public/images/pokemon/back/shiny/373-mega.png b/public/images/pokemon/back/shiny/373-mega.png index ce2c48a77b4..44f13359d92 100644 Binary files a/public/images/pokemon/back/shiny/373-mega.png and b/public/images/pokemon/back/shiny/373-mega.png differ diff --git a/public/images/pokemon/back/shiny/378.png b/public/images/pokemon/back/shiny/378.png index 7bb24f1edfe..b301be84485 100644 Binary files a/public/images/pokemon/back/shiny/378.png and b/public/images/pokemon/back/shiny/378.png differ diff --git a/public/images/pokemon/back/shiny/399.png b/public/images/pokemon/back/shiny/399.png index 245c7afeb99..c26dd555936 100644 Binary files a/public/images/pokemon/back/shiny/399.png and b/public/images/pokemon/back/shiny/399.png differ diff --git a/public/images/pokemon/back/shiny/401.png b/public/images/pokemon/back/shiny/401.png index ffa6eba7a26..b56ea173d20 100644 Binary files a/public/images/pokemon/back/shiny/401.png and b/public/images/pokemon/back/shiny/401.png differ diff --git a/public/images/pokemon/back/shiny/4080.png b/public/images/pokemon/back/shiny/4080.png index 4f214c399b8..e13f463515a 100644 Binary files a/public/images/pokemon/back/shiny/4080.png and b/public/images/pokemon/back/shiny/4080.png differ diff --git a/public/images/pokemon/back/shiny/4144.png b/public/images/pokemon/back/shiny/4144.png index 0554889b35d..1cd26dcded8 100644 Binary files a/public/images/pokemon/back/shiny/4144.png and b/public/images/pokemon/back/shiny/4144.png differ diff --git a/public/images/pokemon/back/shiny/4145.png b/public/images/pokemon/back/shiny/4145.png index 6d970b27913..3ba60f080d5 100644 Binary files a/public/images/pokemon/back/shiny/4145.png and b/public/images/pokemon/back/shiny/4145.png differ diff --git a/public/images/pokemon/back/shiny/4146.png b/public/images/pokemon/back/shiny/4146.png index 04db4c69673..e078185a04e 100644 Binary files a/public/images/pokemon/back/shiny/4146.png and b/public/images/pokemon/back/shiny/4146.png differ diff --git a/public/images/pokemon/back/shiny/421-sunshine.png b/public/images/pokemon/back/shiny/421-sunshine.png index e4d9e80cff8..1e864c76bd6 100644 Binary files a/public/images/pokemon/back/shiny/421-sunshine.png and b/public/images/pokemon/back/shiny/421-sunshine.png differ diff --git a/public/images/pokemon/back/shiny/424.png b/public/images/pokemon/back/shiny/424.png index 7e27173b989..8b66555ea90 100644 Binary files a/public/images/pokemon/back/shiny/424.png and b/public/images/pokemon/back/shiny/424.png differ diff --git a/public/images/pokemon/back/shiny/431.png b/public/images/pokemon/back/shiny/431.png index 26248938782..3259524f452 100644 Binary files a/public/images/pokemon/back/shiny/431.png and b/public/images/pokemon/back/shiny/431.png differ diff --git a/public/images/pokemon/back/shiny/433.png b/public/images/pokemon/back/shiny/433.png index 040b700225f..a5d8f784c9e 100644 Binary files a/public/images/pokemon/back/shiny/433.png and b/public/images/pokemon/back/shiny/433.png differ diff --git a/public/images/pokemon/back/shiny/436.png b/public/images/pokemon/back/shiny/436.png index d766a912555..3f757fadb3a 100644 Binary files a/public/images/pokemon/back/shiny/436.png and b/public/images/pokemon/back/shiny/436.png differ diff --git a/public/images/pokemon/back/shiny/451.png b/public/images/pokemon/back/shiny/451.png index dcc3a1a023a..adeb4e8f734 100644 Binary files a/public/images/pokemon/back/shiny/451.png and b/public/images/pokemon/back/shiny/451.png differ diff --git a/public/images/pokemon/back/shiny/469.png b/public/images/pokemon/back/shiny/469.png index bdd46a1ed16..c5dce9bee61 100644 Binary files a/public/images/pokemon/back/shiny/469.png and b/public/images/pokemon/back/shiny/469.png differ diff --git a/public/images/pokemon/back/shiny/477.png b/public/images/pokemon/back/shiny/477.png index e7630e58e07..8acf705a861 100644 Binary files a/public/images/pokemon/back/shiny/477.png and b/public/images/pokemon/back/shiny/477.png differ diff --git a/public/images/pokemon/back/shiny/493-fairy.png b/public/images/pokemon/back/shiny/493-fairy.png index 9285347f211..7a0ede8305c 100644 Binary files a/public/images/pokemon/back/shiny/493-fairy.png and b/public/images/pokemon/back/shiny/493-fairy.png differ diff --git a/public/images/pokemon/back/shiny/556.png b/public/images/pokemon/back/shiny/556.png index 8a5a573e5d5..eb4db00edef 100644 Binary files a/public/images/pokemon/back/shiny/556.png and b/public/images/pokemon/back/shiny/556.png differ diff --git a/public/images/pokemon/back/shiny/569-gigantamax.png b/public/images/pokemon/back/shiny/569-gigantamax.png index 743fe085fa5..1815b6b0176 100644 Binary files a/public/images/pokemon/back/shiny/569-gigantamax.png and b/public/images/pokemon/back/shiny/569-gigantamax.png differ diff --git a/public/images/pokemon/back/shiny/605.png b/public/images/pokemon/back/shiny/605.png index d47679c3896..bc5f56c4fdc 100644 Binary files a/public/images/pokemon/back/shiny/605.png and b/public/images/pokemon/back/shiny/605.png differ diff --git a/public/images/pokemon/back/shiny/63.png b/public/images/pokemon/back/shiny/63.png index 03406c90157..295a988aa03 100644 Binary files a/public/images/pokemon/back/shiny/63.png and b/public/images/pokemon/back/shiny/63.png differ diff --git a/public/images/pokemon/back/shiny/658-ash.png b/public/images/pokemon/back/shiny/658-ash.png index 6e10e834731..027ec29a607 100644 Binary files a/public/images/pokemon/back/shiny/658-ash.png and b/public/images/pokemon/back/shiny/658-ash.png differ diff --git a/public/images/pokemon/back/shiny/658.png b/public/images/pokemon/back/shiny/658.png index 239aaafb6ce..60ce3f0f4c3 100644 Binary files a/public/images/pokemon/back/shiny/658.png and b/public/images/pokemon/back/shiny/658.png differ diff --git a/public/images/pokemon/back/shiny/672.json b/public/images/pokemon/back/shiny/672.json index f22c49faf17..f877b9abc2e 100644 --- a/public/images/pokemon/back/shiny/672.json +++ b/public/images/pokemon/back/shiny/672.json @@ -1,41 +1,479 @@ -{ - "textures": [ - { - "image": "672.png", - "format": "RGBA8888", - "size": { - "w": 50, - "h": 50 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 40, - "h": 50 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 40, - "h": 50 - }, - "frame": { - "x": 0, - "y": 0, - "w": 40, - "h": 50 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:22bc95f0eec19d78f006f79111de626a:2a6ccbfd4c6dd519c2d4695ab3ba6aa1:2e4767b7cd134fc0ab1bb6e9eee82bc7$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.11-x64", + "image": "672.png", + "format": "I8", + "size": { "w": 160, "h": 195 }, + "scale": "1" + } } diff --git a/public/images/pokemon/back/shiny/672.png b/public/images/pokemon/back/shiny/672.png index 470f36886d4..09d65dffbb2 100644 Binary files a/public/images/pokemon/back/shiny/672.png and b/public/images/pokemon/back/shiny/672.png differ diff --git a/public/images/pokemon/back/shiny/674.png b/public/images/pokemon/back/shiny/674.png index 4617b03c6eb..71f6a3c0603 100644 Binary files a/public/images/pokemon/back/shiny/674.png and b/public/images/pokemon/back/shiny/674.png differ diff --git a/public/images/pokemon/back/shiny/676-dandy.png b/public/images/pokemon/back/shiny/676-dandy.png index f8c77d88326..4b9aa47959b 100644 Binary files a/public/images/pokemon/back/shiny/676-dandy.png and b/public/images/pokemon/back/shiny/676-dandy.png differ diff --git a/public/images/pokemon/back/shiny/676-debutante.png b/public/images/pokemon/back/shiny/676-debutante.png index 965e0aaf86d..ea0fd1f87cb 100644 Binary files a/public/images/pokemon/back/shiny/676-debutante.png and b/public/images/pokemon/back/shiny/676-debutante.png differ diff --git a/public/images/pokemon/back/shiny/676-diamond.png b/public/images/pokemon/back/shiny/676-diamond.png index 9ea8ff97838..1f7580f6ae2 100644 Binary files a/public/images/pokemon/back/shiny/676-diamond.png and b/public/images/pokemon/back/shiny/676-diamond.png differ diff --git a/public/images/pokemon/back/shiny/676-heart.png b/public/images/pokemon/back/shiny/676-heart.png index e44c8218aba..1a2d902b2a4 100644 Binary files a/public/images/pokemon/back/shiny/676-heart.png and b/public/images/pokemon/back/shiny/676-heart.png differ diff --git a/public/images/pokemon/back/shiny/676-kabuki.png b/public/images/pokemon/back/shiny/676-kabuki.png index e81aada06bd..7a0254ab5c7 100644 Binary files a/public/images/pokemon/back/shiny/676-kabuki.png and b/public/images/pokemon/back/shiny/676-kabuki.png differ diff --git a/public/images/pokemon/back/shiny/676-la-reine.png b/public/images/pokemon/back/shiny/676-la-reine.png index 78e43bc30af..f23358ad0e3 100644 Binary files a/public/images/pokemon/back/shiny/676-la-reine.png and b/public/images/pokemon/back/shiny/676-la-reine.png differ diff --git a/public/images/pokemon/back/shiny/676-matron.png b/public/images/pokemon/back/shiny/676-matron.png index 0324b0baf94..b7da6b31998 100644 Binary files a/public/images/pokemon/back/shiny/676-matron.png and b/public/images/pokemon/back/shiny/676-matron.png differ diff --git a/public/images/pokemon/back/shiny/676-pharaoh.png b/public/images/pokemon/back/shiny/676-pharaoh.png index 563c2f93e21..7619849a139 100644 Binary files a/public/images/pokemon/back/shiny/676-pharaoh.png and b/public/images/pokemon/back/shiny/676-pharaoh.png differ diff --git a/public/images/pokemon/back/shiny/676-star.png b/public/images/pokemon/back/shiny/676-star.png index 0f388480b4f..9236001c5a9 100644 Binary files a/public/images/pokemon/back/shiny/676-star.png and b/public/images/pokemon/back/shiny/676-star.png differ diff --git a/public/images/pokemon/back/shiny/678.png b/public/images/pokemon/back/shiny/678.png index 3e9d72b066e..d71080efe4f 100644 Binary files a/public/images/pokemon/back/shiny/678.png and b/public/images/pokemon/back/shiny/678.png differ diff --git a/public/images/pokemon/back/shiny/688.png b/public/images/pokemon/back/shiny/688.png index bfff80c4925..65599f79446 100644 Binary files a/public/images/pokemon/back/shiny/688.png and b/public/images/pokemon/back/shiny/688.png differ diff --git a/public/images/pokemon/back/shiny/692.json b/public/images/pokemon/back/shiny/692.json index 2dec26a2616..801710c4861 100644 --- a/public/images/pokemon/back/shiny/692.json +++ b/public/images/pokemon/back/shiny/692.json @@ -1,41 +1,794 @@ -{ - "textures": [ - { - "image": "692.png", - "format": "RGBA8888", - "size": { - "w": 56, - "h": 56 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 56, - "h": 35 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 35 - }, - "frame": { - "x": 0, - "y": 0, - "w": 56, - "h": 35 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:8b2c775abfa9b635f2149e201570e6ff:f327a0cd8d92fa087869ded83baa8e41:2880def858c84cd859bedf13b0b49a33$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0002.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0003.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0004.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0005.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0006.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0007.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0008.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0009.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0010.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0011.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0012.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0013.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0014.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0015.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0016.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0017.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0018.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0019.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0020.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0021.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0022.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0023.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0024.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0025.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0026.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0027.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0028.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0029.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0030.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0031.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0032.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0033.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0034.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0035.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0036.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0037.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0038.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0039.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0040.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0041.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0042.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0043.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0044.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0045.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0046.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0047.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0048.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0049.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0050.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0051.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0052.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0053.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0054.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0055.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0056.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0057.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0058.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0059.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0060.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0061.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0062.png", + "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0063.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0064.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0065.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0066.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0067.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0068.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0069.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0070.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0071.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0072.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0073.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0074.png", + "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0075.png", + "frame": { "x": 119, "y": 72, "w": 56, "h": 31 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 56, "h": 31 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0076.png", + "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0077.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0078.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0079.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0080.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0081.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0082.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0084.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0085.png", + "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0086.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0087.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.12-x64", + "image": "692.png", + "format": "I8", + "size": { "w": 181, "h": 106 }, + "scale": "1" + } } diff --git a/public/images/pokemon/back/shiny/692.png b/public/images/pokemon/back/shiny/692.png index 7459aabd207..dfad01dd446 100644 Binary files a/public/images/pokemon/back/shiny/692.png and b/public/images/pokemon/back/shiny/692.png differ diff --git a/public/images/pokemon/back/shiny/693.json b/public/images/pokemon/back/shiny/693.json index 6c1d41485e9..6358a8908f6 100644 --- a/public/images/pokemon/back/shiny/693.json +++ b/public/images/pokemon/back/shiny/693.json @@ -1,41 +1,902 @@ -{ - "textures": [ - { - "image": "693.png", - "format": "RGBA8888", - "size": { - "w": 90, - "h": 90 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 90, - "h": 70 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 90, - "h": 70 - }, - "frame": { - "x": 0, - "y": 0, - "w": 90, - "h": 70 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:e4bbb1dc7d71678d99aa6c088ee2dda6:9e2c014adc4489792adb3203513e62b4:9c1f9147e693c05eb4655590e9099679$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0073.png", + "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0074.png", + "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0075.png", + "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0076.png", + "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0077.png", + "frame": { "x": 565, "y": 196, "w": 90, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 6, "w": 90, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0078.png", + "frame": { "x": 278, "y": 266, "w": 90, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 90, "h": 59 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0079.png", + "frame": { "x": 189, "y": 199, "w": 95, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 8, "w": 95, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0080.png", + "frame": { "x": 193, "y": 1, "w": 98, "h": 68 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 3, "w": 98, "h": 68 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0081.png", + "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0082.png", + "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0084.png", + "frame": { "x": 1, "y": 136, "w": 94, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0085.png", + "frame": { "x": 95, "y": 72, "w": 96, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 12, "w": 96, "h": 63 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0086.png", + "frame": { "x": 381, "y": 1, "w": 97, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 97, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0087.png", + "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0088.png", + "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0089.png", + "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0090.png", + "frame": { "x": 191, "y": 136, "w": 94, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0091.png", + "frame": { "x": 95, "y": 135, "w": 96, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 96, "h": 62 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0092.png", + "frame": { "x": 572, "y": 67, "w": 99, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 99, "h": 65 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0093.png", + "frame": { "x": 284, "y": 205, "w": 95, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 11, "w": 95, "h": 61 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0094.png", + "frame": { "x": 1, "y": 199, "w": 91, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 12, "w": 91, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0095.png", + "frame": { "x": 1, "y": 259, "w": 95, "h": 60 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 12, "w": 95, "h": 60 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0096.png", + "frame": { "x": 193, "y": 69, "w": 95, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 5, "w": 95, "h": 67 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0097.png", + "frame": { "x": 285, "y": 141, "w": 92, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 8, "w": 92, "h": 64 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0098.png", + "frame": { "x": 96, "y": 318, "w": 89, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 22, "y": 14, "w": 89, "h": 58 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + }, + { + "filename": "0099.png", + "frame": { "x": 564, "y": 261, "w": 92, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 19, "y": 14, "w": 92, "h": 58 }, + "sourceSize": { "w": 111, "h": 83 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.12-x64", + "image": "693.png", + "format": "I8", + "size": { "w": 672, "h": 377 }, + "scale": "1" + } } diff --git a/public/images/pokemon/back/shiny/693.png b/public/images/pokemon/back/shiny/693.png index 47715b534bd..6884c2e28c7 100644 Binary files a/public/images/pokemon/back/shiny/693.png and b/public/images/pokemon/back/shiny/693.png differ diff --git a/public/images/pokemon/back/shiny/694.png b/public/images/pokemon/back/shiny/694.png index b4d451678ef..0156a9a22a3 100644 Binary files a/public/images/pokemon/back/shiny/694.png and b/public/images/pokemon/back/shiny/694.png differ diff --git a/public/images/pokemon/back/shiny/698.png b/public/images/pokemon/back/shiny/698.png index bc96912bd46..84d6b6d72eb 100644 Binary files a/public/images/pokemon/back/shiny/698.png and b/public/images/pokemon/back/shiny/698.png differ diff --git a/public/images/pokemon/back/shiny/699.png b/public/images/pokemon/back/shiny/699.png index 0eb93c80f38..d0612ae174b 100644 Binary files a/public/images/pokemon/back/shiny/699.png and b/public/images/pokemon/back/shiny/699.png differ diff --git a/public/images/pokemon/back/shiny/703.png b/public/images/pokemon/back/shiny/703.png index 635d930e674..8601541af71 100644 Binary files a/public/images/pokemon/back/shiny/703.png and b/public/images/pokemon/back/shiny/703.png differ diff --git a/public/images/pokemon/back/shiny/707.png b/public/images/pokemon/back/shiny/707.png index 8d7e5922091..e046b330191 100644 Binary files a/public/images/pokemon/back/shiny/707.png and b/public/images/pokemon/back/shiny/707.png differ diff --git a/public/images/pokemon/back/shiny/708.png b/public/images/pokemon/back/shiny/708.png index 8a9ff2cb9ee..72e5499ead3 100644 Binary files a/public/images/pokemon/back/shiny/708.png and b/public/images/pokemon/back/shiny/708.png differ diff --git a/public/images/pokemon/back/shiny/71.png b/public/images/pokemon/back/shiny/71.png index 99663f744ac..e5f9337988f 100644 Binary files a/public/images/pokemon/back/shiny/71.png and b/public/images/pokemon/back/shiny/71.png differ diff --git a/public/images/pokemon/back/shiny/714.png b/public/images/pokemon/back/shiny/714.png index e1e5d5dbec7..1a1f8b81d37 100644 Binary files a/public/images/pokemon/back/shiny/714.png and b/public/images/pokemon/back/shiny/714.png differ diff --git a/public/images/pokemon/back/shiny/715.png b/public/images/pokemon/back/shiny/715.png index dfd07126e59..3e023e43509 100644 Binary files a/public/images/pokemon/back/shiny/715.png and b/public/images/pokemon/back/shiny/715.png differ diff --git a/public/images/pokemon/back/shiny/716-active.png b/public/images/pokemon/back/shiny/716-active.png index 96c6814d109..b77b0160702 100644 Binary files a/public/images/pokemon/back/shiny/716-active.png and b/public/images/pokemon/back/shiny/716-active.png differ diff --git a/public/images/pokemon/back/shiny/716-neutral.png b/public/images/pokemon/back/shiny/716-neutral.png index 9c80656e93c..cf862e5239f 100644 Binary files a/public/images/pokemon/back/shiny/716-neutral.png and b/public/images/pokemon/back/shiny/716-neutral.png differ diff --git a/public/images/pokemon/back/shiny/718-10.png b/public/images/pokemon/back/shiny/718-10.png index 7998912c001..e60fece6421 100644 Binary files a/public/images/pokemon/back/shiny/718-10.png and b/public/images/pokemon/back/shiny/718-10.png differ diff --git a/public/images/pokemon/back/shiny/718.png b/public/images/pokemon/back/shiny/718.png index bb8d4179347..c4f68f5a38e 100644 Binary files a/public/images/pokemon/back/shiny/718.png and b/public/images/pokemon/back/shiny/718.png differ diff --git a/public/images/pokemon/back/shiny/719.png b/public/images/pokemon/back/shiny/719.png index 6e76d35bc93..e2a830bc99c 100644 Binary files a/public/images/pokemon/back/shiny/719.png and b/public/images/pokemon/back/shiny/719.png differ diff --git a/public/images/pokemon/back/shiny/730.png b/public/images/pokemon/back/shiny/730.png index 7a6c4d4fc73..0071fac9a90 100644 Binary files a/public/images/pokemon/back/shiny/730.png and b/public/images/pokemon/back/shiny/730.png differ diff --git a/public/images/pokemon/back/shiny/753.json b/public/images/pokemon/back/shiny/753.json index 70c1091b725..f1d1bc11bb0 100644 --- a/public/images/pokemon/back/shiny/753.json +++ b/public/images/pokemon/back/shiny/753.json @@ -4,29 +4,2570 @@ "image": "753.png", "format": "RGBA8888", "size": { - "w": 45, - "h": 45 + "w": 140, + "h": 140 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0019.png", "rotated": false, - "trimmed": false, + "trimmed": true, "sourceSize": { - "w": 28, - "h": 45 + "w": 31, + "h": 53 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 28, - "h": 45 + "y": 5, + "w": 31, + "h": 47 }, "frame": { "x": 0, "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 31, + "h": 47 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 31, + "h": 47 + }, + "frame": { + "x": 0, + "y": 47, + "w": 31, + "h": 47 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 31, + "h": 46 + }, + "frame": { + "x": 0, + "y": 94, + "w": 31, + "h": 46 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0101.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0120.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0121.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0122.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 31, + "y": 47, + "w": 30, + "h": 47 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 7, + "w": 30, + "h": 46 + }, + "frame": { + "x": 31, + "y": 94, + "w": 30, + "h": 46 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 7, + "w": 30, + "h": 46 + }, + "frame": { + "x": 31, + "y": 94, + "w": 30, + "h": 46 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 30, + "h": 47 + }, + "frame": { + "x": 61, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 29, + "h": 47 + }, + "frame": { + "x": 91, + "y": 0, + "w": 29, + "h": 47 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 29, + "h": 47 + }, + "frame": { + "x": 61, + "y": 47, + "w": 29, + "h": 47 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 28, + "h": 46 + }, + "frame": { + "x": 61, + "y": 94, + "w": 28, + "h": 46 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, + "h": 45 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 31, + "h": 53 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 45 + }, + "frame": { + "x": 89, + "y": 94, + "w": 29, "h": 45 } } @@ -36,6 +2577,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f2829e1ebd212cc5203393968a2efd5f:dd79bfe2b6a61007ace9092be7975ffe:16c1874bc814253ca78e52a99a340ff7$" + "smartupdate": "$TexturePacker:SmartUpdate:b6d27dc4e44833805071498f628d15c3:7ab61edae9d3eecb963334bb47dd5aa7:16c1874bc814253ca78e52a99a340ff7$" } } diff --git a/public/images/pokemon/back/shiny/753.png b/public/images/pokemon/back/shiny/753.png index aadcbe3fa04..14f23fc6bb9 100644 Binary files a/public/images/pokemon/back/shiny/753.png and b/public/images/pokemon/back/shiny/753.png differ diff --git a/public/images/pokemon/back/shiny/754.json b/public/images/pokemon/back/shiny/754.json index 10165ba4b4a..8b1a3d44a4d 100644 --- a/public/images/pokemon/back/shiny/754.json +++ b/public/images/pokemon/back/shiny/754.json @@ -4,29 +4,1121 @@ "image": "754.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 222, + "h": 222 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0036.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 36, + "w": 92, "h": 68 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 36, + "w": 92, "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 36, + "w": 92, + "h": 68 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 92, + "y": 0, + "w": 92, + "h": 68 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 184, + "y": 0, + "w": 38, + "h": 68 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 92, + "h": 68 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 92, + "h": 68 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 92, + "h": 68 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 92, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 92, + "h": 68 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 88, + "h": 68 + }, + "frame": { + "x": 92, + "y": 68, + "w": 88, + "h": 68 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 88, + "h": 68 + }, + "frame": { + "x": 92, + "y": 68, + "w": 88, + "h": 68 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 40, + "h": 68 + }, + "frame": { + "x": 180, + "y": 68, + "w": 40, + "h": 68 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 40, + "h": 68 + }, + "frame": { + "x": 180, + "y": 68, + "w": 40, + "h": 68 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 39, + "h": 68 + }, + "frame": { + "x": 92, + "y": 136, + "w": 39, + "h": 68 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 131, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, + "h": 68 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 92, + "h": 68 + }, + "spriteSourceSize": { + "x": 25, + "y": 0, + "w": 38, + "h": 68 + }, + "frame": { + "x": 169, + "y": 136, + "w": 38, "h": 68 } } @@ -36,6 +1128,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:fb4a59b5a68751679b02829509901f6d:d3641a5857a0273c94152df891d4cf5c:f7cb0e9bb3adbe899317e6e2e306035d$" + "smartupdate": "$TexturePacker:SmartUpdate:7651b73927071f2814265b66582a8d13:a2d1ef3cf0c2458640f77c2fbcc821a0:f7cb0e9bb3adbe899317e6e2e306035d$" } } diff --git a/public/images/pokemon/back/shiny/754.png b/public/images/pokemon/back/shiny/754.png index 47a582ff788..1f7346ed822 100644 Binary files a/public/images/pokemon/back/shiny/754.png and b/public/images/pokemon/back/shiny/754.png differ diff --git a/public/images/pokemon/back/shiny/772.png b/public/images/pokemon/back/shiny/772.png index e275c06ee41..2d19345c2bd 100644 Binary files a/public/images/pokemon/back/shiny/772.png and b/public/images/pokemon/back/shiny/772.png differ diff --git a/public/images/pokemon/back/shiny/773-bug.png b/public/images/pokemon/back/shiny/773-bug.png index 5c10f205fe9..c3487164678 100644 Binary files a/public/images/pokemon/back/shiny/773-bug.png and b/public/images/pokemon/back/shiny/773-bug.png differ diff --git a/public/images/pokemon/back/shiny/773-dark.png b/public/images/pokemon/back/shiny/773-dark.png index 0d469fa448e..9a507c6ab91 100644 Binary files a/public/images/pokemon/back/shiny/773-dark.png and b/public/images/pokemon/back/shiny/773-dark.png differ diff --git a/public/images/pokemon/back/shiny/773-dragon.png b/public/images/pokemon/back/shiny/773-dragon.png index d573f3f3a9d..0ab8fb33404 100644 Binary files a/public/images/pokemon/back/shiny/773-dragon.png and b/public/images/pokemon/back/shiny/773-dragon.png differ diff --git a/public/images/pokemon/back/shiny/773-electric.png b/public/images/pokemon/back/shiny/773-electric.png index ffc58500637..913e8ebe60a 100644 Binary files a/public/images/pokemon/back/shiny/773-electric.png and b/public/images/pokemon/back/shiny/773-electric.png differ diff --git a/public/images/pokemon/back/shiny/773-fairy.png b/public/images/pokemon/back/shiny/773-fairy.png index cf73ecd51db..191615913ab 100644 Binary files a/public/images/pokemon/back/shiny/773-fairy.png and b/public/images/pokemon/back/shiny/773-fairy.png differ diff --git a/public/images/pokemon/back/shiny/773-fighting.png b/public/images/pokemon/back/shiny/773-fighting.png index a3301ad2225..7b2ed132cba 100644 Binary files a/public/images/pokemon/back/shiny/773-fighting.png and b/public/images/pokemon/back/shiny/773-fighting.png differ diff --git a/public/images/pokemon/back/shiny/773-fire.png b/public/images/pokemon/back/shiny/773-fire.png index c7e9cac0048..40a5ca5dde1 100644 Binary files a/public/images/pokemon/back/shiny/773-fire.png and b/public/images/pokemon/back/shiny/773-fire.png differ diff --git a/public/images/pokemon/back/shiny/773-flying.png b/public/images/pokemon/back/shiny/773-flying.png index e5d51566755..c3ad4e63e51 100644 Binary files a/public/images/pokemon/back/shiny/773-flying.png and b/public/images/pokemon/back/shiny/773-flying.png differ diff --git a/public/images/pokemon/back/shiny/773-ghost.png b/public/images/pokemon/back/shiny/773-ghost.png index 86ba0a7d25f..26445f30606 100644 Binary files a/public/images/pokemon/back/shiny/773-ghost.png and b/public/images/pokemon/back/shiny/773-ghost.png differ diff --git a/public/images/pokemon/back/shiny/773-grass.png b/public/images/pokemon/back/shiny/773-grass.png index 6602acf8d7e..b7f4e38d907 100644 Binary files a/public/images/pokemon/back/shiny/773-grass.png and b/public/images/pokemon/back/shiny/773-grass.png differ diff --git a/public/images/pokemon/back/shiny/773-ground.png b/public/images/pokemon/back/shiny/773-ground.png index 595494c4fae..528018e9a04 100644 Binary files a/public/images/pokemon/back/shiny/773-ground.png and b/public/images/pokemon/back/shiny/773-ground.png differ diff --git a/public/images/pokemon/back/shiny/773-ice.png b/public/images/pokemon/back/shiny/773-ice.png index 65e5525f120..25f03091fc8 100644 Binary files a/public/images/pokemon/back/shiny/773-ice.png and b/public/images/pokemon/back/shiny/773-ice.png differ diff --git a/public/images/pokemon/back/shiny/773-poison.png b/public/images/pokemon/back/shiny/773-poison.png index 60974b37cf2..212a78cf194 100644 Binary files a/public/images/pokemon/back/shiny/773-poison.png and b/public/images/pokemon/back/shiny/773-poison.png differ diff --git a/public/images/pokemon/back/shiny/773-psychic.png b/public/images/pokemon/back/shiny/773-psychic.png index 0b6c2397ca7..daf9b65fddf 100644 Binary files a/public/images/pokemon/back/shiny/773-psychic.png and b/public/images/pokemon/back/shiny/773-psychic.png differ diff --git a/public/images/pokemon/back/shiny/773-rock.png b/public/images/pokemon/back/shiny/773-rock.png index 75af92d1691..9a81db29f27 100644 Binary files a/public/images/pokemon/back/shiny/773-rock.png and b/public/images/pokemon/back/shiny/773-rock.png differ diff --git a/public/images/pokemon/back/shiny/773-steel.png b/public/images/pokemon/back/shiny/773-steel.png index 5155256a271..59642be8b97 100644 Binary files a/public/images/pokemon/back/shiny/773-steel.png and b/public/images/pokemon/back/shiny/773-steel.png differ diff --git a/public/images/pokemon/back/shiny/773-water.png b/public/images/pokemon/back/shiny/773-water.png index 936b19f728f..109504a6d2b 100644 Binary files a/public/images/pokemon/back/shiny/773-water.png and b/public/images/pokemon/back/shiny/773-water.png differ diff --git a/public/images/pokemon/back/shiny/773.png b/public/images/pokemon/back/shiny/773.png index 26aafa2d2ea..fa4a2c80723 100644 Binary files a/public/images/pokemon/back/shiny/773.png and b/public/images/pokemon/back/shiny/773.png differ diff --git a/public/images/pokemon/back/shiny/774-blue-meteor.png b/public/images/pokemon/back/shiny/774-blue-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-blue-meteor.png and b/public/images/pokemon/back/shiny/774-blue-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-blue.png b/public/images/pokemon/back/shiny/774-blue.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-blue.png and b/public/images/pokemon/back/shiny/774-blue.png differ diff --git a/public/images/pokemon/back/shiny/774-green-meteor.png b/public/images/pokemon/back/shiny/774-green-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-green-meteor.png and b/public/images/pokemon/back/shiny/774-green-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-green.png b/public/images/pokemon/back/shiny/774-green.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-green.png and b/public/images/pokemon/back/shiny/774-green.png differ diff --git a/public/images/pokemon/back/shiny/774-indigo-meteor.png b/public/images/pokemon/back/shiny/774-indigo-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-indigo-meteor.png and b/public/images/pokemon/back/shiny/774-indigo-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-indigo.png b/public/images/pokemon/back/shiny/774-indigo.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-indigo.png and b/public/images/pokemon/back/shiny/774-indigo.png differ diff --git a/public/images/pokemon/back/shiny/774-orange-meteor.png b/public/images/pokemon/back/shiny/774-orange-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-orange-meteor.png and b/public/images/pokemon/back/shiny/774-orange-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-orange.png b/public/images/pokemon/back/shiny/774-orange.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-orange.png and b/public/images/pokemon/back/shiny/774-orange.png differ diff --git a/public/images/pokemon/back/shiny/774-red-meteor.png b/public/images/pokemon/back/shiny/774-red-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-red-meteor.png and b/public/images/pokemon/back/shiny/774-red-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-red.png b/public/images/pokemon/back/shiny/774-red.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-red.png and b/public/images/pokemon/back/shiny/774-red.png differ diff --git a/public/images/pokemon/back/shiny/774-violet-meteor.png b/public/images/pokemon/back/shiny/774-violet-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-violet-meteor.png and b/public/images/pokemon/back/shiny/774-violet-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-violet.png b/public/images/pokemon/back/shiny/774-violet.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-violet.png and b/public/images/pokemon/back/shiny/774-violet.png differ diff --git a/public/images/pokemon/back/shiny/774-yellow-meteor.png b/public/images/pokemon/back/shiny/774-yellow-meteor.png index bd27cc746e3..6f93da7a00d 100644 Binary files a/public/images/pokemon/back/shiny/774-yellow-meteor.png and b/public/images/pokemon/back/shiny/774-yellow-meteor.png differ diff --git a/public/images/pokemon/back/shiny/774-yellow.png b/public/images/pokemon/back/shiny/774-yellow.png index c0bc9b17cd2..46127ca6636 100644 Binary files a/public/images/pokemon/back/shiny/774-yellow.png and b/public/images/pokemon/back/shiny/774-yellow.png differ diff --git a/public/images/pokemon/back/shiny/782.png b/public/images/pokemon/back/shiny/782.png index e5bed3d1642..bc0e296b1f2 100644 Binary files a/public/images/pokemon/back/shiny/782.png and b/public/images/pokemon/back/shiny/782.png differ diff --git a/public/images/pokemon/back/shiny/783.png b/public/images/pokemon/back/shiny/783.png index 30d6c49f5e0..1461807dd8e 100644 Binary files a/public/images/pokemon/back/shiny/783.png and b/public/images/pokemon/back/shiny/783.png differ diff --git a/public/images/pokemon/back/shiny/784.png b/public/images/pokemon/back/shiny/784.png index 51a3962a6ea..673de0685de 100644 Binary files a/public/images/pokemon/back/shiny/784.png and b/public/images/pokemon/back/shiny/784.png differ diff --git a/public/images/pokemon/back/shiny/798.png b/public/images/pokemon/back/shiny/798.png index 56a45c895a0..9d37f19834a 100644 Binary files a/public/images/pokemon/back/shiny/798.png and b/public/images/pokemon/back/shiny/798.png differ diff --git a/public/images/pokemon/back/shiny/80-mega.png b/public/images/pokemon/back/shiny/80-mega.png index 5baf6ccb873..e66843b86da 100644 Binary files a/public/images/pokemon/back/shiny/80-mega.png and b/public/images/pokemon/back/shiny/80-mega.png differ diff --git a/public/images/pokemon/back/shiny/80.png b/public/images/pokemon/back/shiny/80.png index c6c3b23f364..8f855c4e763 100644 Binary files a/public/images/pokemon/back/shiny/80.png and b/public/images/pokemon/back/shiny/80.png differ diff --git a/public/images/pokemon/back/shiny/802-zenith.png b/public/images/pokemon/back/shiny/802-zenith.png index 8e71dd7c762..793e5a4d63b 100644 Binary files a/public/images/pokemon/back/shiny/802-zenith.png and b/public/images/pokemon/back/shiny/802-zenith.png differ diff --git a/public/images/pokemon/back/shiny/818-gigantamax.png b/public/images/pokemon/back/shiny/818-gigantamax.png index ca58c4eb34c..1e1bde2166e 100644 Binary files a/public/images/pokemon/back/shiny/818-gigantamax.png and b/public/images/pokemon/back/shiny/818-gigantamax.png differ diff --git a/public/images/pokemon/back/shiny/821.png b/public/images/pokemon/back/shiny/821.png index 6d29988ed9f..b604c515e2c 100644 Binary files a/public/images/pokemon/back/shiny/821.png and b/public/images/pokemon/back/shiny/821.png differ diff --git a/public/images/pokemon/back/shiny/867.png b/public/images/pokemon/back/shiny/867.png index accb87844f1..aedfe5e12dc 100644 Binary files a/public/images/pokemon/back/shiny/867.png and b/public/images/pokemon/back/shiny/867.png differ diff --git a/public/images/pokemon/back/shiny/881.png b/public/images/pokemon/back/shiny/881.png index 4dc11742548..bd1131fa8ec 100644 Binary files a/public/images/pokemon/back/shiny/881.png and b/public/images/pokemon/back/shiny/881.png differ diff --git a/public/images/pokemon/back/shiny/898-ice.png b/public/images/pokemon/back/shiny/898-ice.png index 0e96f7ca9d3..6063a38fff5 100644 Binary files a/public/images/pokemon/back/shiny/898-ice.png and b/public/images/pokemon/back/shiny/898-ice.png differ diff --git a/public/images/pokemon/back/shiny/898-shadow.png b/public/images/pokemon/back/shiny/898-shadow.png index 6319b0c56d1..257d496c453 100644 Binary files a/public/images/pokemon/back/shiny/898-shadow.png and b/public/images/pokemon/back/shiny/898-shadow.png differ diff --git a/public/images/pokemon/back/shiny/91.png b/public/images/pokemon/back/shiny/91.png index 93e1d3db247..daf9ed630ff 100644 Binary files a/public/images/pokemon/back/shiny/91.png and b/public/images/pokemon/back/shiny/91.png differ diff --git a/public/images/pokemon/back/shiny/913.png b/public/images/pokemon/back/shiny/913.png index e3a4405fd1e..f75b1f095cc 100644 Binary files a/public/images/pokemon/back/shiny/913.png and b/public/images/pokemon/back/shiny/913.png differ diff --git a/public/images/pokemon/back/shiny/914.png b/public/images/pokemon/back/shiny/914.png index 5e88e004266..eee25735762 100644 Binary files a/public/images/pokemon/back/shiny/914.png and b/public/images/pokemon/back/shiny/914.png differ diff --git a/public/images/pokemon/back/shiny/944.png b/public/images/pokemon/back/shiny/944.png index a33c2a39c2f..a4137ff109e 100644 Binary files a/public/images/pokemon/back/shiny/944.png and b/public/images/pokemon/back/shiny/944.png differ diff --git a/public/images/pokemon/back/shiny/945.png b/public/images/pokemon/back/shiny/945.png index 38be3590480..6bb3b0c0ad1 100644 Binary files a/public/images/pokemon/back/shiny/945.png and b/public/images/pokemon/back/shiny/945.png differ diff --git a/public/images/pokemon/back/shiny/974.png b/public/images/pokemon/back/shiny/974.png index c6ea8cac05a..ae6b7b6ac9e 100644 Binary files a/public/images/pokemon/back/shiny/974.png and b/public/images/pokemon/back/shiny/974.png differ diff --git a/public/images/pokemon/back/shiny/975.png b/public/images/pokemon/back/shiny/975.png index a5e72e739ec..93609656d6a 100644 Binary files a/public/images/pokemon/back/shiny/975.png and b/public/images/pokemon/back/shiny/975.png differ diff --git a/public/images/pokemon/back/shiny/981.png b/public/images/pokemon/back/shiny/981.png index 0a5d6e5fb90..57425684522 100644 Binary files a/public/images/pokemon/back/shiny/981.png and b/public/images/pokemon/back/shiny/981.png differ diff --git a/public/images/pokemon/back/shiny/982-three-segment.png b/public/images/pokemon/back/shiny/982-three-segment.png index 11f855f9366..06192b5a111 100644 Binary files a/public/images/pokemon/back/shiny/982-three-segment.png and b/public/images/pokemon/back/shiny/982-three-segment.png differ diff --git a/public/images/pokemon/back/shiny/982.png b/public/images/pokemon/back/shiny/982.png index 3f72e2a644f..ce6d4c4d46a 100644 Binary files a/public/images/pokemon/back/shiny/982.png and b/public/images/pokemon/back/shiny/982.png differ diff --git a/public/images/pokemon/back/shiny/983.png b/public/images/pokemon/back/shiny/983.png index 5cdf12cc859..6caa3e4e474 100644 Binary files a/public/images/pokemon/back/shiny/983.png and b/public/images/pokemon/back/shiny/983.png differ diff --git a/public/images/pokemon/back/shiny/987.png b/public/images/pokemon/back/shiny/987.png index 8c4c0c8b62a..d1a97f59188 100644 Binary files a/public/images/pokemon/back/shiny/987.png and b/public/images/pokemon/back/shiny/987.png differ diff --git a/public/images/pokemon/back/shiny/female/178.png b/public/images/pokemon/back/shiny/female/178.png index 7978ec22e7f..2d24aa6dd5c 100644 Binary files a/public/images/pokemon/back/shiny/female/178.png and b/public/images/pokemon/back/shiny/female/178.png differ diff --git a/public/images/pokemon/back/shiny/female/186.png b/public/images/pokemon/back/shiny/female/186.png index 37b157dce85..2248aad08c7 100644 Binary files a/public/images/pokemon/back/shiny/female/186.png and b/public/images/pokemon/back/shiny/female/186.png differ diff --git a/public/images/pokemon/back/shiny/female/190.png b/public/images/pokemon/back/shiny/female/190.png index cb2352cfb4d..2391fd5a819 100644 Binary files a/public/images/pokemon/back/shiny/female/190.png and b/public/images/pokemon/back/shiny/female/190.png differ diff --git a/public/images/pokemon/back/shiny/female/25-beauty-cosplay.png b/public/images/pokemon/back/shiny/female/25-beauty-cosplay.png index 5ec9e3c980c..4d423d32216 100644 Binary files a/public/images/pokemon/back/shiny/female/25-beauty-cosplay.png and b/public/images/pokemon/back/shiny/female/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/female/25-cool-cosplay.png b/public/images/pokemon/back/shiny/female/25-cool-cosplay.png index fe60f00180f..b6643b8ff03 100644 Binary files a/public/images/pokemon/back/shiny/female/25-cool-cosplay.png and b/public/images/pokemon/back/shiny/female/25-cool-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/female/25-cosplay.png b/public/images/pokemon/back/shiny/female/25-cosplay.png index 3a025fd44de..912c1077d32 100644 Binary files a/public/images/pokemon/back/shiny/female/25-cosplay.png and b/public/images/pokemon/back/shiny/female/25-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/female/25-cute-cosplay.png b/public/images/pokemon/back/shiny/female/25-cute-cosplay.png index afec1650f9a..27ac642caf3 100644 Binary files a/public/images/pokemon/back/shiny/female/25-cute-cosplay.png and b/public/images/pokemon/back/shiny/female/25-cute-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/female/25-smart-cosplay.png b/public/images/pokemon/back/shiny/female/25-smart-cosplay.png index 5d08d868aa8..3cc90da581d 100644 Binary files a/public/images/pokemon/back/shiny/female/25-smart-cosplay.png and b/public/images/pokemon/back/shiny/female/25-smart-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/female/25-tough-cosplay.png b/public/images/pokemon/back/shiny/female/25-tough-cosplay.png index e438afbf32f..38a31901fbb 100644 Binary files a/public/images/pokemon/back/shiny/female/25-tough-cosplay.png and b/public/images/pokemon/back/shiny/female/25-tough-cosplay.png differ diff --git a/public/images/pokemon/back/shiny/female/3.png b/public/images/pokemon/back/shiny/female/3.png index dff72d5b6e5..5eb727aaf03 100644 Binary files a/public/images/pokemon/back/shiny/female/3.png and b/public/images/pokemon/back/shiny/female/3.png differ diff --git a/public/images/pokemon/back/shiny/female/399.png b/public/images/pokemon/back/shiny/female/399.png index a0c0dfd6be2..2dbe950100a 100644 Binary files a/public/images/pokemon/back/shiny/female/399.png and b/public/images/pokemon/back/shiny/female/399.png differ diff --git a/public/images/pokemon/back/shiny/female/401.png b/public/images/pokemon/back/shiny/female/401.png index c325c91cc88..ca0facb38d3 100644 Binary files a/public/images/pokemon/back/shiny/female/401.png and b/public/images/pokemon/back/shiny/female/401.png differ diff --git a/public/images/pokemon/back/shiny/female/424.png b/public/images/pokemon/back/shiny/female/424.png index a00c99e375e..70654531a1e 100644 Binary files a/public/images/pokemon/back/shiny/female/424.png and b/public/images/pokemon/back/shiny/female/424.png differ diff --git a/public/images/pokemon/exp/1003.png b/public/images/pokemon/exp/1003.png index 2d02c4050e9..c831bf23b38 100644 Binary files a/public/images/pokemon/exp/1003.png and b/public/images/pokemon/exp/1003.png differ diff --git a/public/images/pokemon/exp/130-mega.png b/public/images/pokemon/exp/130-mega.png index 00fc5316581..3baf0a88071 100644 Binary files a/public/images/pokemon/exp/130-mega.png and b/public/images/pokemon/exp/130-mega.png differ diff --git a/public/images/pokemon/exp/2026.png b/public/images/pokemon/exp/2026.png index 718fb8957b3..3a0d0f67b95 100644 Binary files a/public/images/pokemon/exp/2026.png and b/public/images/pokemon/exp/2026.png differ diff --git a/public/images/pokemon/exp/2037.png b/public/images/pokemon/exp/2037.png index b1ebd401e5f..7d00d3ca65f 100644 Binary files a/public/images/pokemon/exp/2037.png and b/public/images/pokemon/exp/2037.png differ diff --git a/public/images/pokemon/exp/2038.png b/public/images/pokemon/exp/2038.png index f6295093fcc..d0d385bbc66 100644 Binary files a/public/images/pokemon/exp/2038.png and b/public/images/pokemon/exp/2038.png differ diff --git a/public/images/pokemon/exp/2074.png b/public/images/pokemon/exp/2074.png index 158120ac79f..b52036a2af3 100644 Binary files a/public/images/pokemon/exp/2074.png and b/public/images/pokemon/exp/2074.png differ diff --git a/public/images/pokemon/exp/2075.png b/public/images/pokemon/exp/2075.png index 243be9bb7b0..a64bcc7319e 100644 Binary files a/public/images/pokemon/exp/2075.png and b/public/images/pokemon/exp/2075.png differ diff --git a/public/images/pokemon/exp/2076.png b/public/images/pokemon/exp/2076.png index f1fcda5113f..6a2b0f5a1e3 100644 Binary files a/public/images/pokemon/exp/2076.png and b/public/images/pokemon/exp/2076.png differ diff --git a/public/images/pokemon/exp/2088.png b/public/images/pokemon/exp/2088.png index 71ddd8a7e15..9cf4a37cf60 100644 Binary files a/public/images/pokemon/exp/2088.png and b/public/images/pokemon/exp/2088.png differ diff --git a/public/images/pokemon/exp/2089.png b/public/images/pokemon/exp/2089.png index fc4f2d2a353..728fe5a52e8 100644 Binary files a/public/images/pokemon/exp/2089.png and b/public/images/pokemon/exp/2089.png differ diff --git a/public/images/pokemon/exp/229-mega.png b/public/images/pokemon/exp/229-mega.png index babc5310bb4..2b3749a673d 100644 Binary files a/public/images/pokemon/exp/229-mega.png and b/public/images/pokemon/exp/229-mega.png differ diff --git a/public/images/pokemon/exp/248-mega.png b/public/images/pokemon/exp/248-mega.png index 167b88b09e5..f6eb798c205 100644 Binary files a/public/images/pokemon/exp/248-mega.png and b/public/images/pokemon/exp/248-mega.png differ diff --git a/public/images/pokemon/exp/359-mega.png b/public/images/pokemon/exp/359-mega.png index 10787a35a8b..280db87daa2 100644 Binary files a/public/images/pokemon/exp/359-mega.png and b/public/images/pokemon/exp/359-mega.png differ diff --git a/public/images/pokemon/exp/362-mega.png b/public/images/pokemon/exp/362-mega.png index be87d172e8e..340aec1fe18 100644 Binary files a/public/images/pokemon/exp/362-mega.png and b/public/images/pokemon/exp/362-mega.png differ diff --git a/public/images/pokemon/exp/373-mega.png b/public/images/pokemon/exp/373-mega.png index 0b93c472c76..0eda6d49e15 100644 Binary files a/public/images/pokemon/exp/373-mega.png and b/public/images/pokemon/exp/373-mega.png differ diff --git a/public/images/pokemon/exp/380-mega.png b/public/images/pokemon/exp/380-mega.png index 2a0cfa8797b..1f2c8daaf96 100644 Binary files a/public/images/pokemon/exp/380-mega.png and b/public/images/pokemon/exp/380-mega.png differ diff --git a/public/images/pokemon/exp/381-mega.png b/public/images/pokemon/exp/381-mega.png index a40e3eb8655..636ed70e0f0 100644 Binary files a/public/images/pokemon/exp/381-mega.png and b/public/images/pokemon/exp/381-mega.png differ diff --git a/public/images/pokemon/exp/382-primal.png b/public/images/pokemon/exp/382-primal.png index c0d824a7477..1d02b26ece7 100644 Binary files a/public/images/pokemon/exp/382-primal.png and b/public/images/pokemon/exp/382-primal.png differ diff --git a/public/images/pokemon/exp/4080.png b/public/images/pokemon/exp/4080.png index 77e47856b0a..6f635f2a537 100644 Binary files a/public/images/pokemon/exp/4080.png and b/public/images/pokemon/exp/4080.png differ diff --git a/public/images/pokemon/exp/4083.png b/public/images/pokemon/exp/4083.png index d0fd23c248d..9e462afab99 100644 Binary files a/public/images/pokemon/exp/4083.png and b/public/images/pokemon/exp/4083.png differ diff --git a/public/images/pokemon/exp/4144.png b/public/images/pokemon/exp/4144.png index 5f2be320991..255b2ccce2c 100644 Binary files a/public/images/pokemon/exp/4144.png and b/public/images/pokemon/exp/4144.png differ diff --git a/public/images/pokemon/exp/4145.png b/public/images/pokemon/exp/4145.png index 1afe5bf5d37..62c2e6694bc 100644 Binary files a/public/images/pokemon/exp/4145.png and b/public/images/pokemon/exp/4145.png differ diff --git a/public/images/pokemon/exp/4146.png b/public/images/pokemon/exp/4146.png index 09c8e1a0803..648b278e35c 100644 Binary files a/public/images/pokemon/exp/4146.png and b/public/images/pokemon/exp/4146.png differ diff --git a/public/images/pokemon/exp/4199.png b/public/images/pokemon/exp/4199.png index b7a7dd9bfbb..fb66109b1f3 100644 Binary files a/public/images/pokemon/exp/4199.png and b/public/images/pokemon/exp/4199.png differ diff --git a/public/images/pokemon/exp/4222.png b/public/images/pokemon/exp/4222.png index 5e04aafdc22..211519f2ffc 100644 Binary files a/public/images/pokemon/exp/4222.png and b/public/images/pokemon/exp/4222.png differ diff --git a/public/images/pokemon/exp/4264.png b/public/images/pokemon/exp/4264.png index 4bc70f2fdce..dc6f2a70450 100644 Binary files a/public/images/pokemon/exp/4264.png and b/public/images/pokemon/exp/4264.png differ diff --git a/public/images/pokemon/exp/4562.png b/public/images/pokemon/exp/4562.png index 307390e8e2c..c1fc464d242 100644 Binary files a/public/images/pokemon/exp/4562.png and b/public/images/pokemon/exp/4562.png differ diff --git a/public/images/pokemon/exp/484-origin.png b/public/images/pokemon/exp/484-origin.png index 2d8d0fde472..69251077062 100644 Binary files a/public/images/pokemon/exp/484-origin.png and b/public/images/pokemon/exp/484-origin.png differ diff --git a/public/images/pokemon/exp/531-mega.png b/public/images/pokemon/exp/531-mega.png index 391cc22b6db..e6a3c971a5e 100644 Binary files a/public/images/pokemon/exp/531-mega.png and b/public/images/pokemon/exp/531-mega.png differ diff --git a/public/images/pokemon/exp/569-gigantamax.png b/public/images/pokemon/exp/569-gigantamax.png index 90decc0ad84..17446ded404 100644 Binary files a/public/images/pokemon/exp/569-gigantamax.png and b/public/images/pokemon/exp/569-gigantamax.png differ diff --git a/public/images/pokemon/exp/6503.png b/public/images/pokemon/exp/6503.png index d1a698254cb..1f8462034d1 100644 Binary files a/public/images/pokemon/exp/6503.png and b/public/images/pokemon/exp/6503.png differ diff --git a/public/images/pokemon/exp/651.png b/public/images/pokemon/exp/651.png index 633a3cc0c75..9d4b680bcde 100644 Binary files a/public/images/pokemon/exp/651.png and b/public/images/pokemon/exp/651.png differ diff --git a/public/images/pokemon/exp/653.png b/public/images/pokemon/exp/653.png index 66e359173aa..59fa964ccba 100644 Binary files a/public/images/pokemon/exp/653.png and b/public/images/pokemon/exp/653.png differ diff --git a/public/images/pokemon/exp/654.png b/public/images/pokemon/exp/654.png index b1101648416..e82f342937d 100644 Binary files a/public/images/pokemon/exp/654.png and b/public/images/pokemon/exp/654.png differ diff --git a/public/images/pokemon/exp/656.png b/public/images/pokemon/exp/656.png index cc85a92ecbb..a91b523a86d 100644 Binary files a/public/images/pokemon/exp/656.png and b/public/images/pokemon/exp/656.png differ diff --git a/public/images/pokemon/exp/657.png b/public/images/pokemon/exp/657.png index 404fb30a2b2..adfc0c88e5e 100644 Binary files a/public/images/pokemon/exp/657.png and b/public/images/pokemon/exp/657.png differ diff --git a/public/images/pokemon/exp/658-ash.png b/public/images/pokemon/exp/658-ash.png index ced4cbcec71..173bcd4950d 100644 Binary files a/public/images/pokemon/exp/658-ash.png and b/public/images/pokemon/exp/658-ash.png differ diff --git a/public/images/pokemon/exp/658-battle-bond.png b/public/images/pokemon/exp/658-battle-bond.png index 5d80ca1ad0e..e021dd438f7 100644 Binary files a/public/images/pokemon/exp/658-battle-bond.png and b/public/images/pokemon/exp/658-battle-bond.png differ diff --git a/public/images/pokemon/exp/658.png b/public/images/pokemon/exp/658.png index 83b2f5fab89..e59cc57436b 100644 Binary files a/public/images/pokemon/exp/658.png and b/public/images/pokemon/exp/658.png differ diff --git a/public/images/pokemon/exp/661.png b/public/images/pokemon/exp/661.png index ebc25efa895..55184afef45 100644 Binary files a/public/images/pokemon/exp/661.png and b/public/images/pokemon/exp/661.png differ diff --git a/public/images/pokemon/exp/662.png b/public/images/pokemon/exp/662.png index be3e0170e73..33bd4eb8b57 100644 Binary files a/public/images/pokemon/exp/662.png and b/public/images/pokemon/exp/662.png differ diff --git a/public/images/pokemon/exp/6628.png b/public/images/pokemon/exp/6628.png index a091d3e6367..113e471661c 100644 Binary files a/public/images/pokemon/exp/6628.png and b/public/images/pokemon/exp/6628.png differ diff --git a/public/images/pokemon/exp/663.png b/public/images/pokemon/exp/663.png index 394cec2e0ee..194c3b7237b 100644 Binary files a/public/images/pokemon/exp/663.png and b/public/images/pokemon/exp/663.png differ diff --git a/public/images/pokemon/exp/664.png b/public/images/pokemon/exp/664.png index d626085b5a1..96bdb91bb17 100644 Binary files a/public/images/pokemon/exp/664.png and b/public/images/pokemon/exp/664.png differ diff --git a/public/images/pokemon/exp/665.png b/public/images/pokemon/exp/665.png index 88dc208300f..fedf6ab9c6a 100644 Binary files a/public/images/pokemon/exp/665.png and b/public/images/pokemon/exp/665.png differ diff --git a/public/images/pokemon/exp/666-fancy.png b/public/images/pokemon/exp/666-fancy.png index 92da507a61f..359ed55f22f 100644 Binary files a/public/images/pokemon/exp/666-fancy.png and b/public/images/pokemon/exp/666-fancy.png differ diff --git a/public/images/pokemon/exp/666-high-plains.png b/public/images/pokemon/exp/666-high-plains.png index a34b2fd8254..3a092bd6486 100644 Binary files a/public/images/pokemon/exp/666-high-plains.png and b/public/images/pokemon/exp/666-high-plains.png differ diff --git a/public/images/pokemon/exp/666-meadow.png b/public/images/pokemon/exp/666-meadow.png index 6912a8d8174..09c1ff06d5e 100644 Binary files a/public/images/pokemon/exp/666-meadow.png and b/public/images/pokemon/exp/666-meadow.png differ diff --git a/public/images/pokemon/exp/666-poke-ball.png b/public/images/pokemon/exp/666-poke-ball.png index 58cae8e2aaa..b3773eb7eea 100644 Binary files a/public/images/pokemon/exp/666-poke-ball.png and b/public/images/pokemon/exp/666-poke-ball.png differ diff --git a/public/images/pokemon/exp/666-river.png b/public/images/pokemon/exp/666-river.png index 433b2c39254..77f296bab44 100644 Binary files a/public/images/pokemon/exp/666-river.png and b/public/images/pokemon/exp/666-river.png differ diff --git a/public/images/pokemon/exp/667.png b/public/images/pokemon/exp/667.png index 3ae931300c5..a56fe4a731e 100644 Binary files a/public/images/pokemon/exp/667.png and b/public/images/pokemon/exp/667.png differ diff --git a/public/images/pokemon/exp/668.png b/public/images/pokemon/exp/668.png index 85be1a55032..c9baf1f1647 100644 Binary files a/public/images/pokemon/exp/668.png and b/public/images/pokemon/exp/668.png differ diff --git a/public/images/pokemon/exp/670-blue.png b/public/images/pokemon/exp/670-blue.png index 2134e15d6f9..2022556fc51 100644 Binary files a/public/images/pokemon/exp/670-blue.png and b/public/images/pokemon/exp/670-blue.png differ diff --git a/public/images/pokemon/exp/670-orange.png b/public/images/pokemon/exp/670-orange.png index 456c956d01c..8e312492e4f 100644 Binary files a/public/images/pokemon/exp/670-orange.png and b/public/images/pokemon/exp/670-orange.png differ diff --git a/public/images/pokemon/exp/670-red.png b/public/images/pokemon/exp/670-red.png index 78707eada6e..9c2bfda119a 100644 Binary files a/public/images/pokemon/exp/670-red.png and b/public/images/pokemon/exp/670-red.png differ diff --git a/public/images/pokemon/exp/670-white.png b/public/images/pokemon/exp/670-white.png index 884492ab4c5..56f24136df7 100644 Binary files a/public/images/pokemon/exp/670-white.png and b/public/images/pokemon/exp/670-white.png differ diff --git a/public/images/pokemon/exp/670-yellow.png b/public/images/pokemon/exp/670-yellow.png index 1da9a6ea862..337628dc02d 100644 Binary files a/public/images/pokemon/exp/670-yellow.png and b/public/images/pokemon/exp/670-yellow.png differ diff --git a/public/images/pokemon/exp/6706.png b/public/images/pokemon/exp/6706.png index 77b10183ec7..f665e6e1e5e 100644 Binary files a/public/images/pokemon/exp/6706.png and b/public/images/pokemon/exp/6706.png differ diff --git a/public/images/pokemon/exp/672.json b/public/images/pokemon/exp/672.json deleted file mode 100644 index f337bef7d29..00000000000 --- a/public/images/pokemon/exp/672.json +++ /dev/null @@ -1,479 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 42, "y": 100, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 83, "y": 101, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.11-x64", - "image": "672.png", - "format": "I8", - "size": { "w": 170, "h": 193 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/672.png b/public/images/pokemon/exp/672.png deleted file mode 100644 index 1c261d8d51a..00000000000 Binary files a/public/images/pokemon/exp/672.png and /dev/null differ diff --git a/public/images/pokemon/exp/675.png b/public/images/pokemon/exp/675.png index 55b0d3fe5fe..855692871a2 100644 Binary files a/public/images/pokemon/exp/675.png and b/public/images/pokemon/exp/675.png differ diff --git a/public/images/pokemon/exp/677.png b/public/images/pokemon/exp/677.png index d25f1675102..b9badd8b909 100644 Binary files a/public/images/pokemon/exp/677.png and b/public/images/pokemon/exp/677.png differ diff --git a/public/images/pokemon/exp/678-female.png b/public/images/pokemon/exp/678-female.png index b2021bd5923..6a18a077c20 100644 Binary files a/public/images/pokemon/exp/678-female.png and b/public/images/pokemon/exp/678-female.png differ diff --git a/public/images/pokemon/exp/682.png b/public/images/pokemon/exp/682.png index 104dc143677..d47a185d8c1 100644 Binary files a/public/images/pokemon/exp/682.png and b/public/images/pokemon/exp/682.png differ diff --git a/public/images/pokemon/exp/683.png b/public/images/pokemon/exp/683.png index d657a0ee5fd..b38cfd64bfb 100644 Binary files a/public/images/pokemon/exp/683.png and b/public/images/pokemon/exp/683.png differ diff --git a/public/images/pokemon/exp/684.png b/public/images/pokemon/exp/684.png index 84f06ee4f3c..37c31a34665 100644 Binary files a/public/images/pokemon/exp/684.png and b/public/images/pokemon/exp/684.png differ diff --git a/public/images/pokemon/exp/685.png b/public/images/pokemon/exp/685.png index 2a1ab94bc22..afd65ddf549 100644 Binary files a/public/images/pokemon/exp/685.png and b/public/images/pokemon/exp/685.png differ diff --git a/public/images/pokemon/exp/692.json b/public/images/pokemon/exp/692.json deleted file mode 100644 index 86b535260ae..00000000000 --- a/public/images/pokemon/exp/692.json +++ /dev/null @@ -1,794 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0002.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0003.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0004.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0005.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0006.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0007.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0008.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0009.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0010.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0011.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0012.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0013.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0014.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0015.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0016.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0017.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0018.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0019.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0020.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0021.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0022.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0023.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0024.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0025.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0026.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0027.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0028.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0029.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0030.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0031.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0032.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0033.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0034.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0035.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0036.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0037.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0038.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0039.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0040.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0041.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0042.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0043.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0044.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0045.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0046.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0047.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0048.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0049.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0050.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0051.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0052.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0053.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0054.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0055.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0056.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0057.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0058.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0059.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0060.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0061.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0062.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0063.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0064.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0065.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0066.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0067.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0068.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0069.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0070.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0071.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0072.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0073.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0074.png", - "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0075.png", - "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0076.png", - "frame": { "x": 117, "y": 72, "w": 59, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 2, "w": 59, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0077.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0078.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0079.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0080.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0081.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0082.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0084.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0085.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0086.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0087.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "692.png", - "format": "I8", - "size": { "w": 239, "h": 106 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/692.png b/public/images/pokemon/exp/692.png deleted file mode 100644 index a22655931a8..00000000000 Binary files a/public/images/pokemon/exp/692.png and /dev/null differ diff --git a/public/images/pokemon/exp/693.json b/public/images/pokemon/exp/693.json deleted file mode 100644 index c8f7763de1d..00000000000 --- a/public/images/pokemon/exp/693.json +++ /dev/null @@ -1,902 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0053.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0054.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0055.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0056.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0057.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0058.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0059.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0060.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0061.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0062.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0063.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0064.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0065.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0066.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0067.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0068.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0069.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0070.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0071.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0072.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0073.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0074.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0075.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0076.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0077.png", - "frame": { "x": 303, "y": 140, "w": 102, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 11, "y": 5, "w": 102, "h": 70 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0078.png", - "frame": { "x": 523, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 11, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0079.png", - "frame": { "x": 318, "y": 290, "w": 103, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 7, "w": 103, "h": 64 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0080.png", - "frame": { "x": 105, "y": 1, "w": 102, "h": 75 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 11, "y": 0, "w": 102, "h": 75 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0081.png", - "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0082.png", - "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0084.png", - "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0085.png", - "frame": { "x": 508, "y": 152, "w": 106, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 15, "w": 106, "h": 67 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0086.png", - "frame": { "x": 414, "y": 74, "w": 103, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 8, "w": 103, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0087.png", - "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0088.png", - "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0089.png", - "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0090.png", - "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0091.png", - "frame": { "x": 309, "y": 214, "w": 107, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 14, "w": 107, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0092.png", - "frame": { "x": 306, "y": 1, "w": 106, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 9, "w": 106, "h": 70 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0093.png", - "frame": { "x": 1, "y": 218, "w": 107, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 14, "w": 107, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0094.png", - "frame": { "x": 213, "y": 279, "w": 105, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 14, "w": 105, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0095.png", - "frame": { "x": 103, "y": 341, "w": 104, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 15, "w": 104, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0096.png", - "frame": { "x": 516, "y": 1, "w": 101, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 5, "w": 101, "h": 73 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0097.png", - "frame": { "x": 100, "y": 149, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0098.png", - "frame": { "x": 1, "y": 349, "w": 102, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 16, "w": 102, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0099.png", - "frame": { "x": 103, "y": 404, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 16, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "693.png", - "format": "I8", - "size": { "w": 626, "h": 466 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/693.png b/public/images/pokemon/exp/693.png deleted file mode 100644 index 2e8f1ccd05c..00000000000 Binary files a/public/images/pokemon/exp/693.png and /dev/null differ diff --git a/public/images/pokemon/exp/696.png b/public/images/pokemon/exp/696.png index 7892c40e52b..315b1c108f1 100644 Binary files a/public/images/pokemon/exp/696.png and b/public/images/pokemon/exp/696.png differ diff --git a/public/images/pokemon/exp/697.png b/public/images/pokemon/exp/697.png index 808dd14eabd..a6f5d5e28e2 100644 Binary files a/public/images/pokemon/exp/697.png and b/public/images/pokemon/exp/697.png differ diff --git a/public/images/pokemon/exp/699.png b/public/images/pokemon/exp/699.png index 1b7a4f402e3..fbfb2a2ea7e 100644 Binary files a/public/images/pokemon/exp/699.png and b/public/images/pokemon/exp/699.png differ diff --git a/public/images/pokemon/exp/700.png b/public/images/pokemon/exp/700.png index 4d3e64fab03..b437e612b46 100644 Binary files a/public/images/pokemon/exp/700.png and b/public/images/pokemon/exp/700.png differ diff --git a/public/images/pokemon/exp/702.png b/public/images/pokemon/exp/702.png index 1f1bd6b524f..5bce12bf52a 100644 Binary files a/public/images/pokemon/exp/702.png and b/public/images/pokemon/exp/702.png differ diff --git a/public/images/pokemon/exp/704.png b/public/images/pokemon/exp/704.png index b85d8dfc3c0..2dd12f551d0 100644 Binary files a/public/images/pokemon/exp/704.png and b/public/images/pokemon/exp/704.png differ diff --git a/public/images/pokemon/exp/705.png b/public/images/pokemon/exp/705.png index 0bd8323bcb4..032afe1c566 100644 Binary files a/public/images/pokemon/exp/705.png and b/public/images/pokemon/exp/705.png differ diff --git a/public/images/pokemon/exp/712.png b/public/images/pokemon/exp/712.png index 1726f22f7b8..01f8706bac4 100644 Binary files a/public/images/pokemon/exp/712.png and b/public/images/pokemon/exp/712.png differ diff --git a/public/images/pokemon/exp/713.png b/public/images/pokemon/exp/713.png index 2d0b8477262..eaf68c6880b 100644 Binary files a/public/images/pokemon/exp/713.png and b/public/images/pokemon/exp/713.png differ diff --git a/public/images/pokemon/exp/715.png b/public/images/pokemon/exp/715.png index 3967da0f1b9..e423f23c9a7 100644 Binary files a/public/images/pokemon/exp/715.png and b/public/images/pokemon/exp/715.png differ diff --git a/public/images/pokemon/exp/716-active.png b/public/images/pokemon/exp/716-active.png index 223a73d9cb7..bf324095eb8 100644 Binary files a/public/images/pokemon/exp/716-active.png and b/public/images/pokemon/exp/716-active.png differ diff --git a/public/images/pokemon/exp/716-neutral.png b/public/images/pokemon/exp/716-neutral.png index 91fefde1eb7..01bf0c1feb9 100644 Binary files a/public/images/pokemon/exp/716-neutral.png and b/public/images/pokemon/exp/716-neutral.png differ diff --git a/public/images/pokemon/exp/720-unbound.png b/public/images/pokemon/exp/720-unbound.png index 5fee843a0e2..18060b99a8c 100644 Binary files a/public/images/pokemon/exp/720-unbound.png and b/public/images/pokemon/exp/720-unbound.png differ diff --git a/public/images/pokemon/exp/728.png b/public/images/pokemon/exp/728.png index e7fbfa19d1e..5ac6cbf4535 100644 Binary files a/public/images/pokemon/exp/728.png and b/public/images/pokemon/exp/728.png differ diff --git a/public/images/pokemon/exp/729.png b/public/images/pokemon/exp/729.png index 33af53ebc16..3b7dceaa293 100644 Binary files a/public/images/pokemon/exp/729.png and b/public/images/pokemon/exp/729.png differ diff --git a/public/images/pokemon/exp/730.png b/public/images/pokemon/exp/730.png index 2d274bcf606..9d8968a55f8 100644 Binary files a/public/images/pokemon/exp/730.png and b/public/images/pokemon/exp/730.png differ diff --git a/public/images/pokemon/exp/746-school.png b/public/images/pokemon/exp/746-school.png index 3b2b5e42dd5..f69045a9438 100644 Binary files a/public/images/pokemon/exp/746-school.png and b/public/images/pokemon/exp/746-school.png differ diff --git a/public/images/pokemon/exp/746.png b/public/images/pokemon/exp/746.png index e06ee8916de..bf59cb2f4ed 100644 Binary files a/public/images/pokemon/exp/746.png and b/public/images/pokemon/exp/746.png differ diff --git a/public/images/pokemon/exp/749.png b/public/images/pokemon/exp/749.png index 8d188b69a55..0e46b65f656 100644 Binary files a/public/images/pokemon/exp/749.png and b/public/images/pokemon/exp/749.png differ diff --git a/public/images/pokemon/exp/750.png b/public/images/pokemon/exp/750.png index 4f3d6dbaa68..4f3a26a38b2 100644 Binary files a/public/images/pokemon/exp/750.png and b/public/images/pokemon/exp/750.png differ diff --git a/public/images/pokemon/exp/751.png b/public/images/pokemon/exp/751.png index b670acad126..3e3135d7465 100644 Binary files a/public/images/pokemon/exp/751.png and b/public/images/pokemon/exp/751.png differ diff --git a/public/images/pokemon/exp/752.png b/public/images/pokemon/exp/752.png index e78e9803919..f58cfa2cd87 100644 Binary files a/public/images/pokemon/exp/752.png and b/public/images/pokemon/exp/752.png differ diff --git a/public/images/pokemon/exp/753.json b/public/images/pokemon/exp/753.json deleted file mode 100644 index a1056b119b2..00000000000 --- a/public/images/pokemon/exp/753.json +++ /dev/null @@ -1,2582 +0,0 @@ -{ - "textures": [ - { - "image": "753.png", - "format": "RGBA8888", - "size": { - "w": 137, - "h": 137 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0068.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0069.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0070.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0111.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0112.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0120.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0121.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0122.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0113.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0114.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0118.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0071.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0072.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0062.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0116.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 92, - "w": 30, - "h": 45 - } - }, - { - "filename": "0119.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 92, - "w": 30, - "h": 45 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0077.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2ba4d00a53c1e7152a0bd73555d70dba:5086780147a4891c997ba1592c9a1508:16c1874bc814253ca78e52a99a340ff7$" - } -} diff --git a/public/images/pokemon/exp/753.png b/public/images/pokemon/exp/753.png deleted file mode 100644 index 21a16f7861c..00000000000 Binary files a/public/images/pokemon/exp/753.png and /dev/null differ diff --git a/public/images/pokemon/exp/754.json b/public/images/pokemon/exp/754.json deleted file mode 100644 index 64490baa49f..00000000000 --- a/public/images/pokemon/exp/754.json +++ /dev/null @@ -1,1133 +0,0 @@ -{ - "textures": [ - { - "image": "754.png", - "format": "RGBA8888", - "size": { - "w": 234, - "h": 234 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f79fcee4451cea6aad915f561b31bf78:95fdb55190edb6ce0d5847a4e46b4d5c:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} diff --git a/public/images/pokemon/exp/754.png b/public/images/pokemon/exp/754.png deleted file mode 100644 index f6410e02a11..00000000000 Binary files a/public/images/pokemon/exp/754.png and /dev/null differ diff --git a/public/images/pokemon/exp/770.png b/public/images/pokemon/exp/770.png index 30f9073a58f..a5e91507aa7 100644 Binary files a/public/images/pokemon/exp/770.png and b/public/images/pokemon/exp/770.png differ diff --git a/public/images/pokemon/exp/771.png b/public/images/pokemon/exp/771.png index 3a2ef676382..256331e0fab 100644 Binary files a/public/images/pokemon/exp/771.png and b/public/images/pokemon/exp/771.png differ diff --git a/public/images/pokemon/exp/772.png b/public/images/pokemon/exp/772.png index 0a28235f416..67b8ae2d263 100644 Binary files a/public/images/pokemon/exp/772.png and b/public/images/pokemon/exp/772.png differ diff --git a/public/images/pokemon/exp/773-bug.png b/public/images/pokemon/exp/773-bug.png index e511e648338..f3f26815ebc 100644 Binary files a/public/images/pokemon/exp/773-bug.png and b/public/images/pokemon/exp/773-bug.png differ diff --git a/public/images/pokemon/exp/773-dark.png b/public/images/pokemon/exp/773-dark.png index 7b6c2b6dce9..6243f488ee2 100644 Binary files a/public/images/pokemon/exp/773-dark.png and b/public/images/pokemon/exp/773-dark.png differ diff --git a/public/images/pokemon/exp/773-dragon.png b/public/images/pokemon/exp/773-dragon.png index dbc3e89a698..b41acbecb83 100644 Binary files a/public/images/pokemon/exp/773-dragon.png and b/public/images/pokemon/exp/773-dragon.png differ diff --git a/public/images/pokemon/exp/773-electric.png b/public/images/pokemon/exp/773-electric.png index 7610647c214..3e45d236285 100644 Binary files a/public/images/pokemon/exp/773-electric.png and b/public/images/pokemon/exp/773-electric.png differ diff --git a/public/images/pokemon/exp/773-fairy.png b/public/images/pokemon/exp/773-fairy.png index d365459c3fd..73a06a0104e 100644 Binary files a/public/images/pokemon/exp/773-fairy.png and b/public/images/pokemon/exp/773-fairy.png differ diff --git a/public/images/pokemon/exp/773-fighting.png b/public/images/pokemon/exp/773-fighting.png index dd5cea7cc25..bef55f12568 100644 Binary files a/public/images/pokemon/exp/773-fighting.png and b/public/images/pokemon/exp/773-fighting.png differ diff --git a/public/images/pokemon/exp/773-fire.png b/public/images/pokemon/exp/773-fire.png index 291c9d21183..bf6b07ce8da 100644 Binary files a/public/images/pokemon/exp/773-fire.png and b/public/images/pokemon/exp/773-fire.png differ diff --git a/public/images/pokemon/exp/773-flying.png b/public/images/pokemon/exp/773-flying.png index 780184915e6..93994f6551a 100644 Binary files a/public/images/pokemon/exp/773-flying.png and b/public/images/pokemon/exp/773-flying.png differ diff --git a/public/images/pokemon/exp/773-ghost.png b/public/images/pokemon/exp/773-ghost.png index 64484c31fae..76b6c614f55 100644 Binary files a/public/images/pokemon/exp/773-ghost.png and b/public/images/pokemon/exp/773-ghost.png differ diff --git a/public/images/pokemon/exp/773-grass.png b/public/images/pokemon/exp/773-grass.png index e563d9d57c6..d78509ad0d8 100644 Binary files a/public/images/pokemon/exp/773-grass.png and b/public/images/pokemon/exp/773-grass.png differ diff --git a/public/images/pokemon/exp/773-ground.png b/public/images/pokemon/exp/773-ground.png index 84889d89242..360926cc8b9 100644 Binary files a/public/images/pokemon/exp/773-ground.png and b/public/images/pokemon/exp/773-ground.png differ diff --git a/public/images/pokemon/exp/773-ice.png b/public/images/pokemon/exp/773-ice.png index 3798d41cefb..5f46677e4ca 100644 Binary files a/public/images/pokemon/exp/773-ice.png and b/public/images/pokemon/exp/773-ice.png differ diff --git a/public/images/pokemon/exp/773-poison.png b/public/images/pokemon/exp/773-poison.png index 70a64e6375f..a48a66136c5 100644 Binary files a/public/images/pokemon/exp/773-poison.png and b/public/images/pokemon/exp/773-poison.png differ diff --git a/public/images/pokemon/exp/773-psychic.png b/public/images/pokemon/exp/773-psychic.png index 2ec15fa4867..b729a3738e7 100644 Binary files a/public/images/pokemon/exp/773-psychic.png and b/public/images/pokemon/exp/773-psychic.png differ diff --git a/public/images/pokemon/exp/773-rock.png b/public/images/pokemon/exp/773-rock.png index c0503467175..7f5ae10ab5d 100644 Binary files a/public/images/pokemon/exp/773-rock.png and b/public/images/pokemon/exp/773-rock.png differ diff --git a/public/images/pokemon/exp/773-steel.png b/public/images/pokemon/exp/773-steel.png index e2c5a28d97a..375a977c0a0 100644 Binary files a/public/images/pokemon/exp/773-steel.png and b/public/images/pokemon/exp/773-steel.png differ diff --git a/public/images/pokemon/exp/773-water.png b/public/images/pokemon/exp/773-water.png index 5e830fad8cb..2ce89c91fee 100644 Binary files a/public/images/pokemon/exp/773-water.png and b/public/images/pokemon/exp/773-water.png differ diff --git a/public/images/pokemon/exp/773.png b/public/images/pokemon/exp/773.png index 51a8195c043..854a3eddc51 100644 Binary files a/public/images/pokemon/exp/773.png and b/public/images/pokemon/exp/773.png differ diff --git a/public/images/pokemon/exp/773_Test.png b/public/images/pokemon/exp/773_Test.png index ab932e78c1a..5eddbb3b01b 100644 Binary files a/public/images/pokemon/exp/773_Test.png and b/public/images/pokemon/exp/773_Test.png differ diff --git a/public/images/pokemon/exp/774-blue.png b/public/images/pokemon/exp/774-blue.png index 100fe4a151d..933000fe9ae 100644 Binary files a/public/images/pokemon/exp/774-blue.png and b/public/images/pokemon/exp/774-blue.png differ diff --git a/public/images/pokemon/exp/774-green.png b/public/images/pokemon/exp/774-green.png index 8d2ceff5d40..f4466613087 100644 Binary files a/public/images/pokemon/exp/774-green.png and b/public/images/pokemon/exp/774-green.png differ diff --git a/public/images/pokemon/exp/774-indigo.png b/public/images/pokemon/exp/774-indigo.png index 08c84600f38..3fd694b7cb5 100644 Binary files a/public/images/pokemon/exp/774-indigo.png and b/public/images/pokemon/exp/774-indigo.png differ diff --git a/public/images/pokemon/exp/774-orange.png b/public/images/pokemon/exp/774-orange.png index 64b579682af..9370e10a073 100644 Binary files a/public/images/pokemon/exp/774-orange.png and b/public/images/pokemon/exp/774-orange.png differ diff --git a/public/images/pokemon/exp/774-red.png b/public/images/pokemon/exp/774-red.png index c5fb20a672a..f128464f5b8 100644 Binary files a/public/images/pokemon/exp/774-red.png and b/public/images/pokemon/exp/774-red.png differ diff --git a/public/images/pokemon/exp/774-violet.png b/public/images/pokemon/exp/774-violet.png index e5cf3f02f8c..4bfc092911f 100644 Binary files a/public/images/pokemon/exp/774-violet.png and b/public/images/pokemon/exp/774-violet.png differ diff --git a/public/images/pokemon/exp/774-yellow.png b/public/images/pokemon/exp/774-yellow.png index 153b6837fd4..9389e30128c 100644 Binary files a/public/images/pokemon/exp/774-yellow.png and b/public/images/pokemon/exp/774-yellow.png differ diff --git a/public/images/pokemon/exp/776.png b/public/images/pokemon/exp/776.png index 07550683210..36703cf36cf 100644 Binary files a/public/images/pokemon/exp/776.png and b/public/images/pokemon/exp/776.png differ diff --git a/public/images/pokemon/exp/777.png b/public/images/pokemon/exp/777.png index f60fcc50786..d554c9d491a 100644 Binary files a/public/images/pokemon/exp/777.png and b/public/images/pokemon/exp/777.png differ diff --git a/public/images/pokemon/exp/778-busted.png b/public/images/pokemon/exp/778-busted.png index 67740699c02..e664ddbc1b4 100644 Binary files a/public/images/pokemon/exp/778-busted.png and b/public/images/pokemon/exp/778-busted.png differ diff --git a/public/images/pokemon/exp/778-disguised.png b/public/images/pokemon/exp/778-disguised.png index ba26b8db997..a3e9eb0afca 100644 Binary files a/public/images/pokemon/exp/778-disguised.png and b/public/images/pokemon/exp/778-disguised.png differ diff --git a/public/images/pokemon/exp/780.png b/public/images/pokemon/exp/780.png index 69a13eb3bf6..3601ca0b2bf 100644 Binary files a/public/images/pokemon/exp/780.png and b/public/images/pokemon/exp/780.png differ diff --git a/public/images/pokemon/exp/793.png b/public/images/pokemon/exp/793.png index fb1e37da979..a2539c6d2dd 100644 Binary files a/public/images/pokemon/exp/793.png and b/public/images/pokemon/exp/793.png differ diff --git a/public/images/pokemon/exp/798.png b/public/images/pokemon/exp/798.png index 8434a1721e8..af75ca982af 100644 Binary files a/public/images/pokemon/exp/798.png and b/public/images/pokemon/exp/798.png differ diff --git a/public/images/pokemon/exp/815-gigantamax.png b/public/images/pokemon/exp/815-gigantamax.png index 4720e564c09..56c71b21be0 100644 Binary files a/public/images/pokemon/exp/815-gigantamax.png and b/public/images/pokemon/exp/815-gigantamax.png differ diff --git a/public/images/pokemon/exp/818.png b/public/images/pokemon/exp/818.png index b71cccf2679..520629cc248 100644 Binary files a/public/images/pokemon/exp/818.png and b/public/images/pokemon/exp/818.png differ diff --git a/public/images/pokemon/exp/821.png b/public/images/pokemon/exp/821.png index 8bb00063bcb..d86aaf20412 100644 Binary files a/public/images/pokemon/exp/821.png and b/public/images/pokemon/exp/821.png differ diff --git a/public/images/pokemon/exp/823.png b/public/images/pokemon/exp/823.png index b280ac7c9e6..cb8bc1dc2ab 100644 Binary files a/public/images/pokemon/exp/823.png and b/public/images/pokemon/exp/823.png differ diff --git a/public/images/pokemon/exp/839-gigantamax.png b/public/images/pokemon/exp/839-gigantamax.png index 5a614b0c895..47c00c39d06 100644 Binary files a/public/images/pokemon/exp/839-gigantamax.png and b/public/images/pokemon/exp/839-gigantamax.png differ diff --git a/public/images/pokemon/exp/840.png b/public/images/pokemon/exp/840.png index 86b701fa0d7..9c671812a20 100644 Binary files a/public/images/pokemon/exp/840.png and b/public/images/pokemon/exp/840.png differ diff --git a/public/images/pokemon/exp/841.png b/public/images/pokemon/exp/841.png index 564ffaa0f27..0e41ce4f421 100644 Binary files a/public/images/pokemon/exp/841.png and b/public/images/pokemon/exp/841.png differ diff --git a/public/images/pokemon/exp/842.png b/public/images/pokemon/exp/842.png index 41c2ebcf7d4..3fa6d93f812 100644 Binary files a/public/images/pokemon/exp/842.png and b/public/images/pokemon/exp/842.png differ diff --git a/public/images/pokemon/exp/845-gulping.png b/public/images/pokemon/exp/845-gulping.png index bb282072801..ed996341df1 100644 Binary files a/public/images/pokemon/exp/845-gulping.png and b/public/images/pokemon/exp/845-gulping.png differ diff --git a/public/images/pokemon/exp/847.png b/public/images/pokemon/exp/847.png index 4540d841a07..6ac2b2189ac 100644 Binary files a/public/images/pokemon/exp/847.png and b/public/images/pokemon/exp/847.png differ diff --git a/public/images/pokemon/exp/855.png b/public/images/pokemon/exp/855.png index 8e226817c52..00adc65a42b 100644 Binary files a/public/images/pokemon/exp/855.png and b/public/images/pokemon/exp/855.png differ diff --git a/public/images/pokemon/exp/857.png b/public/images/pokemon/exp/857.png index 85f17ece3d8..e5e4e812068 100644 Binary files a/public/images/pokemon/exp/857.png and b/public/images/pokemon/exp/857.png differ diff --git a/public/images/pokemon/exp/864.png b/public/images/pokemon/exp/864.png index 2776e938e82..630de22a040 100644 Binary files a/public/images/pokemon/exp/864.png and b/public/images/pokemon/exp/864.png differ diff --git a/public/images/pokemon/exp/865.png b/public/images/pokemon/exp/865.png index 8326e41ccc6..1863349a93b 100644 Binary files a/public/images/pokemon/exp/865.png and b/public/images/pokemon/exp/865.png differ diff --git a/public/images/pokemon/exp/867.png b/public/images/pokemon/exp/867.png index 4f8f67842bd..a9304f5f078 100644 Binary files a/public/images/pokemon/exp/867.png and b/public/images/pokemon/exp/867.png differ diff --git a/public/images/pokemon/exp/871.png b/public/images/pokemon/exp/871.png index 8f03d72f0b3..f3a6141efb1 100644 Binary files a/public/images/pokemon/exp/871.png and b/public/images/pokemon/exp/871.png differ diff --git a/public/images/pokemon/exp/876-female.png b/public/images/pokemon/exp/876-female.png index 0eb5b407970..accb53e5414 100644 Binary files a/public/images/pokemon/exp/876-female.png and b/public/images/pokemon/exp/876-female.png differ diff --git a/public/images/pokemon/exp/876.png b/public/images/pokemon/exp/876.png index 842a98830a7..735ad779c29 100644 Binary files a/public/images/pokemon/exp/876.png and b/public/images/pokemon/exp/876.png differ diff --git a/public/images/pokemon/exp/880.png b/public/images/pokemon/exp/880.png index 34a898fb5ac..eada54c30e0 100644 Binary files a/public/images/pokemon/exp/880.png and b/public/images/pokemon/exp/880.png differ diff --git a/public/images/pokemon/exp/881.png b/public/images/pokemon/exp/881.png index 291f4c261fa..40c6fb5202d 100644 Binary files a/public/images/pokemon/exp/881.png and b/public/images/pokemon/exp/881.png differ diff --git a/public/images/pokemon/exp/882.png b/public/images/pokemon/exp/882.png index 37c4facc672..4be217de63c 100644 Binary files a/public/images/pokemon/exp/882.png and b/public/images/pokemon/exp/882.png differ diff --git a/public/images/pokemon/exp/890-eternamax.png b/public/images/pokemon/exp/890-eternamax.png index 33c8f5f9631..ed70122162e 100644 Binary files a/public/images/pokemon/exp/890-eternamax.png and b/public/images/pokemon/exp/890-eternamax.png differ diff --git a/public/images/pokemon/exp/894.png b/public/images/pokemon/exp/894.png index 749eec38e5e..40d66f4705d 100644 Binary files a/public/images/pokemon/exp/894.png and b/public/images/pokemon/exp/894.png differ diff --git a/public/images/pokemon/exp/896.png b/public/images/pokemon/exp/896.png index 7025ae49fb8..aa4d4f738ba 100644 Binary files a/public/images/pokemon/exp/896.png and b/public/images/pokemon/exp/896.png differ diff --git a/public/images/pokemon/exp/898-ice.png b/public/images/pokemon/exp/898-ice.png index 3cdf6adc202..ffddb717771 100644 Binary files a/public/images/pokemon/exp/898-ice.png and b/public/images/pokemon/exp/898-ice.png differ diff --git a/public/images/pokemon/exp/898-shadow.png b/public/images/pokemon/exp/898-shadow.png index b5f18487f32..866b7f0e301 100644 Binary files a/public/images/pokemon/exp/898-shadow.png and b/public/images/pokemon/exp/898-shadow.png differ diff --git a/public/images/pokemon/exp/912.png b/public/images/pokemon/exp/912.png index b8c7465768c..1e6e0762186 100644 Binary files a/public/images/pokemon/exp/912.png and b/public/images/pokemon/exp/912.png differ diff --git a/public/images/pokemon/exp/913.png b/public/images/pokemon/exp/913.png index 538f852208a..2b78ef547f1 100644 Binary files a/public/images/pokemon/exp/913.png and b/public/images/pokemon/exp/913.png differ diff --git a/public/images/pokemon/exp/914.png b/public/images/pokemon/exp/914.png index 013934d03f5..4b6e2e8319a 100644 Binary files a/public/images/pokemon/exp/914.png and b/public/images/pokemon/exp/914.png differ diff --git a/public/images/pokemon/exp/940.png b/public/images/pokemon/exp/940.png index 5ecc20ea5d1..7ca3d5b79e3 100644 Binary files a/public/images/pokemon/exp/940.png and b/public/images/pokemon/exp/940.png differ diff --git a/public/images/pokemon/exp/945.png b/public/images/pokemon/exp/945.png index b50e1a9af52..cb4c7f68790 100644 Binary files a/public/images/pokemon/exp/945.png and b/public/images/pokemon/exp/945.png differ diff --git a/public/images/pokemon/exp/953.png b/public/images/pokemon/exp/953.png index 8a6ca2e7eff..3daa8ee48e3 100644 Binary files a/public/images/pokemon/exp/953.png and b/public/images/pokemon/exp/953.png differ diff --git a/public/images/pokemon/exp/954.png b/public/images/pokemon/exp/954.png index 85a6017c417..4e5f95153f3 100644 Binary files a/public/images/pokemon/exp/954.png and b/public/images/pokemon/exp/954.png differ diff --git a/public/images/pokemon/exp/957.png b/public/images/pokemon/exp/957.png index b3dd3f68974..9b66bfef074 100644 Binary files a/public/images/pokemon/exp/957.png and b/public/images/pokemon/exp/957.png differ diff --git a/public/images/pokemon/exp/958.png b/public/images/pokemon/exp/958.png index 75b5c27a68d..2007000a4d0 100644 Binary files a/public/images/pokemon/exp/958.png and b/public/images/pokemon/exp/958.png differ diff --git a/public/images/pokemon/exp/959.png b/public/images/pokemon/exp/959.png index 187f8063e53..d0900bfb4d8 100644 Binary files a/public/images/pokemon/exp/959.png and b/public/images/pokemon/exp/959.png differ diff --git a/public/images/pokemon/exp/970.png b/public/images/pokemon/exp/970.png index 1c3a4c3c592..7955f0dd06f 100644 Binary files a/public/images/pokemon/exp/970.png and b/public/images/pokemon/exp/970.png differ diff --git a/public/images/pokemon/exp/974.png b/public/images/pokemon/exp/974.png index 354bcbed533..81204048269 100644 Binary files a/public/images/pokemon/exp/974.png and b/public/images/pokemon/exp/974.png differ diff --git a/public/images/pokemon/exp/975.png b/public/images/pokemon/exp/975.png index a0683befc3b..009f3a1168f 100644 Binary files a/public/images/pokemon/exp/975.png and b/public/images/pokemon/exp/975.png differ diff --git a/public/images/pokemon/exp/981.png b/public/images/pokemon/exp/981.png index c763e8ec358..ba2ab6e4038 100644 Binary files a/public/images/pokemon/exp/981.png and b/public/images/pokemon/exp/981.png differ diff --git a/public/images/pokemon/exp/983.png b/public/images/pokemon/exp/983.png index 2fac1759c12..e3279c3881e 100644 Binary files a/public/images/pokemon/exp/983.png and b/public/images/pokemon/exp/983.png differ diff --git a/public/images/pokemon/exp/997.png b/public/images/pokemon/exp/997.png index 311fbf02eb7..767eedbdffe 100644 Binary files a/public/images/pokemon/exp/997.png and b/public/images/pokemon/exp/997.png differ diff --git a/public/images/pokemon/exp/back/1001.png b/public/images/pokemon/exp/back/1001.png index 7eead83b578..ce548936496 100644 Binary files a/public/images/pokemon/exp/back/1001.png and b/public/images/pokemon/exp/back/1001.png differ diff --git a/public/images/pokemon/exp/back/1003.png b/public/images/pokemon/exp/back/1003.png index fc368e56f81..3574e65164f 100644 Binary files a/public/images/pokemon/exp/back/1003.png and b/public/images/pokemon/exp/back/1003.png differ diff --git a/public/images/pokemon/exp/back/150-mega-x.png b/public/images/pokemon/exp/back/150-mega-x.png index 80907e95074..2233faf514d 100644 Binary files a/public/images/pokemon/exp/back/150-mega-x.png and b/public/images/pokemon/exp/back/150-mega-x.png differ diff --git a/public/images/pokemon/exp/back/2026.png b/public/images/pokemon/exp/back/2026.png index 0624bb2c5e7..87a162758af 100644 Binary files a/public/images/pokemon/exp/back/2026.png and b/public/images/pokemon/exp/back/2026.png differ diff --git a/public/images/pokemon/exp/back/2037.png b/public/images/pokemon/exp/back/2037.png index 7c5d688b020..aacac3b6688 100644 Binary files a/public/images/pokemon/exp/back/2037.png and b/public/images/pokemon/exp/back/2037.png differ diff --git a/public/images/pokemon/exp/back/2038.png b/public/images/pokemon/exp/back/2038.png index f4a022692a1..d01235fd211 100644 Binary files a/public/images/pokemon/exp/back/2038.png and b/public/images/pokemon/exp/back/2038.png differ diff --git a/public/images/pokemon/exp/back/2074.png b/public/images/pokemon/exp/back/2074.png index e8e2dc5ad22..b1da8cc85c8 100644 Binary files a/public/images/pokemon/exp/back/2074.png and b/public/images/pokemon/exp/back/2074.png differ diff --git a/public/images/pokemon/exp/back/2075.png b/public/images/pokemon/exp/back/2075.png index 6c11c18bd1d..abac1e16c61 100644 Binary files a/public/images/pokemon/exp/back/2075.png and b/public/images/pokemon/exp/back/2075.png differ diff --git a/public/images/pokemon/exp/back/2076.png b/public/images/pokemon/exp/back/2076.png index a3e203ac669..a3cfbee207b 100644 Binary files a/public/images/pokemon/exp/back/2076.png and b/public/images/pokemon/exp/back/2076.png differ diff --git a/public/images/pokemon/exp/back/2088.png b/public/images/pokemon/exp/back/2088.png index 24bf7f0f893..d830bc83767 100644 Binary files a/public/images/pokemon/exp/back/2088.png and b/public/images/pokemon/exp/back/2088.png differ diff --git a/public/images/pokemon/exp/back/2089.png b/public/images/pokemon/exp/back/2089.png index 244aeeed5a9..ff6e40cb85e 100644 Binary files a/public/images/pokemon/exp/back/2089.png and b/public/images/pokemon/exp/back/2089.png differ diff --git a/public/images/pokemon/exp/back/229-mega.png b/public/images/pokemon/exp/back/229-mega.png index b538f3523dd..ff3387ec797 100644 Binary files a/public/images/pokemon/exp/back/229-mega.png and b/public/images/pokemon/exp/back/229-mega.png differ diff --git a/public/images/pokemon/exp/back/248-mega.png b/public/images/pokemon/exp/back/248-mega.png index 1e4918e5ca7..6bcc76a4e58 100644 Binary files a/public/images/pokemon/exp/back/248-mega.png and b/public/images/pokemon/exp/back/248-mega.png differ diff --git a/public/images/pokemon/exp/back/257-mega.png b/public/images/pokemon/exp/back/257-mega.png index b27b98fa153..53ec4b2ee62 100644 Binary files a/public/images/pokemon/exp/back/257-mega.png and b/public/images/pokemon/exp/back/257-mega.png differ diff --git a/public/images/pokemon/exp/back/359-mega.png b/public/images/pokemon/exp/back/359-mega.png index 1659752a571..139a8c763a0 100644 Binary files a/public/images/pokemon/exp/back/359-mega.png and b/public/images/pokemon/exp/back/359-mega.png differ diff --git a/public/images/pokemon/exp/back/362-mega.png b/public/images/pokemon/exp/back/362-mega.png index 5bbfd932d33..cb7aea134f0 100644 Binary files a/public/images/pokemon/exp/back/362-mega.png and b/public/images/pokemon/exp/back/362-mega.png differ diff --git a/public/images/pokemon/exp/back/380-mega.png b/public/images/pokemon/exp/back/380-mega.png index b6941fc2611..cf5a141a219 100644 Binary files a/public/images/pokemon/exp/back/380-mega.png and b/public/images/pokemon/exp/back/380-mega.png differ diff --git a/public/images/pokemon/exp/back/381-mega.png b/public/images/pokemon/exp/back/381-mega.png index b6941fc2611..cf5a141a219 100644 Binary files a/public/images/pokemon/exp/back/381-mega.png and b/public/images/pokemon/exp/back/381-mega.png differ diff --git a/public/images/pokemon/exp/back/382-primal.png b/public/images/pokemon/exp/back/382-primal.png index 7bf840bcf24..95a6e0a5eec 100644 Binary files a/public/images/pokemon/exp/back/382-primal.png and b/public/images/pokemon/exp/back/382-primal.png differ diff --git a/public/images/pokemon/exp/back/4052.png b/public/images/pokemon/exp/back/4052.png index 7419fc8e844..365cb304ac5 100644 Binary files a/public/images/pokemon/exp/back/4052.png and b/public/images/pokemon/exp/back/4052.png differ diff --git a/public/images/pokemon/exp/back/4080.png b/public/images/pokemon/exp/back/4080.png index d0ffefd6503..ec44ae83320 100644 Binary files a/public/images/pokemon/exp/back/4080.png and b/public/images/pokemon/exp/back/4080.png differ diff --git a/public/images/pokemon/exp/back/4144.png b/public/images/pokemon/exp/back/4144.png index de643227ebb..c24a504d814 100644 Binary files a/public/images/pokemon/exp/back/4144.png and b/public/images/pokemon/exp/back/4144.png differ diff --git a/public/images/pokemon/exp/back/4145.png b/public/images/pokemon/exp/back/4145.png index 5c5ded10a5c..dd3c96c9366 100644 Binary files a/public/images/pokemon/exp/back/4145.png and b/public/images/pokemon/exp/back/4145.png differ diff --git a/public/images/pokemon/exp/back/4146.png b/public/images/pokemon/exp/back/4146.png index 5c1e2fb0f95..92df7cddeb3 100644 Binary files a/public/images/pokemon/exp/back/4146.png and b/public/images/pokemon/exp/back/4146.png differ diff --git a/public/images/pokemon/exp/back/4199.png b/public/images/pokemon/exp/back/4199.png index aa841a9e4d1..7ed5658944a 100644 Binary files a/public/images/pokemon/exp/back/4199.png and b/public/images/pokemon/exp/back/4199.png differ diff --git a/public/images/pokemon/exp/back/4222.png b/public/images/pokemon/exp/back/4222.png index 163dcb1432e..9016bec4dca 100644 Binary files a/public/images/pokemon/exp/back/4222.png and b/public/images/pokemon/exp/back/4222.png differ diff --git a/public/images/pokemon/exp/back/4562.png b/public/images/pokemon/exp/back/4562.png index 0f8fdde8b81..1aa2e2a31e4 100644 Binary files a/public/images/pokemon/exp/back/4562.png and b/public/images/pokemon/exp/back/4562.png differ diff --git a/public/images/pokemon/exp/back/569-gigantamax.png b/public/images/pokemon/exp/back/569-gigantamax.png index 13bbe97bee4..8d7d7b7e858 100644 Binary files a/public/images/pokemon/exp/back/569-gigantamax.png and b/public/images/pokemon/exp/back/569-gigantamax.png differ diff --git a/public/images/pokemon/exp/back/6503.png b/public/images/pokemon/exp/back/6503.png index 39b93590981..a64d3b77941 100644 Binary files a/public/images/pokemon/exp/back/6503.png and b/public/images/pokemon/exp/back/6503.png differ diff --git a/public/images/pokemon/exp/back/651.png b/public/images/pokemon/exp/back/651.png index b16c8d5d67b..3b4005a42e3 100644 Binary files a/public/images/pokemon/exp/back/651.png and b/public/images/pokemon/exp/back/651.png differ diff --git a/public/images/pokemon/exp/back/653.png b/public/images/pokemon/exp/back/653.png index 58682e90e58..964afe9bc71 100644 Binary files a/public/images/pokemon/exp/back/653.png and b/public/images/pokemon/exp/back/653.png differ diff --git a/public/images/pokemon/exp/back/654.png b/public/images/pokemon/exp/back/654.png index f5d317f8a2e..2cc976fbf15 100644 Binary files a/public/images/pokemon/exp/back/654.png and b/public/images/pokemon/exp/back/654.png differ diff --git a/public/images/pokemon/exp/back/656.png b/public/images/pokemon/exp/back/656.png index 9e98534aab2..2103fe8b2c1 100644 Binary files a/public/images/pokemon/exp/back/656.png and b/public/images/pokemon/exp/back/656.png differ diff --git a/public/images/pokemon/exp/back/657.png b/public/images/pokemon/exp/back/657.png index 72e8367e10d..517698569d6 100644 Binary files a/public/images/pokemon/exp/back/657.png and b/public/images/pokemon/exp/back/657.png differ diff --git a/public/images/pokemon/exp/back/658-ash.png b/public/images/pokemon/exp/back/658-ash.png index 5d8794a1c0f..998339e2883 100644 Binary files a/public/images/pokemon/exp/back/658-ash.png and b/public/images/pokemon/exp/back/658-ash.png differ diff --git a/public/images/pokemon/exp/back/658.png b/public/images/pokemon/exp/back/658.png index 07b9084c43e..7bd04a147ac 100644 Binary files a/public/images/pokemon/exp/back/658.png and b/public/images/pokemon/exp/back/658.png differ diff --git a/public/images/pokemon/exp/back/661.png b/public/images/pokemon/exp/back/661.png index 67d9bb04293..2d9386df9b7 100644 Binary files a/public/images/pokemon/exp/back/661.png and b/public/images/pokemon/exp/back/661.png differ diff --git a/public/images/pokemon/exp/back/662.png b/public/images/pokemon/exp/back/662.png index 39a9e8e53ad..edfae6fcfd9 100644 Binary files a/public/images/pokemon/exp/back/662.png and b/public/images/pokemon/exp/back/662.png differ diff --git a/public/images/pokemon/exp/back/663.png b/public/images/pokemon/exp/back/663.png index 6b49fc0a803..b600edff6f7 100644 Binary files a/public/images/pokemon/exp/back/663.png and b/public/images/pokemon/exp/back/663.png differ diff --git a/public/images/pokemon/exp/back/664.png b/public/images/pokemon/exp/back/664.png index a8f0906c60d..f84d77bd57e 100644 Binary files a/public/images/pokemon/exp/back/664.png and b/public/images/pokemon/exp/back/664.png differ diff --git a/public/images/pokemon/exp/back/665.png b/public/images/pokemon/exp/back/665.png index c989771bc5f..7fc2b0bf796 100644 Binary files a/public/images/pokemon/exp/back/665.png and b/public/images/pokemon/exp/back/665.png differ diff --git a/public/images/pokemon/exp/back/666-archipelago.png b/public/images/pokemon/exp/back/666-archipelago.png index f83b645e0fe..42e5c7f608d 100644 Binary files a/public/images/pokemon/exp/back/666-archipelago.png and b/public/images/pokemon/exp/back/666-archipelago.png differ diff --git a/public/images/pokemon/exp/back/666-continental.png b/public/images/pokemon/exp/back/666-continental.png index f1a4cf5a2a4..c7374fc1ef6 100644 Binary files a/public/images/pokemon/exp/back/666-continental.png and b/public/images/pokemon/exp/back/666-continental.png differ diff --git a/public/images/pokemon/exp/back/666-elegant.png b/public/images/pokemon/exp/back/666-elegant.png index 2a75c09b505..a847204c100 100644 Binary files a/public/images/pokemon/exp/back/666-elegant.png and b/public/images/pokemon/exp/back/666-elegant.png differ diff --git a/public/images/pokemon/exp/back/666-fancy.png b/public/images/pokemon/exp/back/666-fancy.png index f7da62d0637..5853a96f5a4 100644 Binary files a/public/images/pokemon/exp/back/666-fancy.png and b/public/images/pokemon/exp/back/666-fancy.png differ diff --git a/public/images/pokemon/exp/back/666-garden.png b/public/images/pokemon/exp/back/666-garden.png index 35e0dd02087..7a29b43f2ae 100644 Binary files a/public/images/pokemon/exp/back/666-garden.png and b/public/images/pokemon/exp/back/666-garden.png differ diff --git a/public/images/pokemon/exp/back/666-high-plains.png b/public/images/pokemon/exp/back/666-high-plains.png index 7b84c4ebac3..aff9d7db789 100644 Binary files a/public/images/pokemon/exp/back/666-high-plains.png and b/public/images/pokemon/exp/back/666-high-plains.png differ diff --git a/public/images/pokemon/exp/back/666-icy-snow.png b/public/images/pokemon/exp/back/666-icy-snow.png index 332e96a6d61..cbf92fb98be 100644 Binary files a/public/images/pokemon/exp/back/666-icy-snow.png and b/public/images/pokemon/exp/back/666-icy-snow.png differ diff --git a/public/images/pokemon/exp/back/666-jungle.png b/public/images/pokemon/exp/back/666-jungle.png index 291c6bce18c..da296053ba8 100644 Binary files a/public/images/pokemon/exp/back/666-jungle.png and b/public/images/pokemon/exp/back/666-jungle.png differ diff --git a/public/images/pokemon/exp/back/666-marine.png b/public/images/pokemon/exp/back/666-marine.png index 9e644f0cdaa..6f62cd7b8f7 100644 Binary files a/public/images/pokemon/exp/back/666-marine.png and b/public/images/pokemon/exp/back/666-marine.png differ diff --git a/public/images/pokemon/exp/back/666-meadow.png b/public/images/pokemon/exp/back/666-meadow.png index fabeb9730db..109a5b0615d 100644 Binary files a/public/images/pokemon/exp/back/666-meadow.png and b/public/images/pokemon/exp/back/666-meadow.png differ diff --git a/public/images/pokemon/exp/back/666-modern.png b/public/images/pokemon/exp/back/666-modern.png index 01a3981dd97..6eeaa21f36e 100644 Binary files a/public/images/pokemon/exp/back/666-modern.png and b/public/images/pokemon/exp/back/666-modern.png differ diff --git a/public/images/pokemon/exp/back/666-monsoon.png b/public/images/pokemon/exp/back/666-monsoon.png index 32cf2331411..f3cfa49f247 100644 Binary files a/public/images/pokemon/exp/back/666-monsoon.png and b/public/images/pokemon/exp/back/666-monsoon.png differ diff --git a/public/images/pokemon/exp/back/666-ocean.png b/public/images/pokemon/exp/back/666-ocean.png index 65665ea56c3..83dac1f43f5 100644 Binary files a/public/images/pokemon/exp/back/666-ocean.png and b/public/images/pokemon/exp/back/666-ocean.png differ diff --git a/public/images/pokemon/exp/back/666-poke-ball.png b/public/images/pokemon/exp/back/666-poke-ball.png index 895a2bf680f..28e309b94f3 100644 Binary files a/public/images/pokemon/exp/back/666-poke-ball.png and b/public/images/pokemon/exp/back/666-poke-ball.png differ diff --git a/public/images/pokemon/exp/back/666-polar.png b/public/images/pokemon/exp/back/666-polar.png index c7ec3ec550a..036d9cd5db1 100644 Binary files a/public/images/pokemon/exp/back/666-polar.png and b/public/images/pokemon/exp/back/666-polar.png differ diff --git a/public/images/pokemon/exp/back/666-river.png b/public/images/pokemon/exp/back/666-river.png index 4e0493b8de5..839585ce310 100644 Binary files a/public/images/pokemon/exp/back/666-river.png and b/public/images/pokemon/exp/back/666-river.png differ diff --git a/public/images/pokemon/exp/back/666-sandstorm.png b/public/images/pokemon/exp/back/666-sandstorm.png index d95ab4413a5..2cb8c9df12e 100644 Binary files a/public/images/pokemon/exp/back/666-sandstorm.png and b/public/images/pokemon/exp/back/666-sandstorm.png differ diff --git a/public/images/pokemon/exp/back/666-savanna.png b/public/images/pokemon/exp/back/666-savanna.png index 4169b1325a6..fc8fdd9220d 100644 Binary files a/public/images/pokemon/exp/back/666-savanna.png and b/public/images/pokemon/exp/back/666-savanna.png differ diff --git a/public/images/pokemon/exp/back/666-sun.png b/public/images/pokemon/exp/back/666-sun.png index 5cc814e82d7..bfa4739954c 100644 Binary files a/public/images/pokemon/exp/back/666-sun.png and b/public/images/pokemon/exp/back/666-sun.png differ diff --git a/public/images/pokemon/exp/back/666-tundra.png b/public/images/pokemon/exp/back/666-tundra.png index 01657b339fd..26caa428b0a 100644 Binary files a/public/images/pokemon/exp/back/666-tundra.png and b/public/images/pokemon/exp/back/666-tundra.png differ diff --git a/public/images/pokemon/exp/back/667.png b/public/images/pokemon/exp/back/667.png index f1209cf8e20..50590cf5da9 100644 Binary files a/public/images/pokemon/exp/back/667.png and b/public/images/pokemon/exp/back/667.png differ diff --git a/public/images/pokemon/exp/back/668.png b/public/images/pokemon/exp/back/668.png index e600e3e40e1..d8979c70050 100644 Binary files a/public/images/pokemon/exp/back/668.png and b/public/images/pokemon/exp/back/668.png differ diff --git a/public/images/pokemon/exp/back/670-blue.png b/public/images/pokemon/exp/back/670-blue.png index 502e43b6291..803e64c6805 100644 Binary files a/public/images/pokemon/exp/back/670-blue.png and b/public/images/pokemon/exp/back/670-blue.png differ diff --git a/public/images/pokemon/exp/back/670-orange.png b/public/images/pokemon/exp/back/670-orange.png index a9fe327462c..883c0fa8021 100644 Binary files a/public/images/pokemon/exp/back/670-orange.png and b/public/images/pokemon/exp/back/670-orange.png differ diff --git a/public/images/pokemon/exp/back/670-red.png b/public/images/pokemon/exp/back/670-red.png index 29254d959e3..19a4a388f86 100644 Binary files a/public/images/pokemon/exp/back/670-red.png and b/public/images/pokemon/exp/back/670-red.png differ diff --git a/public/images/pokemon/exp/back/670-white.png b/public/images/pokemon/exp/back/670-white.png index 1c17a0ca8e0..94d6aadce3e 100644 Binary files a/public/images/pokemon/exp/back/670-white.png and b/public/images/pokemon/exp/back/670-white.png differ diff --git a/public/images/pokemon/exp/back/670-yellow.png b/public/images/pokemon/exp/back/670-yellow.png index 37a2094ac74..c6aa05163b7 100644 Binary files a/public/images/pokemon/exp/back/670-yellow.png and b/public/images/pokemon/exp/back/670-yellow.png differ diff --git a/public/images/pokemon/exp/back/6706.png b/public/images/pokemon/exp/back/6706.png index 7842bbbffad..93b51cb1cd1 100644 Binary files a/public/images/pokemon/exp/back/6706.png and b/public/images/pokemon/exp/back/6706.png differ diff --git a/public/images/pokemon/exp/back/672.json b/public/images/pokemon/exp/back/672.json deleted file mode 100644 index f877b9abc2e..00000000000 --- a/public/images/pokemon/exp/back/672.json +++ /dev/null @@ -1,479 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.11-x64", - "image": "672.png", - "format": "I8", - "size": { "w": 160, "h": 195 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/back/672.png b/public/images/pokemon/exp/back/672.png deleted file mode 100644 index ef5cf63938e..00000000000 Binary files a/public/images/pokemon/exp/back/672.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/682.png b/public/images/pokemon/exp/back/682.png index d926cdc22a8..aa1ab14355e 100644 Binary files a/public/images/pokemon/exp/back/682.png and b/public/images/pokemon/exp/back/682.png differ diff --git a/public/images/pokemon/exp/back/683.png b/public/images/pokemon/exp/back/683.png index e65d213eaf2..878b7eccc42 100644 Binary files a/public/images/pokemon/exp/back/683.png and b/public/images/pokemon/exp/back/683.png differ diff --git a/public/images/pokemon/exp/back/684.png b/public/images/pokemon/exp/back/684.png index 517cc69f8ee..35886619394 100644 Binary files a/public/images/pokemon/exp/back/684.png and b/public/images/pokemon/exp/back/684.png differ diff --git a/public/images/pokemon/exp/back/685.png b/public/images/pokemon/exp/back/685.png index d05cf54fb63..7a3c61b8558 100644 Binary files a/public/images/pokemon/exp/back/685.png and b/public/images/pokemon/exp/back/685.png differ diff --git a/public/images/pokemon/exp/back/692.json b/public/images/pokemon/exp/back/692.json deleted file mode 100644 index 801710c4861..00000000000 --- a/public/images/pokemon/exp/back/692.json +++ /dev/null @@ -1,794 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0002.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0003.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0004.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0005.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0006.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0007.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0008.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0009.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0010.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0011.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0012.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0013.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0014.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0015.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0016.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0017.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0018.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0019.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0020.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0021.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0022.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0023.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0024.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0025.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0026.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0027.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0028.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0029.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0030.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0031.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0032.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0033.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0034.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0035.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0036.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0037.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0038.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0039.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0040.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0041.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0042.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0043.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0044.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0045.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0046.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0047.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0048.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0049.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0050.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0051.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0052.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0053.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0054.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0055.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0056.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0057.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0058.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0059.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0060.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0061.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0062.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0063.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0064.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0065.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0066.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0067.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0068.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0069.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0070.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0071.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0072.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0073.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0074.png", - "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0075.png", - "frame": { "x": 119, "y": 72, "w": 56, "h": 31 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 4, "w": 56, "h": 31 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0076.png", - "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0077.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0078.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0079.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0080.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0081.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0082.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0084.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0085.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0086.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0087.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "692.png", - "format": "I8", - "size": { "w": 181, "h": 106 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/back/692.png b/public/images/pokemon/exp/back/692.png deleted file mode 100644 index 33059d53c05..00000000000 Binary files a/public/images/pokemon/exp/back/692.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/693.json b/public/images/pokemon/exp/back/693.json deleted file mode 100644 index 6358a8908f6..00000000000 --- a/public/images/pokemon/exp/back/693.json +++ /dev/null @@ -1,902 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0053.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0054.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0055.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0056.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0057.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0058.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0059.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0060.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0061.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0062.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0063.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0064.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0065.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0066.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0067.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0068.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0069.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0070.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0071.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0072.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0073.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0074.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0075.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0076.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0077.png", - "frame": { "x": 565, "y": 196, "w": 90, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 6, "w": 90, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0078.png", - "frame": { "x": 278, "y": 266, "w": 90, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 10, "y": 10, "w": 90, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0079.png", - "frame": { "x": 189, "y": 199, "w": 95, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 8, "w": 95, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0080.png", - "frame": { "x": 193, "y": 1, "w": 98, "h": 68 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 3, "w": 98, "h": 68 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0081.png", - "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0082.png", - "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0084.png", - "frame": { "x": 1, "y": 136, "w": 94, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0085.png", - "frame": { "x": 95, "y": 72, "w": 96, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 12, "w": 96, "h": 63 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0086.png", - "frame": { "x": 381, "y": 1, "w": 97, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 11, "y": 6, "w": 97, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0087.png", - "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0088.png", - "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0089.png", - "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0090.png", - "frame": { "x": 191, "y": 136, "w": 94, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0091.png", - "frame": { "x": 95, "y": 135, "w": 96, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 12, "y": 11, "w": 96, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0092.png", - "frame": { "x": 572, "y": 67, "w": 99, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 7, "w": 99, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0093.png", - "frame": { "x": 284, "y": 205, "w": 95, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 14, "y": 11, "w": 95, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0094.png", - "frame": { "x": 1, "y": 199, "w": 91, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 12, "w": 91, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0095.png", - "frame": { "x": 1, "y": 259, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 12, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0096.png", - "frame": { "x": 193, "y": 69, "w": 95, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 5, "w": 95, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0097.png", - "frame": { "x": 285, "y": 141, "w": 92, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 8, "w": 92, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0098.png", - "frame": { "x": 96, "y": 318, "w": 89, "h": 58 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 22, "y": 14, "w": 89, "h": 58 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0099.png", - "frame": { "x": 564, "y": 261, "w": 92, "h": 58 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 19, "y": 14, "w": 92, "h": 58 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "693.png", - "format": "I8", - "size": { "w": 672, "h": 377 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/back/693.png b/public/images/pokemon/exp/back/693.png deleted file mode 100644 index 4772c64f8d0..00000000000 Binary files a/public/images/pokemon/exp/back/693.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/696.png b/public/images/pokemon/exp/back/696.png index 1c4f2f8c835..0b05372a0a2 100644 Binary files a/public/images/pokemon/exp/back/696.png and b/public/images/pokemon/exp/back/696.png differ diff --git a/public/images/pokemon/exp/back/697.png b/public/images/pokemon/exp/back/697.png index f0ae22f2bb0..61763b0a6d5 100644 Binary files a/public/images/pokemon/exp/back/697.png and b/public/images/pokemon/exp/back/697.png differ diff --git a/public/images/pokemon/exp/back/699.png b/public/images/pokemon/exp/back/699.png index cd1b9a82de7..8733ca19b71 100644 Binary files a/public/images/pokemon/exp/back/699.png and b/public/images/pokemon/exp/back/699.png differ diff --git a/public/images/pokemon/exp/back/700.png b/public/images/pokemon/exp/back/700.png index a3675cc15d8..409752be066 100644 Binary files a/public/images/pokemon/exp/back/700.png and b/public/images/pokemon/exp/back/700.png differ diff --git a/public/images/pokemon/exp/back/702.png b/public/images/pokemon/exp/back/702.png index 2305dd44628..70c7e96eb1f 100644 Binary files a/public/images/pokemon/exp/back/702.png and b/public/images/pokemon/exp/back/702.png differ diff --git a/public/images/pokemon/exp/back/704.png b/public/images/pokemon/exp/back/704.png index a67b79b0ee9..d2d5ef99f3d 100644 Binary files a/public/images/pokemon/exp/back/704.png and b/public/images/pokemon/exp/back/704.png differ diff --git a/public/images/pokemon/exp/back/705.png b/public/images/pokemon/exp/back/705.png index 18c942605d6..6b70a0242ca 100644 Binary files a/public/images/pokemon/exp/back/705.png and b/public/images/pokemon/exp/back/705.png differ diff --git a/public/images/pokemon/exp/back/712.png b/public/images/pokemon/exp/back/712.png index a5b57fc9f1b..6ffce2b9664 100644 Binary files a/public/images/pokemon/exp/back/712.png and b/public/images/pokemon/exp/back/712.png differ diff --git a/public/images/pokemon/exp/back/713.png b/public/images/pokemon/exp/back/713.png index d6782ee4357..c288afed8cd 100644 Binary files a/public/images/pokemon/exp/back/713.png and b/public/images/pokemon/exp/back/713.png differ diff --git a/public/images/pokemon/exp/back/716-active.png b/public/images/pokemon/exp/back/716-active.png index 9d10446def7..df19b5662f4 100644 Binary files a/public/images/pokemon/exp/back/716-active.png and b/public/images/pokemon/exp/back/716-active.png differ diff --git a/public/images/pokemon/exp/back/716-neutral.png b/public/images/pokemon/exp/back/716-neutral.png index 871a9471357..40cfe2f4d7a 100644 Binary files a/public/images/pokemon/exp/back/716-neutral.png and b/public/images/pokemon/exp/back/716-neutral.png differ diff --git a/public/images/pokemon/exp/back/728.png b/public/images/pokemon/exp/back/728.png index d3534c8f37b..77b336db436 100644 Binary files a/public/images/pokemon/exp/back/728.png and b/public/images/pokemon/exp/back/728.png differ diff --git a/public/images/pokemon/exp/back/729.png b/public/images/pokemon/exp/back/729.png index b303934d595..9c8a8e8891d 100644 Binary files a/public/images/pokemon/exp/back/729.png and b/public/images/pokemon/exp/back/729.png differ diff --git a/public/images/pokemon/exp/back/730.png b/public/images/pokemon/exp/back/730.png index 4a91464e076..9ec70094d73 100644 Binary files a/public/images/pokemon/exp/back/730.png and b/public/images/pokemon/exp/back/730.png differ diff --git a/public/images/pokemon/exp/back/745.png b/public/images/pokemon/exp/back/745.png index f4949135164..31fea863d56 100644 Binary files a/public/images/pokemon/exp/back/745.png and b/public/images/pokemon/exp/back/745.png differ diff --git a/public/images/pokemon/exp/back/746-school.png b/public/images/pokemon/exp/back/746-school.png index baa5fde8219..71b0aa77bbb 100644 Binary files a/public/images/pokemon/exp/back/746-school.png and b/public/images/pokemon/exp/back/746-school.png differ diff --git a/public/images/pokemon/exp/back/746.png b/public/images/pokemon/exp/back/746.png index 33cfa5ffec8..3414b5f1ca7 100644 Binary files a/public/images/pokemon/exp/back/746.png and b/public/images/pokemon/exp/back/746.png differ diff --git a/public/images/pokemon/exp/back/749.png b/public/images/pokemon/exp/back/749.png index ce8d43db939..919169d12b5 100644 Binary files a/public/images/pokemon/exp/back/749.png and b/public/images/pokemon/exp/back/749.png differ diff --git a/public/images/pokemon/exp/back/750.png b/public/images/pokemon/exp/back/750.png index 5ecd848832e..f5ac8042117 100644 Binary files a/public/images/pokemon/exp/back/750.png and b/public/images/pokemon/exp/back/750.png differ diff --git a/public/images/pokemon/exp/back/753.json b/public/images/pokemon/exp/back/753.json deleted file mode 100644 index dbd9fd7d635..00000000000 --- a/public/images/pokemon/exp/back/753.json +++ /dev/null @@ -1,2582 +0,0 @@ -{ - "textures": [ - { - "image": "753.png", - "format": "RGBA8888", - "size": { - "w": 140, - "h": 140 - }, - "scale": 1, - "frames": [ - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0062.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0068.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0069.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0070.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0111.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0112.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0120.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0121.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0122.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0071.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0072.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 7, - "w": 30, - "h": 46 - }, - "frame": { - "x": 31, - "y": 94, - "w": 30, - "h": 46 - } - }, - { - "filename": "0119.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 7, - "w": 30, - "h": 46 - }, - "frame": { - "x": 31, - "y": 94, - "w": 30, - "h": 46 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0077.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0113.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0114.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0118.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0116.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:4209223453e7dabb3758c23bb26a3f91:234fdcf4efd83f52e8b51f13ec19a55c:16c1874bc814253ca78e52a99a340ff7$" - } -} diff --git a/public/images/pokemon/exp/back/753.png b/public/images/pokemon/exp/back/753.png deleted file mode 100644 index aa1fb706745..00000000000 Binary files a/public/images/pokemon/exp/back/753.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/754.json b/public/images/pokemon/exp/back/754.json deleted file mode 100644 index 86abaac1814..00000000000 --- a/public/images/pokemon/exp/back/754.json +++ /dev/null @@ -1,1112 +0,0 @@ -{ - "textures": [ - { - "image": "754.png", - "format": "RGBA8888", - "size": { - "w": 222, - "h": 222 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:3adad944aac48ad53efa41f8c9916d1c:ea15b954875ad08814f50cbbf849c1b3:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} diff --git a/public/images/pokemon/exp/back/754.png b/public/images/pokemon/exp/back/754.png deleted file mode 100644 index 66bd6a1b975..00000000000 Binary files a/public/images/pokemon/exp/back/754.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/772.png b/public/images/pokemon/exp/back/772.png index b1ccc79fb6c..51b28e39c3b 100644 Binary files a/public/images/pokemon/exp/back/772.png and b/public/images/pokemon/exp/back/772.png differ diff --git a/public/images/pokemon/exp/back/773-bug.png b/public/images/pokemon/exp/back/773-bug.png index f55d45d56bf..ed8c8c5d59c 100644 Binary files a/public/images/pokemon/exp/back/773-bug.png and b/public/images/pokemon/exp/back/773-bug.png differ diff --git a/public/images/pokemon/exp/back/773-dark.png b/public/images/pokemon/exp/back/773-dark.png index e4f92ff85d8..58ca13e1009 100644 Binary files a/public/images/pokemon/exp/back/773-dark.png and b/public/images/pokemon/exp/back/773-dark.png differ diff --git a/public/images/pokemon/exp/back/773-dragon.png b/public/images/pokemon/exp/back/773-dragon.png index b4ae3bf78e5..63adba6d24b 100644 Binary files a/public/images/pokemon/exp/back/773-dragon.png and b/public/images/pokemon/exp/back/773-dragon.png differ diff --git a/public/images/pokemon/exp/back/773-electric.png b/public/images/pokemon/exp/back/773-electric.png index debc8eb21e5..b9acfa66b4f 100644 Binary files a/public/images/pokemon/exp/back/773-electric.png and b/public/images/pokemon/exp/back/773-electric.png differ diff --git a/public/images/pokemon/exp/back/773-fairy.png b/public/images/pokemon/exp/back/773-fairy.png index 2a154cc9053..abaafbe2687 100644 Binary files a/public/images/pokemon/exp/back/773-fairy.png and b/public/images/pokemon/exp/back/773-fairy.png differ diff --git a/public/images/pokemon/exp/back/773-fighting.png b/public/images/pokemon/exp/back/773-fighting.png index 854aeb8d16f..ed2b97aa09d 100644 Binary files a/public/images/pokemon/exp/back/773-fighting.png and b/public/images/pokemon/exp/back/773-fighting.png differ diff --git a/public/images/pokemon/exp/back/773-fire.png b/public/images/pokemon/exp/back/773-fire.png index 19f81ffa2a8..8eb81ec9dc5 100644 Binary files a/public/images/pokemon/exp/back/773-fire.png and b/public/images/pokemon/exp/back/773-fire.png differ diff --git a/public/images/pokemon/exp/back/773-flying.png b/public/images/pokemon/exp/back/773-flying.png index 35797a5775a..775bd21aad6 100644 Binary files a/public/images/pokemon/exp/back/773-flying.png and b/public/images/pokemon/exp/back/773-flying.png differ diff --git a/public/images/pokemon/exp/back/773-ghost.png b/public/images/pokemon/exp/back/773-ghost.png index 6d20decd560..434680901ee 100644 Binary files a/public/images/pokemon/exp/back/773-ghost.png and b/public/images/pokemon/exp/back/773-ghost.png differ diff --git a/public/images/pokemon/exp/back/773-grass.png b/public/images/pokemon/exp/back/773-grass.png index 647bd0ff269..a2d01eb41bd 100644 Binary files a/public/images/pokemon/exp/back/773-grass.png and b/public/images/pokemon/exp/back/773-grass.png differ diff --git a/public/images/pokemon/exp/back/773-ground.png b/public/images/pokemon/exp/back/773-ground.png index bc1917a0bf1..411aa6d673b 100644 Binary files a/public/images/pokemon/exp/back/773-ground.png and b/public/images/pokemon/exp/back/773-ground.png differ diff --git a/public/images/pokemon/exp/back/773-ice.png b/public/images/pokemon/exp/back/773-ice.png index 0777e84600a..e9796ad0557 100644 Binary files a/public/images/pokemon/exp/back/773-ice.png and b/public/images/pokemon/exp/back/773-ice.png differ diff --git a/public/images/pokemon/exp/back/773-poison.png b/public/images/pokemon/exp/back/773-poison.png index 87b6a0565ef..e262233dc7a 100644 Binary files a/public/images/pokemon/exp/back/773-poison.png and b/public/images/pokemon/exp/back/773-poison.png differ diff --git a/public/images/pokemon/exp/back/773-psychic.png b/public/images/pokemon/exp/back/773-psychic.png index ec237babefe..a0206bfbcab 100644 Binary files a/public/images/pokemon/exp/back/773-psychic.png and b/public/images/pokemon/exp/back/773-psychic.png differ diff --git a/public/images/pokemon/exp/back/773-rock.png b/public/images/pokemon/exp/back/773-rock.png index fd39b9b2d57..7ad026de5c9 100644 Binary files a/public/images/pokemon/exp/back/773-rock.png and b/public/images/pokemon/exp/back/773-rock.png differ diff --git a/public/images/pokemon/exp/back/773-steel.png b/public/images/pokemon/exp/back/773-steel.png index 1f103026a1b..fe8e4f2cf7f 100644 Binary files a/public/images/pokemon/exp/back/773-steel.png and b/public/images/pokemon/exp/back/773-steel.png differ diff --git a/public/images/pokemon/exp/back/773-water.png b/public/images/pokemon/exp/back/773-water.png index 48c32f74998..faff37ccfc2 100644 Binary files a/public/images/pokemon/exp/back/773-water.png and b/public/images/pokemon/exp/back/773-water.png differ diff --git a/public/images/pokemon/exp/back/773.png b/public/images/pokemon/exp/back/773.png index ac35cb8a7ec..f3b183c59e7 100644 Binary files a/public/images/pokemon/exp/back/773.png and b/public/images/pokemon/exp/back/773.png differ diff --git a/public/images/pokemon/exp/back/774-blue-meteor.png b/public/images/pokemon/exp/back/774-blue-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-blue-meteor.png and b/public/images/pokemon/exp/back/774-blue-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-blue.png b/public/images/pokemon/exp/back/774-blue.png index a0436ff90ff..195f8521a9e 100644 Binary files a/public/images/pokemon/exp/back/774-blue.png and b/public/images/pokemon/exp/back/774-blue.png differ diff --git a/public/images/pokemon/exp/back/774-green-meteor.png b/public/images/pokemon/exp/back/774-green-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-green-meteor.png and b/public/images/pokemon/exp/back/774-green-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-green.png b/public/images/pokemon/exp/back/774-green.png index 8762bd3a08f..a2bf0d7135c 100644 Binary files a/public/images/pokemon/exp/back/774-green.png and b/public/images/pokemon/exp/back/774-green.png differ diff --git a/public/images/pokemon/exp/back/774-indigo-meteor.png b/public/images/pokemon/exp/back/774-indigo-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-indigo-meteor.png and b/public/images/pokemon/exp/back/774-indigo-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-indigo.png b/public/images/pokemon/exp/back/774-indigo.png index 270469dc314..2c8f732503e 100644 Binary files a/public/images/pokemon/exp/back/774-indigo.png and b/public/images/pokemon/exp/back/774-indigo.png differ diff --git a/public/images/pokemon/exp/back/774-meteor.png b/public/images/pokemon/exp/back/774-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-meteor.png and b/public/images/pokemon/exp/back/774-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-orange-meteor.png b/public/images/pokemon/exp/back/774-orange-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-orange-meteor.png and b/public/images/pokemon/exp/back/774-orange-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-orange.png b/public/images/pokemon/exp/back/774-orange.png index 43121d3c721..9de62e1bb74 100644 Binary files a/public/images/pokemon/exp/back/774-orange.png and b/public/images/pokemon/exp/back/774-orange.png differ diff --git a/public/images/pokemon/exp/back/774-red-meteor.png b/public/images/pokemon/exp/back/774-red-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-red-meteor.png and b/public/images/pokemon/exp/back/774-red-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-red.png b/public/images/pokemon/exp/back/774-red.png index 5a620e49032..9f7c5b9baf4 100644 Binary files a/public/images/pokemon/exp/back/774-red.png and b/public/images/pokemon/exp/back/774-red.png differ diff --git a/public/images/pokemon/exp/back/774-violet-meteor.png b/public/images/pokemon/exp/back/774-violet-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-violet-meteor.png and b/public/images/pokemon/exp/back/774-violet-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-violet.png b/public/images/pokemon/exp/back/774-violet.png index d9bfb0eb303..52ad143b263 100644 Binary files a/public/images/pokemon/exp/back/774-violet.png and b/public/images/pokemon/exp/back/774-violet.png differ diff --git a/public/images/pokemon/exp/back/774-yellow-meteor.png b/public/images/pokemon/exp/back/774-yellow-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/774-yellow-meteor.png and b/public/images/pokemon/exp/back/774-yellow-meteor.png differ diff --git a/public/images/pokemon/exp/back/774-yellow.png b/public/images/pokemon/exp/back/774-yellow.png index b08aec2792c..2155ff19aa7 100644 Binary files a/public/images/pokemon/exp/back/774-yellow.png and b/public/images/pokemon/exp/back/774-yellow.png differ diff --git a/public/images/pokemon/exp/back/776.png b/public/images/pokemon/exp/back/776.png index d23a85dc55d..7337c60ca69 100644 Binary files a/public/images/pokemon/exp/back/776.png and b/public/images/pokemon/exp/back/776.png differ diff --git a/public/images/pokemon/exp/back/777.png b/public/images/pokemon/exp/back/777.png index f4b0e23c5e2..943ab6da503 100644 Binary files a/public/images/pokemon/exp/back/777.png and b/public/images/pokemon/exp/back/777.png differ diff --git a/public/images/pokemon/exp/back/780.png b/public/images/pokemon/exp/back/780.png index 595476cf717..d7d42e3f770 100644 Binary files a/public/images/pokemon/exp/back/780.png and b/public/images/pokemon/exp/back/780.png differ diff --git a/public/images/pokemon/exp/back/797.png b/public/images/pokemon/exp/back/797.png index 2c3258b6858..d98c3b41ac7 100644 Binary files a/public/images/pokemon/exp/back/797.png and b/public/images/pokemon/exp/back/797.png differ diff --git a/public/images/pokemon/exp/back/798.png b/public/images/pokemon/exp/back/798.png index 1cc3b7c4103..9fe21f9c996 100644 Binary files a/public/images/pokemon/exp/back/798.png and b/public/images/pokemon/exp/back/798.png differ diff --git a/public/images/pokemon/exp/back/80-mega.png b/public/images/pokemon/exp/back/80-mega.png index a8bcfbcff97..dfafb6b5437 100644 Binary files a/public/images/pokemon/exp/back/80-mega.png and b/public/images/pokemon/exp/back/80-mega.png differ diff --git a/public/images/pokemon/exp/back/804.png b/public/images/pokemon/exp/back/804.png index 5de6c92f36d..d077e21e01e 100644 Binary files a/public/images/pokemon/exp/back/804.png and b/public/images/pokemon/exp/back/804.png differ diff --git a/public/images/pokemon/exp/back/815-gigantamax.png b/public/images/pokemon/exp/back/815-gigantamax.png index 0036d75cbfc..f43ab869d97 100644 Binary files a/public/images/pokemon/exp/back/815-gigantamax.png and b/public/images/pokemon/exp/back/815-gigantamax.png differ diff --git a/public/images/pokemon/exp/back/821.png b/public/images/pokemon/exp/back/821.png index 13aa5c24e83..8466ecb953b 100644 Binary files a/public/images/pokemon/exp/back/821.png and b/public/images/pokemon/exp/back/821.png differ diff --git a/public/images/pokemon/exp/back/823.png b/public/images/pokemon/exp/back/823.png index ea00aba09e5..3d29f9b3db3 100644 Binary files a/public/images/pokemon/exp/back/823.png and b/public/images/pokemon/exp/back/823.png differ diff --git a/public/images/pokemon/exp/back/839-gigantamax.png b/public/images/pokemon/exp/back/839-gigantamax.png index 6b7622b05d8..f7bc3705b19 100644 Binary files a/public/images/pokemon/exp/back/839-gigantamax.png and b/public/images/pokemon/exp/back/839-gigantamax.png differ diff --git a/public/images/pokemon/exp/back/840.png b/public/images/pokemon/exp/back/840.png index 29336b622e3..842662dec53 100644 Binary files a/public/images/pokemon/exp/back/840.png and b/public/images/pokemon/exp/back/840.png differ diff --git a/public/images/pokemon/exp/back/841.png b/public/images/pokemon/exp/back/841.png index ecf344211ef..d186c63382f 100644 Binary files a/public/images/pokemon/exp/back/841.png and b/public/images/pokemon/exp/back/841.png differ diff --git a/public/images/pokemon/exp/back/842.png b/public/images/pokemon/exp/back/842.png index 9258c511d25..367d249c9f5 100644 Binary files a/public/images/pokemon/exp/back/842.png and b/public/images/pokemon/exp/back/842.png differ diff --git a/public/images/pokemon/exp/back/867.png b/public/images/pokemon/exp/back/867.png index b816f10a0de..15e38d04167 100644 Binary files a/public/images/pokemon/exp/back/867.png and b/public/images/pokemon/exp/back/867.png differ diff --git a/public/images/pokemon/exp/back/871.png b/public/images/pokemon/exp/back/871.png index e20040e8a6a..a776530fa1a 100644 Binary files a/public/images/pokemon/exp/back/871.png and b/public/images/pokemon/exp/back/871.png differ diff --git a/public/images/pokemon/exp/back/876-female.png b/public/images/pokemon/exp/back/876-female.png index 18a4a9834a9..e4929e22671 100644 Binary files a/public/images/pokemon/exp/back/876-female.png and b/public/images/pokemon/exp/back/876-female.png differ diff --git a/public/images/pokemon/exp/back/876.png b/public/images/pokemon/exp/back/876.png index 87ed3646b3e..2c6d8d58a27 100644 Binary files a/public/images/pokemon/exp/back/876.png and b/public/images/pokemon/exp/back/876.png differ diff --git a/public/images/pokemon/exp/back/880.png b/public/images/pokemon/exp/back/880.png index c2891b4165a..4af62aa2114 100644 Binary files a/public/images/pokemon/exp/back/880.png and b/public/images/pokemon/exp/back/880.png differ diff --git a/public/images/pokemon/exp/back/881.png b/public/images/pokemon/exp/back/881.png index 1c0322a43fd..5af1b81e5bd 100644 Binary files a/public/images/pokemon/exp/back/881.png and b/public/images/pokemon/exp/back/881.png differ diff --git a/public/images/pokemon/exp/back/882.png b/public/images/pokemon/exp/back/882.png index d5d5ad902f5..6cc87876a35 100644 Binary files a/public/images/pokemon/exp/back/882.png and b/public/images/pokemon/exp/back/882.png differ diff --git a/public/images/pokemon/exp/back/888-crowned.png b/public/images/pokemon/exp/back/888-crowned.png index 827678bf53d..5669bba749e 100644 Binary files a/public/images/pokemon/exp/back/888-crowned.png and b/public/images/pokemon/exp/back/888-crowned.png differ diff --git a/public/images/pokemon/exp/back/894.png b/public/images/pokemon/exp/back/894.png index e82e8dc0183..4449bc877c5 100644 Binary files a/public/images/pokemon/exp/back/894.png and b/public/images/pokemon/exp/back/894.png differ diff --git a/public/images/pokemon/exp/back/896.png b/public/images/pokemon/exp/back/896.png index c0c26abd888..5f32519b636 100644 Binary files a/public/images/pokemon/exp/back/896.png and b/public/images/pokemon/exp/back/896.png differ diff --git a/public/images/pokemon/exp/back/898-ice.png b/public/images/pokemon/exp/back/898-ice.png index bbb27761875..92543756981 100644 Binary files a/public/images/pokemon/exp/back/898-ice.png and b/public/images/pokemon/exp/back/898-ice.png differ diff --git a/public/images/pokemon/exp/back/898-shadow.png b/public/images/pokemon/exp/back/898-shadow.png index 27191a9428b..642deb5887e 100644 Binary files a/public/images/pokemon/exp/back/898-shadow.png and b/public/images/pokemon/exp/back/898-shadow.png differ diff --git a/public/images/pokemon/exp/back/898.png b/public/images/pokemon/exp/back/898.png index c2154aa45e9..4c64a5a3528 100644 Binary files a/public/images/pokemon/exp/back/898.png and b/public/images/pokemon/exp/back/898.png differ diff --git a/public/images/pokemon/exp/back/911.png b/public/images/pokemon/exp/back/911.png index a15676954fc..301e181d3a6 100644 Binary files a/public/images/pokemon/exp/back/911.png and b/public/images/pokemon/exp/back/911.png differ diff --git a/public/images/pokemon/exp/back/913.png b/public/images/pokemon/exp/back/913.png index cd32c18afcc..26a80e83ba7 100644 Binary files a/public/images/pokemon/exp/back/913.png and b/public/images/pokemon/exp/back/913.png differ diff --git a/public/images/pokemon/exp/back/914.png b/public/images/pokemon/exp/back/914.png index e476a2e58ec..09548a69a90 100644 Binary files a/public/images/pokemon/exp/back/914.png and b/public/images/pokemon/exp/back/914.png differ diff --git a/public/images/pokemon/exp/back/944.png b/public/images/pokemon/exp/back/944.png index 5162fa285be..a4acfffacfb 100644 Binary files a/public/images/pokemon/exp/back/944.png and b/public/images/pokemon/exp/back/944.png differ diff --git a/public/images/pokemon/exp/back/945.png b/public/images/pokemon/exp/back/945.png index 74d4e56a598..91049feff79 100644 Binary files a/public/images/pokemon/exp/back/945.png and b/public/images/pokemon/exp/back/945.png differ diff --git a/public/images/pokemon/exp/back/954.png b/public/images/pokemon/exp/back/954.png index 64a60ce7b89..2da2d33c506 100644 Binary files a/public/images/pokemon/exp/back/954.png and b/public/images/pokemon/exp/back/954.png differ diff --git a/public/images/pokemon/exp/back/957.png b/public/images/pokemon/exp/back/957.png index 6d653851e94..416a18dc174 100644 Binary files a/public/images/pokemon/exp/back/957.png and b/public/images/pokemon/exp/back/957.png differ diff --git a/public/images/pokemon/exp/back/958.png b/public/images/pokemon/exp/back/958.png index d9ec3d62b88..5f131761784 100644 Binary files a/public/images/pokemon/exp/back/958.png and b/public/images/pokemon/exp/back/958.png differ diff --git a/public/images/pokemon/exp/back/959.png b/public/images/pokemon/exp/back/959.png index 29242f92dd7..e3e98897847 100644 Binary files a/public/images/pokemon/exp/back/959.png and b/public/images/pokemon/exp/back/959.png differ diff --git a/public/images/pokemon/exp/back/970.png b/public/images/pokemon/exp/back/970.png index 533b680c117..c0f9f416196 100644 Binary files a/public/images/pokemon/exp/back/970.png and b/public/images/pokemon/exp/back/970.png differ diff --git a/public/images/pokemon/exp/back/974.png b/public/images/pokemon/exp/back/974.png index 7f375ecbf24..0faa8b629c8 100644 Binary files a/public/images/pokemon/exp/back/974.png and b/public/images/pokemon/exp/back/974.png differ diff --git a/public/images/pokemon/exp/back/975.png b/public/images/pokemon/exp/back/975.png index 99a06a273f4..fcff386eedc 100644 Binary files a/public/images/pokemon/exp/back/975.png and b/public/images/pokemon/exp/back/975.png differ diff --git a/public/images/pokemon/exp/back/981.png b/public/images/pokemon/exp/back/981.png index 523135b7f3c..c15e4d141e0 100644 Binary files a/public/images/pokemon/exp/back/981.png and b/public/images/pokemon/exp/back/981.png differ diff --git a/public/images/pokemon/exp/back/987.png b/public/images/pokemon/exp/back/987.png index 4956b630d3e..81433bf6b91 100644 Binary files a/public/images/pokemon/exp/back/987.png and b/public/images/pokemon/exp/back/987.png differ diff --git a/public/images/pokemon/exp/back/female/668.png b/public/images/pokemon/exp/back/female/668.png index e5b5ed2494e..b2a0971bedc 100644 Binary files a/public/images/pokemon/exp/back/female/668.png and b/public/images/pokemon/exp/back/female/668.png differ diff --git a/public/images/pokemon/exp/back/shiny/1001.png b/public/images/pokemon/exp/back/shiny/1001.png index 2fd3e5fecd9..d60f0e5bbaf 100644 Binary files a/public/images/pokemon/exp/back/shiny/1001.png and b/public/images/pokemon/exp/back/shiny/1001.png differ diff --git a/public/images/pokemon/exp/back/shiny/1003.png b/public/images/pokemon/exp/back/shiny/1003.png index 503211f914a..44fb0282259 100644 Binary files a/public/images/pokemon/exp/back/shiny/1003.png and b/public/images/pokemon/exp/back/shiny/1003.png differ diff --git a/public/images/pokemon/exp/back/shiny/150-mega-x.png b/public/images/pokemon/exp/back/shiny/150-mega-x.png index eca55d70313..ab29d892e3a 100644 Binary files a/public/images/pokemon/exp/back/shiny/150-mega-x.png and b/public/images/pokemon/exp/back/shiny/150-mega-x.png differ diff --git a/public/images/pokemon/exp/back/shiny/2037.png b/public/images/pokemon/exp/back/shiny/2037.png index d5443e7d642..11425673263 100644 Binary files a/public/images/pokemon/exp/back/shiny/2037.png and b/public/images/pokemon/exp/back/shiny/2037.png differ diff --git a/public/images/pokemon/exp/back/shiny/2038.png b/public/images/pokemon/exp/back/shiny/2038.png index 33c5406bbb7..75f09e4abaf 100644 Binary files a/public/images/pokemon/exp/back/shiny/2038.png and b/public/images/pokemon/exp/back/shiny/2038.png differ diff --git a/public/images/pokemon/exp/back/shiny/2074.png b/public/images/pokemon/exp/back/shiny/2074.png index 9db2c9ea0b0..62193d245c6 100644 Binary files a/public/images/pokemon/exp/back/shiny/2074.png and b/public/images/pokemon/exp/back/shiny/2074.png differ diff --git a/public/images/pokemon/exp/back/shiny/2075.png b/public/images/pokemon/exp/back/shiny/2075.png index 6fbe68dd727..6a76bd440bd 100644 Binary files a/public/images/pokemon/exp/back/shiny/2075.png and b/public/images/pokemon/exp/back/shiny/2075.png differ diff --git a/public/images/pokemon/exp/back/shiny/2076.png b/public/images/pokemon/exp/back/shiny/2076.png index 69424220267..18746989f57 100644 Binary files a/public/images/pokemon/exp/back/shiny/2076.png and b/public/images/pokemon/exp/back/shiny/2076.png differ diff --git a/public/images/pokemon/exp/back/shiny/2088.png b/public/images/pokemon/exp/back/shiny/2088.png index 1f939f63d70..dda881eb4e8 100644 Binary files a/public/images/pokemon/exp/back/shiny/2088.png and b/public/images/pokemon/exp/back/shiny/2088.png differ diff --git a/public/images/pokemon/exp/back/shiny/2089.png b/public/images/pokemon/exp/back/shiny/2089.png index 8dcb36bcb09..c29f64b2b95 100644 Binary files a/public/images/pokemon/exp/back/shiny/2089.png and b/public/images/pokemon/exp/back/shiny/2089.png differ diff --git a/public/images/pokemon/exp/back/shiny/248-mega.png b/public/images/pokemon/exp/back/shiny/248-mega.png index bb4a62d441f..68eeb180a07 100644 Binary files a/public/images/pokemon/exp/back/shiny/248-mega.png and b/public/images/pokemon/exp/back/shiny/248-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/257-mega.png b/public/images/pokemon/exp/back/shiny/257-mega.png index 1aaad61acbf..f6d78dc5d33 100644 Binary files a/public/images/pokemon/exp/back/shiny/257-mega.png and b/public/images/pokemon/exp/back/shiny/257-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/362-mega.png b/public/images/pokemon/exp/back/shiny/362-mega.png index 75d5b5075b9..a08a5109156 100644 Binary files a/public/images/pokemon/exp/back/shiny/362-mega.png and b/public/images/pokemon/exp/back/shiny/362-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/373-mega.png b/public/images/pokemon/exp/back/shiny/373-mega.png index 558a7ef2fbc..aadd83fba5b 100644 Binary files a/public/images/pokemon/exp/back/shiny/373-mega.png and b/public/images/pokemon/exp/back/shiny/373-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/380-mega.png b/public/images/pokemon/exp/back/shiny/380-mega.png index 6efdf36e4cb..32302367ce9 100644 Binary files a/public/images/pokemon/exp/back/shiny/380-mega.png and b/public/images/pokemon/exp/back/shiny/380-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/381-mega.png b/public/images/pokemon/exp/back/shiny/381-mega.png index 9c0c182235b..2374fdb5829 100644 Binary files a/public/images/pokemon/exp/back/shiny/381-mega.png and b/public/images/pokemon/exp/back/shiny/381-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/4052.png b/public/images/pokemon/exp/back/shiny/4052.png index f00b0719114..de378af0745 100644 Binary files a/public/images/pokemon/exp/back/shiny/4052.png and b/public/images/pokemon/exp/back/shiny/4052.png differ diff --git a/public/images/pokemon/exp/back/shiny/4080.png b/public/images/pokemon/exp/back/shiny/4080.png index 1f3ec6c122a..7194ab264ac 100644 Binary files a/public/images/pokemon/exp/back/shiny/4080.png and b/public/images/pokemon/exp/back/shiny/4080.png differ diff --git a/public/images/pokemon/exp/back/shiny/4144.png b/public/images/pokemon/exp/back/shiny/4144.png index ac5d3e8d2f2..3fcd85d9f18 100644 Binary files a/public/images/pokemon/exp/back/shiny/4144.png and b/public/images/pokemon/exp/back/shiny/4144.png differ diff --git a/public/images/pokemon/exp/back/shiny/4145.png b/public/images/pokemon/exp/back/shiny/4145.png index e543479a57c..ea545262fcb 100644 Binary files a/public/images/pokemon/exp/back/shiny/4145.png and b/public/images/pokemon/exp/back/shiny/4145.png differ diff --git a/public/images/pokemon/exp/back/shiny/4146.png b/public/images/pokemon/exp/back/shiny/4146.png index 038303f5b0d..cb129c02a81 100644 Binary files a/public/images/pokemon/exp/back/shiny/4146.png and b/public/images/pokemon/exp/back/shiny/4146.png differ diff --git a/public/images/pokemon/exp/back/shiny/4222.png b/public/images/pokemon/exp/back/shiny/4222.png index e5c30260c2b..9cd8b451d55 100644 Binary files a/public/images/pokemon/exp/back/shiny/4222.png and b/public/images/pokemon/exp/back/shiny/4222.png differ diff --git a/public/images/pokemon/exp/back/shiny/4555.png b/public/images/pokemon/exp/back/shiny/4555.png index 3ce57019abe..038aa971204 100644 Binary files a/public/images/pokemon/exp/back/shiny/4555.png and b/public/images/pokemon/exp/back/shiny/4555.png differ diff --git a/public/images/pokemon/exp/back/shiny/569-gigantamax.png b/public/images/pokemon/exp/back/shiny/569-gigantamax.png index 2322fc2321e..3caf6035edc 100644 Binary files a/public/images/pokemon/exp/back/shiny/569-gigantamax.png and b/public/images/pokemon/exp/back/shiny/569-gigantamax.png differ diff --git a/public/images/pokemon/exp/back/shiny/651.png b/public/images/pokemon/exp/back/shiny/651.png index b607fa69a15..0e3141bdcc6 100644 Binary files a/public/images/pokemon/exp/back/shiny/651.png and b/public/images/pokemon/exp/back/shiny/651.png differ diff --git a/public/images/pokemon/exp/back/shiny/653.png b/public/images/pokemon/exp/back/shiny/653.png index 08b2420ad11..7afc24d9714 100644 Binary files a/public/images/pokemon/exp/back/shiny/653.png and b/public/images/pokemon/exp/back/shiny/653.png differ diff --git a/public/images/pokemon/exp/back/shiny/654.png b/public/images/pokemon/exp/back/shiny/654.png index 747aa61bd58..7740b21e30b 100644 Binary files a/public/images/pokemon/exp/back/shiny/654.png and b/public/images/pokemon/exp/back/shiny/654.png differ diff --git a/public/images/pokemon/exp/back/shiny/656.png b/public/images/pokemon/exp/back/shiny/656.png index 0c974e52a98..78eb091fa49 100644 Binary files a/public/images/pokemon/exp/back/shiny/656.png and b/public/images/pokemon/exp/back/shiny/656.png differ diff --git a/public/images/pokemon/exp/back/shiny/658-ash.png b/public/images/pokemon/exp/back/shiny/658-ash.png index 3269d435c94..0dd0b2685e2 100644 Binary files a/public/images/pokemon/exp/back/shiny/658-ash.png and b/public/images/pokemon/exp/back/shiny/658-ash.png differ diff --git a/public/images/pokemon/exp/back/shiny/658.png b/public/images/pokemon/exp/back/shiny/658.png index bb0ee7accdf..d4740506123 100644 Binary files a/public/images/pokemon/exp/back/shiny/658.png and b/public/images/pokemon/exp/back/shiny/658.png differ diff --git a/public/images/pokemon/exp/back/shiny/661.png b/public/images/pokemon/exp/back/shiny/661.png index a38de0cabe4..edb88b484b0 100644 Binary files a/public/images/pokemon/exp/back/shiny/661.png and b/public/images/pokemon/exp/back/shiny/661.png differ diff --git a/public/images/pokemon/exp/back/shiny/662.png b/public/images/pokemon/exp/back/shiny/662.png index b914dac31b1..4a1e8f4fbb3 100644 Binary files a/public/images/pokemon/exp/back/shiny/662.png and b/public/images/pokemon/exp/back/shiny/662.png differ diff --git a/public/images/pokemon/exp/back/shiny/663.png b/public/images/pokemon/exp/back/shiny/663.png index ddb4658f34f..9eb6e149cf2 100644 Binary files a/public/images/pokemon/exp/back/shiny/663.png and b/public/images/pokemon/exp/back/shiny/663.png differ diff --git a/public/images/pokemon/exp/back/shiny/664.png b/public/images/pokemon/exp/back/shiny/664.png index ad6b46a574e..81d2f666ab2 100644 Binary files a/public/images/pokemon/exp/back/shiny/664.png and b/public/images/pokemon/exp/back/shiny/664.png differ diff --git a/public/images/pokemon/exp/back/shiny/665.png b/public/images/pokemon/exp/back/shiny/665.png index 6b8ae18d7a0..7d3881880b1 100644 Binary files a/public/images/pokemon/exp/back/shiny/665.png and b/public/images/pokemon/exp/back/shiny/665.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-archipelago.png b/public/images/pokemon/exp/back/shiny/666-archipelago.png index ada5bd02bdb..9c28381e6d0 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-archipelago.png and b/public/images/pokemon/exp/back/shiny/666-archipelago.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-continental.png b/public/images/pokemon/exp/back/shiny/666-continental.png index a70b86e6f4e..ac860e4b03f 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-continental.png and b/public/images/pokemon/exp/back/shiny/666-continental.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-elegant.png b/public/images/pokemon/exp/back/shiny/666-elegant.png index f1493354831..e4fc4b972bc 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-elegant.png and b/public/images/pokemon/exp/back/shiny/666-elegant.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-fancy.png b/public/images/pokemon/exp/back/shiny/666-fancy.png index 6a50c5817a8..9087c76e1ca 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-fancy.png and b/public/images/pokemon/exp/back/shiny/666-fancy.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-garden.png b/public/images/pokemon/exp/back/shiny/666-garden.png index 92214cc4d75..4af3312b29b 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-garden.png and b/public/images/pokemon/exp/back/shiny/666-garden.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-high-plains.png b/public/images/pokemon/exp/back/shiny/666-high-plains.png index 80e02eede13..50cc4880156 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-high-plains.png and b/public/images/pokemon/exp/back/shiny/666-high-plains.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-icy-snow.png b/public/images/pokemon/exp/back/shiny/666-icy-snow.png index 1fe8305f068..54d4aba19ee 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-icy-snow.png and b/public/images/pokemon/exp/back/shiny/666-icy-snow.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-jungle.png b/public/images/pokemon/exp/back/shiny/666-jungle.png index 1dbe65c02f2..6d0913ab0c2 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-jungle.png and b/public/images/pokemon/exp/back/shiny/666-jungle.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-marine.png b/public/images/pokemon/exp/back/shiny/666-marine.png index 1a69d6587da..ece37d90f73 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-marine.png and b/public/images/pokemon/exp/back/shiny/666-marine.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-meadow.png b/public/images/pokemon/exp/back/shiny/666-meadow.png index 1148fa5a620..bfbddcb9206 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-meadow.png and b/public/images/pokemon/exp/back/shiny/666-meadow.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-modern.png b/public/images/pokemon/exp/back/shiny/666-modern.png index d9f109c8ef9..7e92c4e5815 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-modern.png and b/public/images/pokemon/exp/back/shiny/666-modern.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-monsoon.png b/public/images/pokemon/exp/back/shiny/666-monsoon.png index cc5279545d5..f966f75220d 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-monsoon.png and b/public/images/pokemon/exp/back/shiny/666-monsoon.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-ocean.png b/public/images/pokemon/exp/back/shiny/666-ocean.png index caabd9302ea..858a2818720 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-ocean.png and b/public/images/pokemon/exp/back/shiny/666-ocean.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-poke-ball.png b/public/images/pokemon/exp/back/shiny/666-poke-ball.png index 30e2cbf8615..2dfad4e47b7 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-poke-ball.png and b/public/images/pokemon/exp/back/shiny/666-poke-ball.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-polar.png b/public/images/pokemon/exp/back/shiny/666-polar.png index c9f4fe642ee..854c8333064 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-polar.png and b/public/images/pokemon/exp/back/shiny/666-polar.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-river.png b/public/images/pokemon/exp/back/shiny/666-river.png index b024287fdca..71974c82772 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-river.png and b/public/images/pokemon/exp/back/shiny/666-river.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-savanna.png b/public/images/pokemon/exp/back/shiny/666-savanna.png index a69c0c18ae1..044b840fb74 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-savanna.png and b/public/images/pokemon/exp/back/shiny/666-savanna.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-sun.png b/public/images/pokemon/exp/back/shiny/666-sun.png index 3914a0fe350..91a4c61b040 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-sun.png and b/public/images/pokemon/exp/back/shiny/666-sun.png differ diff --git a/public/images/pokemon/exp/back/shiny/666-tundra.png b/public/images/pokemon/exp/back/shiny/666-tundra.png index 78316df8a8f..14ae12b9711 100644 Binary files a/public/images/pokemon/exp/back/shiny/666-tundra.png and b/public/images/pokemon/exp/back/shiny/666-tundra.png differ diff --git a/public/images/pokemon/exp/back/shiny/667.png b/public/images/pokemon/exp/back/shiny/667.png index d44bed5ee65..c005033d445 100644 Binary files a/public/images/pokemon/exp/back/shiny/667.png and b/public/images/pokemon/exp/back/shiny/667.png differ diff --git a/public/images/pokemon/exp/back/shiny/668.png b/public/images/pokemon/exp/back/shiny/668.png index 0ece333f235..783ab111ba6 100644 Binary files a/public/images/pokemon/exp/back/shiny/668.png and b/public/images/pokemon/exp/back/shiny/668.png differ diff --git a/public/images/pokemon/exp/back/shiny/672.json b/public/images/pokemon/exp/back/shiny/672.json deleted file mode 100644 index f877b9abc2e..00000000000 --- a/public/images/pokemon/exp/back/shiny/672.json +++ /dev/null @@ -1,479 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 118, "y": 97, "w": 40, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 41, "y": 98, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 78, "y": 0, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 118, "y": 50, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 0, "y": 56, "w": 41, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 10, "w": 41, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 0, "y": 104, "w": 40, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 10, "w": 40, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 40, "y": 146, "w": 39, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 9, "w": 39, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 78, "y": 48, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 39, "y": 0, "w": 39, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 5, "w": 39, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 0, "w": 39, "h": 56 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 79, "y": 146, "w": 40, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 9, "w": 40, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 119, "y": 146, "w": 38, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 8, "w": 38, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 120, "y": 0, "w": 40, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 8, "w": 40, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.11-x64", - "image": "672.png", - "format": "I8", - "size": { "w": 160, "h": 195 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/back/shiny/672.png b/public/images/pokemon/exp/back/shiny/672.png deleted file mode 100644 index 848b2e35962..00000000000 Binary files a/public/images/pokemon/exp/back/shiny/672.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/shiny/692.json b/public/images/pokemon/exp/back/shiny/692.json deleted file mode 100644 index 801710c4861..00000000000 --- a/public/images/pokemon/exp/back/shiny/692.json +++ /dev/null @@ -1,794 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0002.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0003.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0004.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0005.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0006.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0007.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0008.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0009.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0010.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0011.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0012.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0013.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0014.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0015.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0016.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0017.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0018.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0019.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0020.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0021.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0022.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0023.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0024.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0025.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0026.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0027.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0028.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0029.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0030.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0031.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0032.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0033.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0034.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0035.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0036.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0037.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0038.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0039.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0040.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0041.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0042.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0043.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0044.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0045.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0046.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0047.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0048.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0049.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0050.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0051.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0052.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0053.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0054.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0055.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0056.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0057.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0058.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0059.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0060.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0061.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0062.png", - "frame": { "x": 1, "y": 36, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0063.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0064.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0065.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0066.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0067.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0068.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0069.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0070.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0071.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0072.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0073.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0074.png", - "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0075.png", - "frame": { "x": 119, "y": 72, "w": 56, "h": 31 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 4, "w": 56, "h": 31 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0076.png", - "frame": { "x": 60, "y": 72, "w": 58, "h": 31 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 4, "w": 58, "h": 31 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0077.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0078.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0079.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0080.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0081.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0082.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 72, "w": 58, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 2, "w": 58, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0084.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0085.png", - "frame": { "x": 59, "y": 37, "w": 57, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 1, "w": 57, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0086.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0087.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "692.png", - "format": "I8", - "size": { "w": 181, "h": 106 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/back/shiny/692.png b/public/images/pokemon/exp/back/shiny/692.png deleted file mode 100644 index baee2adcd4f..00000000000 Binary files a/public/images/pokemon/exp/back/shiny/692.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/shiny/693.json b/public/images/pokemon/exp/back/shiny/693.json deleted file mode 100644 index 6358a8908f6..00000000000 --- a/public/images/pokemon/exp/back/shiny/693.json +++ /dev/null @@ -1,902 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0053.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0054.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0055.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0056.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0057.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0058.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0059.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0060.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0061.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0062.png", - "frame": { "x": 472, "y": 70, "w": 88, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 0, "w": 88, "h": 72 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0063.png", - "frame": { "x": 378, "y": 138, "w": 91, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 8, "w": 91, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0064.png", - "frame": { "x": 187, "y": 260, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0065.png", - "frame": { "x": 379, "y": 257, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 16, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0066.png", - "frame": { "x": 572, "y": 1, "w": 98, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 12, "w": 98, "h": 66 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0067.png", - "frame": { "x": 478, "y": 1, "w": 94, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 11, "w": 94, "h": 69 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0068.png", - "frame": { "x": 560, "y": 132, "w": 93, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 19, "w": 93, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0069.png", - "frame": { "x": 474, "y": 257, "w": 90, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 22, "w": 90, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0070.png", - "frame": { "x": 95, "y": 197, "w": 94, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 21, "w": 94, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0071.png", - "frame": { "x": 99, "y": 1, "w": 94, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 71 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0072.png", - "frame": { "x": 291, "y": 1, "w": 90, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 6, "w": 90, "h": 73 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0073.png", - "frame": { "x": 288, "y": 74, "w": 90, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 21, "y": 11, "w": 90, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0074.png", - "frame": { "x": 368, "y": 317, "w": 88, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 23, "y": 17, "w": 88, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0075.png", - "frame": { "x": 96, "y": 259, "w": 91, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 15, "w": 91, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0076.png", - "frame": { "x": 381, "y": 68, "w": 91, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 20, "y": 3, "w": 91, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0077.png", - "frame": { "x": 565, "y": 196, "w": 90, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 16, "y": 6, "w": 90, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0078.png", - "frame": { "x": 278, "y": 266, "w": 90, "h": 59 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 10, "y": 10, "w": 90, "h": 59 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0079.png", - "frame": { "x": 189, "y": 199, "w": 95, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 8, "w": 95, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0080.png", - "frame": { "x": 193, "y": 1, "w": 98, "h": 68 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 3, "w": 98, "h": 68 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0081.png", - "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0082.png", - "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0084.png", - "frame": { "x": 1, "y": 136, "w": 94, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0085.png", - "frame": { "x": 95, "y": 72, "w": 96, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 12, "w": 96, "h": 63 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0086.png", - "frame": { "x": 381, "y": 1, "w": 97, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 11, "y": 6, "w": 97, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0087.png", - "frame": { "x": 1, "y": 71, "w": 94, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 17, "y": 10, "w": 94, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0088.png", - "frame": { "x": 469, "y": 196, "w": 96, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 12, "y": 12, "w": 96, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0089.png", - "frame": { "x": 1, "y": 1, "w": 98, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 5, "w": 98, "h": 70 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0090.png", - "frame": { "x": 191, "y": 136, "w": 94, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 14, "y": 10, "w": 94, "h": 63 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0091.png", - "frame": { "x": 95, "y": 135, "w": 96, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 12, "y": 11, "w": 96, "h": 62 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0092.png", - "frame": { "x": 572, "y": 67, "w": 99, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 7, "w": 99, "h": 65 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0093.png", - "frame": { "x": 284, "y": 205, "w": 95, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 14, "y": 11, "w": 95, "h": 61 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0094.png", - "frame": { "x": 1, "y": 199, "w": 91, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 12, "w": 91, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0095.png", - "frame": { "x": 1, "y": 259, "w": 95, "h": 60 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 12, "w": 95, "h": 60 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0096.png", - "frame": { "x": 193, "y": 69, "w": 95, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 5, "w": 95, "h": 67 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0097.png", - "frame": { "x": 285, "y": 141, "w": 92, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 18, "y": 8, "w": 92, "h": 64 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0098.png", - "frame": { "x": 96, "y": 318, "w": 89, "h": 58 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 22, "y": 14, "w": 89, "h": 58 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - }, - { - "filename": "0099.png", - "frame": { "x": 564, "y": 261, "w": 92, "h": 58 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 19, "y": 14, "w": 92, "h": 58 }, - "sourceSize": { "w": 111, "h": 83 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "693.png", - "format": "I8", - "size": { "w": 672, "h": 377 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/back/shiny/693.png b/public/images/pokemon/exp/back/shiny/693.png deleted file mode 100644 index 10b639004ae..00000000000 Binary files a/public/images/pokemon/exp/back/shiny/693.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/shiny/696.png b/public/images/pokemon/exp/back/shiny/696.png index 9b905155cf1..2f97f60ad1c 100644 Binary files a/public/images/pokemon/exp/back/shiny/696.png and b/public/images/pokemon/exp/back/shiny/696.png differ diff --git a/public/images/pokemon/exp/back/shiny/697.png b/public/images/pokemon/exp/back/shiny/697.png index fabed852462..8bfad6b1678 100644 Binary files a/public/images/pokemon/exp/back/shiny/697.png and b/public/images/pokemon/exp/back/shiny/697.png differ diff --git a/public/images/pokemon/exp/back/shiny/699.png b/public/images/pokemon/exp/back/shiny/699.png index 75f5c8d8b78..73450297b5c 100644 Binary files a/public/images/pokemon/exp/back/shiny/699.png and b/public/images/pokemon/exp/back/shiny/699.png differ diff --git a/public/images/pokemon/exp/back/shiny/700.png b/public/images/pokemon/exp/back/shiny/700.png index dab66177e99..7fc404239f3 100644 Binary files a/public/images/pokemon/exp/back/shiny/700.png and b/public/images/pokemon/exp/back/shiny/700.png differ diff --git a/public/images/pokemon/exp/back/shiny/702.png b/public/images/pokemon/exp/back/shiny/702.png index 7a02b912cf0..3b70916b72b 100644 Binary files a/public/images/pokemon/exp/back/shiny/702.png and b/public/images/pokemon/exp/back/shiny/702.png differ diff --git a/public/images/pokemon/exp/back/shiny/704.png b/public/images/pokemon/exp/back/shiny/704.png index 75a2898cd92..8c3419691ea 100644 Binary files a/public/images/pokemon/exp/back/shiny/704.png and b/public/images/pokemon/exp/back/shiny/704.png differ diff --git a/public/images/pokemon/exp/back/shiny/705.png b/public/images/pokemon/exp/back/shiny/705.png index 4ee803dd570..e3b236d3966 100644 Binary files a/public/images/pokemon/exp/back/shiny/705.png and b/public/images/pokemon/exp/back/shiny/705.png differ diff --git a/public/images/pokemon/exp/back/shiny/709.png b/public/images/pokemon/exp/back/shiny/709.png index c0d67915d17..d936087557e 100644 Binary files a/public/images/pokemon/exp/back/shiny/709.png and b/public/images/pokemon/exp/back/shiny/709.png differ diff --git a/public/images/pokemon/exp/back/shiny/712.png b/public/images/pokemon/exp/back/shiny/712.png index 989ed14b08e..c1b3fc092ca 100644 Binary files a/public/images/pokemon/exp/back/shiny/712.png and b/public/images/pokemon/exp/back/shiny/712.png differ diff --git a/public/images/pokemon/exp/back/shiny/713.png b/public/images/pokemon/exp/back/shiny/713.png index b4417f8386b..55d35eb7c15 100644 Binary files a/public/images/pokemon/exp/back/shiny/713.png and b/public/images/pokemon/exp/back/shiny/713.png differ diff --git a/public/images/pokemon/exp/back/shiny/716-active.png b/public/images/pokemon/exp/back/shiny/716-active.png index effe84542dc..5fb1d242a2c 100644 Binary files a/public/images/pokemon/exp/back/shiny/716-active.png and b/public/images/pokemon/exp/back/shiny/716-active.png differ diff --git a/public/images/pokemon/exp/back/shiny/716-neutral.png b/public/images/pokemon/exp/back/shiny/716-neutral.png index 26ee61454fd..d8e644667b1 100644 Binary files a/public/images/pokemon/exp/back/shiny/716-neutral.png and b/public/images/pokemon/exp/back/shiny/716-neutral.png differ diff --git a/public/images/pokemon/exp/back/shiny/728.png b/public/images/pokemon/exp/back/shiny/728.png index c28f73eb846..757a555e029 100644 Binary files a/public/images/pokemon/exp/back/shiny/728.png and b/public/images/pokemon/exp/back/shiny/728.png differ diff --git a/public/images/pokemon/exp/back/shiny/729.png b/public/images/pokemon/exp/back/shiny/729.png index 15c7bb566cf..e72b01bf3e4 100644 Binary files a/public/images/pokemon/exp/back/shiny/729.png and b/public/images/pokemon/exp/back/shiny/729.png differ diff --git a/public/images/pokemon/exp/back/shiny/730.png b/public/images/pokemon/exp/back/shiny/730.png index 413702c3bfd..8eb3f099d08 100644 Binary files a/public/images/pokemon/exp/back/shiny/730.png and b/public/images/pokemon/exp/back/shiny/730.png differ diff --git a/public/images/pokemon/exp/back/shiny/745-midnight.png b/public/images/pokemon/exp/back/shiny/745-midnight.png index a7d7e0497b5..d1030d0c571 100644 Binary files a/public/images/pokemon/exp/back/shiny/745-midnight.png and b/public/images/pokemon/exp/back/shiny/745-midnight.png differ diff --git a/public/images/pokemon/exp/back/shiny/745.png b/public/images/pokemon/exp/back/shiny/745.png index 49f2d0569af..80bab3879a5 100644 Binary files a/public/images/pokemon/exp/back/shiny/745.png and b/public/images/pokemon/exp/back/shiny/745.png differ diff --git a/public/images/pokemon/exp/back/shiny/746-school.png b/public/images/pokemon/exp/back/shiny/746-school.png index 2899d209989..160bb99814e 100644 Binary files a/public/images/pokemon/exp/back/shiny/746-school.png and b/public/images/pokemon/exp/back/shiny/746-school.png differ diff --git a/public/images/pokemon/exp/back/shiny/746.png b/public/images/pokemon/exp/back/shiny/746.png index 5ce4bdc8bcd..50147d75fa0 100644 Binary files a/public/images/pokemon/exp/back/shiny/746.png and b/public/images/pokemon/exp/back/shiny/746.png differ diff --git a/public/images/pokemon/exp/back/shiny/749.png b/public/images/pokemon/exp/back/shiny/749.png index 63a7d57d28f..4499bfe233a 100644 Binary files a/public/images/pokemon/exp/back/shiny/749.png and b/public/images/pokemon/exp/back/shiny/749.png differ diff --git a/public/images/pokemon/exp/back/shiny/750.png b/public/images/pokemon/exp/back/shiny/750.png index d099dce5a5e..c9304f50ef0 100644 Binary files a/public/images/pokemon/exp/back/shiny/750.png and b/public/images/pokemon/exp/back/shiny/750.png differ diff --git a/public/images/pokemon/exp/back/shiny/752.png b/public/images/pokemon/exp/back/shiny/752.png index 232daaedbf0..85dc65172c0 100644 Binary files a/public/images/pokemon/exp/back/shiny/752.png and b/public/images/pokemon/exp/back/shiny/752.png differ diff --git a/public/images/pokemon/exp/back/shiny/753.json b/public/images/pokemon/exp/back/shiny/753.json deleted file mode 100644 index f1d1bc11bb0..00000000000 --- a/public/images/pokemon/exp/back/shiny/753.json +++ /dev/null @@ -1,2582 +0,0 @@ -{ - "textures": [ - { - "image": "753.png", - "format": "RGBA8888", - "size": { - "w": 140, - "h": 140 - }, - "scale": 1, - "frames": [ - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0062.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 47 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 31, - "h": 47 - }, - "frame": { - "x": 0, - "y": 47, - "w": 31, - "h": 47 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 31, - "h": 46 - }, - "frame": { - "x": 0, - "y": 94, - "w": 31, - "h": 46 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0068.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0069.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0070.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0111.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0112.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0120.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0121.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0122.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0071.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0072.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 31, - "y": 47, - "w": 30, - "h": 47 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 7, - "w": 30, - "h": 46 - }, - "frame": { - "x": 31, - "y": 94, - "w": 30, - "h": 46 - } - }, - { - "filename": "0119.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 7, - "w": 30, - "h": 46 - }, - "frame": { - "x": 31, - "y": 94, - "w": 30, - "h": 46 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0077.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 30, - "h": 47 - }, - "frame": { - "x": 61, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0113.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0114.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 29, - "h": 47 - }, - "frame": { - "x": 91, - "y": 0, - "w": 29, - "h": 47 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0118.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 29, - "h": 47 - }, - "frame": { - "x": 61, - "y": 47, - "w": 29, - "h": 47 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0116.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 28, - "h": 46 - }, - "frame": { - "x": 61, - "y": 94, - "w": 28, - "h": 46 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 31, - "h": 53 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 45 - }, - "frame": { - "x": 89, - "y": 94, - "w": 29, - "h": 45 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b6d27dc4e44833805071498f628d15c3:7ab61edae9d3eecb963334bb47dd5aa7:16c1874bc814253ca78e52a99a340ff7$" - } -} diff --git a/public/images/pokemon/exp/back/shiny/753.png b/public/images/pokemon/exp/back/shiny/753.png deleted file mode 100644 index 14f23fc6bb9..00000000000 Binary files a/public/images/pokemon/exp/back/shiny/753.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/shiny/754.json b/public/images/pokemon/exp/back/shiny/754.json deleted file mode 100644 index 8b1a3d44a4d..00000000000 --- a/public/images/pokemon/exp/back/shiny/754.json +++ /dev/null @@ -1,1133 +0,0 @@ -{ - "textures": [ - { - "image": "754.png", - "format": "RGBA8888", - "size": { - "w": 222, - "h": 222 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:7651b73927071f2814265b66582a8d13:a2d1ef3cf0c2458640f77c2fbcc821a0:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} diff --git a/public/images/pokemon/exp/back/shiny/754.png b/public/images/pokemon/exp/back/shiny/754.png deleted file mode 100644 index 1f7346ed822..00000000000 Binary files a/public/images/pokemon/exp/back/shiny/754.png and /dev/null differ diff --git a/public/images/pokemon/exp/back/shiny/772.png b/public/images/pokemon/exp/back/shiny/772.png index 49124763f6c..721eb7e1c74 100644 Binary files a/public/images/pokemon/exp/back/shiny/772.png and b/public/images/pokemon/exp/back/shiny/772.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-bug.png b/public/images/pokemon/exp/back/shiny/773-bug.png index 0485a61c66b..56e244acfbc 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-bug.png and b/public/images/pokemon/exp/back/shiny/773-bug.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-dark.png b/public/images/pokemon/exp/back/shiny/773-dark.png index 7e83dbf919e..26c4796ca76 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-dark.png and b/public/images/pokemon/exp/back/shiny/773-dark.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-dragon.png b/public/images/pokemon/exp/back/shiny/773-dragon.png index 296cd6c2c5a..1f0836d663c 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-dragon.png and b/public/images/pokemon/exp/back/shiny/773-dragon.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-electric.png b/public/images/pokemon/exp/back/shiny/773-electric.png index 63448886494..fdba2968c46 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-electric.png and b/public/images/pokemon/exp/back/shiny/773-electric.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-fairy.png b/public/images/pokemon/exp/back/shiny/773-fairy.png index c0d86f884cd..03842f1fe5d 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-fairy.png and b/public/images/pokemon/exp/back/shiny/773-fairy.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-fighting.png b/public/images/pokemon/exp/back/shiny/773-fighting.png index 1bcc56a5eb9..abc5c7673a0 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-fighting.png and b/public/images/pokemon/exp/back/shiny/773-fighting.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-fire.png b/public/images/pokemon/exp/back/shiny/773-fire.png index 5a68353c338..4e57a12342f 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-fire.png and b/public/images/pokemon/exp/back/shiny/773-fire.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-flying.png b/public/images/pokemon/exp/back/shiny/773-flying.png index f88f6643725..042eb4c6ad8 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-flying.png and b/public/images/pokemon/exp/back/shiny/773-flying.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-ghost.png b/public/images/pokemon/exp/back/shiny/773-ghost.png index 9f34535b028..305bc3c1043 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-ghost.png and b/public/images/pokemon/exp/back/shiny/773-ghost.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-grass.png b/public/images/pokemon/exp/back/shiny/773-grass.png index 97336814818..e6fc78bebb2 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-grass.png and b/public/images/pokemon/exp/back/shiny/773-grass.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-ground.png b/public/images/pokemon/exp/back/shiny/773-ground.png index 074746d3e86..5ced74525b5 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-ground.png and b/public/images/pokemon/exp/back/shiny/773-ground.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-ice.png b/public/images/pokemon/exp/back/shiny/773-ice.png index b59a3d15684..9a96f467f03 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-ice.png and b/public/images/pokemon/exp/back/shiny/773-ice.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-poison.png b/public/images/pokemon/exp/back/shiny/773-poison.png index 3b72b45c7be..7d34cc5a69a 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-poison.png and b/public/images/pokemon/exp/back/shiny/773-poison.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-psychic.png b/public/images/pokemon/exp/back/shiny/773-psychic.png index d3480a88344..d14913014e0 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-psychic.png and b/public/images/pokemon/exp/back/shiny/773-psychic.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-rock.png b/public/images/pokemon/exp/back/shiny/773-rock.png index 9464836c7a3..22023406094 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-rock.png and b/public/images/pokemon/exp/back/shiny/773-rock.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-steel.png b/public/images/pokemon/exp/back/shiny/773-steel.png index e36b261412b..2832a95507c 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-steel.png and b/public/images/pokemon/exp/back/shiny/773-steel.png differ diff --git a/public/images/pokemon/exp/back/shiny/773-water.png b/public/images/pokemon/exp/back/shiny/773-water.png index 824608d0971..67c447c6d2f 100644 Binary files a/public/images/pokemon/exp/back/shiny/773-water.png and b/public/images/pokemon/exp/back/shiny/773-water.png differ diff --git a/public/images/pokemon/exp/back/shiny/773.png b/public/images/pokemon/exp/back/shiny/773.png index 2c4741a6b0b..699a56f3a24 100644 Binary files a/public/images/pokemon/exp/back/shiny/773.png and b/public/images/pokemon/exp/back/shiny/773.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-blue-meteor.png b/public/images/pokemon/exp/back/shiny/774-blue-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-blue-meteor.png and b/public/images/pokemon/exp/back/shiny/774-blue-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-blue.png b/public/images/pokemon/exp/back/shiny/774-blue.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-blue.png and b/public/images/pokemon/exp/back/shiny/774-blue.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-green-meteor.png b/public/images/pokemon/exp/back/shiny/774-green-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-green-meteor.png and b/public/images/pokemon/exp/back/shiny/774-green-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-green.png b/public/images/pokemon/exp/back/shiny/774-green.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-green.png and b/public/images/pokemon/exp/back/shiny/774-green.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-indigo-meteor.png b/public/images/pokemon/exp/back/shiny/774-indigo-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-indigo-meteor.png and b/public/images/pokemon/exp/back/shiny/774-indigo-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-indigo.png b/public/images/pokemon/exp/back/shiny/774-indigo.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-indigo.png and b/public/images/pokemon/exp/back/shiny/774-indigo.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-orange-meteor.png b/public/images/pokemon/exp/back/shiny/774-orange-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-orange-meteor.png and b/public/images/pokemon/exp/back/shiny/774-orange-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-orange.png b/public/images/pokemon/exp/back/shiny/774-orange.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-orange.png and b/public/images/pokemon/exp/back/shiny/774-orange.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-red-meteor.png b/public/images/pokemon/exp/back/shiny/774-red-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-red-meteor.png and b/public/images/pokemon/exp/back/shiny/774-red-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-red.png b/public/images/pokemon/exp/back/shiny/774-red.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-red.png and b/public/images/pokemon/exp/back/shiny/774-red.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-violet-meteor.png b/public/images/pokemon/exp/back/shiny/774-violet-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-violet-meteor.png and b/public/images/pokemon/exp/back/shiny/774-violet-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-violet.png b/public/images/pokemon/exp/back/shiny/774-violet.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-violet.png and b/public/images/pokemon/exp/back/shiny/774-violet.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-yellow-meteor.png b/public/images/pokemon/exp/back/shiny/774-yellow-meteor.png index 52cb0fa19c7..a7246517444 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-yellow-meteor.png and b/public/images/pokemon/exp/back/shiny/774-yellow-meteor.png differ diff --git a/public/images/pokemon/exp/back/shiny/774-yellow.png b/public/images/pokemon/exp/back/shiny/774-yellow.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774-yellow.png and b/public/images/pokemon/exp/back/shiny/774-yellow.png differ diff --git a/public/images/pokemon/exp/back/shiny/774.png b/public/images/pokemon/exp/back/shiny/774.png index dcfb487561c..01367ecafa9 100644 Binary files a/public/images/pokemon/exp/back/shiny/774.png and b/public/images/pokemon/exp/back/shiny/774.png differ diff --git a/public/images/pokemon/exp/back/shiny/776.png b/public/images/pokemon/exp/back/shiny/776.png index 4c4115a8132..1ec1567c99a 100644 Binary files a/public/images/pokemon/exp/back/shiny/776.png and b/public/images/pokemon/exp/back/shiny/776.png differ diff --git a/public/images/pokemon/exp/back/shiny/778-disguised.png b/public/images/pokemon/exp/back/shiny/778-disguised.png index 8d3183cee0c..37f4575c0ee 100644 Binary files a/public/images/pokemon/exp/back/shiny/778-disguised.png and b/public/images/pokemon/exp/back/shiny/778-disguised.png differ diff --git a/public/images/pokemon/exp/back/shiny/780.png b/public/images/pokemon/exp/back/shiny/780.png index 686b7220fbb..15ebb3ba728 100644 Binary files a/public/images/pokemon/exp/back/shiny/780.png and b/public/images/pokemon/exp/back/shiny/780.png differ diff --git a/public/images/pokemon/exp/back/shiny/798.png b/public/images/pokemon/exp/back/shiny/798.png index 322600a1fdf..87361f36495 100644 Binary files a/public/images/pokemon/exp/back/shiny/798.png and b/public/images/pokemon/exp/back/shiny/798.png differ diff --git a/public/images/pokemon/exp/back/shiny/80-mega.png b/public/images/pokemon/exp/back/shiny/80-mega.png index af2277cb9da..e2b3a715506 100644 Binary files a/public/images/pokemon/exp/back/shiny/80-mega.png and b/public/images/pokemon/exp/back/shiny/80-mega.png differ diff --git a/public/images/pokemon/exp/back/shiny/815-gigantamax.png b/public/images/pokemon/exp/back/shiny/815-gigantamax.png index 0668fd3b065..edf959cab07 100644 Binary files a/public/images/pokemon/exp/back/shiny/815-gigantamax.png and b/public/images/pokemon/exp/back/shiny/815-gigantamax.png differ diff --git a/public/images/pokemon/exp/back/shiny/821.png b/public/images/pokemon/exp/back/shiny/821.png index d069d59ef72..d6a0c0991d1 100644 Binary files a/public/images/pokemon/exp/back/shiny/821.png and b/public/images/pokemon/exp/back/shiny/821.png differ diff --git a/public/images/pokemon/exp/back/shiny/823.png b/public/images/pokemon/exp/back/shiny/823.png index 09c06f2aeb6..73ade8ab4e7 100644 Binary files a/public/images/pokemon/exp/back/shiny/823.png and b/public/images/pokemon/exp/back/shiny/823.png differ diff --git a/public/images/pokemon/exp/back/shiny/839-gigantamax.png b/public/images/pokemon/exp/back/shiny/839-gigantamax.png index ce96d8134a6..217cb53c331 100644 Binary files a/public/images/pokemon/exp/back/shiny/839-gigantamax.png and b/public/images/pokemon/exp/back/shiny/839-gigantamax.png differ diff --git a/public/images/pokemon/exp/back/shiny/840.png b/public/images/pokemon/exp/back/shiny/840.png index e37bd252d7b..2a69cbb2bc0 100644 Binary files a/public/images/pokemon/exp/back/shiny/840.png and b/public/images/pokemon/exp/back/shiny/840.png differ diff --git a/public/images/pokemon/exp/back/shiny/867.png b/public/images/pokemon/exp/back/shiny/867.png index 9821217341e..7be80836150 100644 Binary files a/public/images/pokemon/exp/back/shiny/867.png and b/public/images/pokemon/exp/back/shiny/867.png differ diff --git a/public/images/pokemon/exp/back/shiny/888-crowned.png b/public/images/pokemon/exp/back/shiny/888-crowned.png index a4ed4c67ed4..a572deeee39 100644 Binary files a/public/images/pokemon/exp/back/shiny/888-crowned.png and b/public/images/pokemon/exp/back/shiny/888-crowned.png differ diff --git a/public/images/pokemon/exp/back/shiny/898-ice.png b/public/images/pokemon/exp/back/shiny/898-ice.png index 9f1a5bd03e3..96e83c08d6b 100644 Binary files a/public/images/pokemon/exp/back/shiny/898-ice.png and b/public/images/pokemon/exp/back/shiny/898-ice.png differ diff --git a/public/images/pokemon/exp/back/shiny/898-shadow.png b/public/images/pokemon/exp/back/shiny/898-shadow.png index 2a506193e7d..011fc90e041 100644 Binary files a/public/images/pokemon/exp/back/shiny/898-shadow.png and b/public/images/pokemon/exp/back/shiny/898-shadow.png differ diff --git a/public/images/pokemon/exp/back/shiny/911.png b/public/images/pokemon/exp/back/shiny/911.png index 948f8a3ae12..8fd029cdbd5 100644 Binary files a/public/images/pokemon/exp/back/shiny/911.png and b/public/images/pokemon/exp/back/shiny/911.png differ diff --git a/public/images/pokemon/exp/back/shiny/913.png b/public/images/pokemon/exp/back/shiny/913.png index 9d65e55e94a..855e23f6180 100644 Binary files a/public/images/pokemon/exp/back/shiny/913.png and b/public/images/pokemon/exp/back/shiny/913.png differ diff --git a/public/images/pokemon/exp/back/shiny/914.png b/public/images/pokemon/exp/back/shiny/914.png index 17f787add8f..ee2052b6d7d 100644 Binary files a/public/images/pokemon/exp/back/shiny/914.png and b/public/images/pokemon/exp/back/shiny/914.png differ diff --git a/public/images/pokemon/exp/back/shiny/944.png b/public/images/pokemon/exp/back/shiny/944.png index 060e8a99545..95d9d0264ab 100644 Binary files a/public/images/pokemon/exp/back/shiny/944.png and b/public/images/pokemon/exp/back/shiny/944.png differ diff --git a/public/images/pokemon/exp/back/shiny/945.png b/public/images/pokemon/exp/back/shiny/945.png index 71644f57479..0b18742c3a6 100644 Binary files a/public/images/pokemon/exp/back/shiny/945.png and b/public/images/pokemon/exp/back/shiny/945.png differ diff --git a/public/images/pokemon/exp/back/shiny/954.png b/public/images/pokemon/exp/back/shiny/954.png index e12b479d462..f23d7c8f486 100644 Binary files a/public/images/pokemon/exp/back/shiny/954.png and b/public/images/pokemon/exp/back/shiny/954.png differ diff --git a/public/images/pokemon/exp/back/shiny/957.png b/public/images/pokemon/exp/back/shiny/957.png index 2626b4e5ec2..e8de1242f79 100644 Binary files a/public/images/pokemon/exp/back/shiny/957.png and b/public/images/pokemon/exp/back/shiny/957.png differ diff --git a/public/images/pokemon/exp/back/shiny/958.png b/public/images/pokemon/exp/back/shiny/958.png index 030e88a35bb..1cf524c77c9 100644 Binary files a/public/images/pokemon/exp/back/shiny/958.png and b/public/images/pokemon/exp/back/shiny/958.png differ diff --git a/public/images/pokemon/exp/back/shiny/959.png b/public/images/pokemon/exp/back/shiny/959.png index b6931b47fdc..cc1f95ec1eb 100644 Binary files a/public/images/pokemon/exp/back/shiny/959.png and b/public/images/pokemon/exp/back/shiny/959.png differ diff --git a/public/images/pokemon/exp/back/shiny/970.png b/public/images/pokemon/exp/back/shiny/970.png index 03ed35af776..f4c9572ee09 100644 Binary files a/public/images/pokemon/exp/back/shiny/970.png and b/public/images/pokemon/exp/back/shiny/970.png differ diff --git a/public/images/pokemon/exp/back/shiny/974.png b/public/images/pokemon/exp/back/shiny/974.png index bd9327b1e51..a4af176d952 100644 Binary files a/public/images/pokemon/exp/back/shiny/974.png and b/public/images/pokemon/exp/back/shiny/974.png differ diff --git a/public/images/pokemon/exp/back/shiny/975.png b/public/images/pokemon/exp/back/shiny/975.png index 90e14f96ce2..9fc2402f1e2 100644 Binary files a/public/images/pokemon/exp/back/shiny/975.png and b/public/images/pokemon/exp/back/shiny/975.png differ diff --git a/public/images/pokemon/exp/back/shiny/981.png b/public/images/pokemon/exp/back/shiny/981.png index 153f6594be4..d1b40e235fd 100644 Binary files a/public/images/pokemon/exp/back/shiny/981.png and b/public/images/pokemon/exp/back/shiny/981.png differ diff --git a/public/images/pokemon/exp/back/shiny/987.png b/public/images/pokemon/exp/back/shiny/987.png index f62bb9f3ecc..df649bb721a 100644 Binary files a/public/images/pokemon/exp/back/shiny/987.png and b/public/images/pokemon/exp/back/shiny/987.png differ diff --git a/public/images/pokemon/exp/back/shiny/female/668.png b/public/images/pokemon/exp/back/shiny/female/668.png index cec15d8fcb7..f8a8cb20d29 100644 Binary files a/public/images/pokemon/exp/back/shiny/female/668.png and b/public/images/pokemon/exp/back/shiny/female/668.png differ diff --git a/public/images/pokemon/exp/female/668.png b/public/images/pokemon/exp/female/668.png index fa0582a61f1..135e457f936 100644 Binary files a/public/images/pokemon/exp/female/668.png and b/public/images/pokemon/exp/female/668.png differ diff --git a/public/images/pokemon/exp/shiny/1003.png b/public/images/pokemon/exp/shiny/1003.png index 22c1d89a879..454939562fb 100644 Binary files a/public/images/pokemon/exp/shiny/1003.png and b/public/images/pokemon/exp/shiny/1003.png differ diff --git a/public/images/pokemon/exp/shiny/1004.png b/public/images/pokemon/exp/shiny/1004.png index 81977a49ca5..6b8822c4a90 100644 Binary files a/public/images/pokemon/exp/shiny/1004.png and b/public/images/pokemon/exp/shiny/1004.png differ diff --git a/public/images/pokemon/exp/shiny/130-mega.png b/public/images/pokemon/exp/shiny/130-mega.png index fb4f81bf629..db243926265 100644 Binary files a/public/images/pokemon/exp/shiny/130-mega.png and b/public/images/pokemon/exp/shiny/130-mega.png differ diff --git a/public/images/pokemon/exp/shiny/2037.png b/public/images/pokemon/exp/shiny/2037.png index bf55fc87f2c..75d520c02e1 100644 Binary files a/public/images/pokemon/exp/shiny/2037.png and b/public/images/pokemon/exp/shiny/2037.png differ diff --git a/public/images/pokemon/exp/shiny/2038.png b/public/images/pokemon/exp/shiny/2038.png index c2e00f4c939..de76b9241b1 100644 Binary files a/public/images/pokemon/exp/shiny/2038.png and b/public/images/pokemon/exp/shiny/2038.png differ diff --git a/public/images/pokemon/exp/shiny/2074.png b/public/images/pokemon/exp/shiny/2074.png index 6697b81ffbc..61487615ec2 100644 Binary files a/public/images/pokemon/exp/shiny/2074.png and b/public/images/pokemon/exp/shiny/2074.png differ diff --git a/public/images/pokemon/exp/shiny/2075.png b/public/images/pokemon/exp/shiny/2075.png index 212e4b011df..8a5ba1a33db 100644 Binary files a/public/images/pokemon/exp/shiny/2075.png and b/public/images/pokemon/exp/shiny/2075.png differ diff --git a/public/images/pokemon/exp/shiny/2076.png b/public/images/pokemon/exp/shiny/2076.png index d98bf81cead..12d910ceb02 100644 Binary files a/public/images/pokemon/exp/shiny/2076.png and b/public/images/pokemon/exp/shiny/2076.png differ diff --git a/public/images/pokemon/exp/shiny/2088.png b/public/images/pokemon/exp/shiny/2088.png index 5cccf0c0252..59be49fc276 100644 Binary files a/public/images/pokemon/exp/shiny/2088.png and b/public/images/pokemon/exp/shiny/2088.png differ diff --git a/public/images/pokemon/exp/shiny/2089.png b/public/images/pokemon/exp/shiny/2089.png index f60271c3f21..abb01648a72 100644 Binary files a/public/images/pokemon/exp/shiny/2089.png and b/public/images/pokemon/exp/shiny/2089.png differ diff --git a/public/images/pokemon/exp/shiny/248-mega.png b/public/images/pokemon/exp/shiny/248-mega.png index 8d9d5fc316c..7c405986770 100644 Binary files a/public/images/pokemon/exp/shiny/248-mega.png and b/public/images/pokemon/exp/shiny/248-mega.png differ diff --git a/public/images/pokemon/exp/shiny/362-mega.png b/public/images/pokemon/exp/shiny/362-mega.png index 6645ab66cab..c33981047f4 100644 Binary files a/public/images/pokemon/exp/shiny/362-mega.png and b/public/images/pokemon/exp/shiny/362-mega.png differ diff --git a/public/images/pokemon/exp/shiny/373-mega.png b/public/images/pokemon/exp/shiny/373-mega.png index 15f7a2e9017..077436d2d2a 100644 Binary files a/public/images/pokemon/exp/shiny/373-mega.png and b/public/images/pokemon/exp/shiny/373-mega.png differ diff --git a/public/images/pokemon/exp/shiny/4077.png b/public/images/pokemon/exp/shiny/4077.png index ab414e058e1..ce70f9cc7bd 100644 Binary files a/public/images/pokemon/exp/shiny/4077.png and b/public/images/pokemon/exp/shiny/4077.png differ diff --git a/public/images/pokemon/exp/shiny/4080.png b/public/images/pokemon/exp/shiny/4080.png index 20cf5abe061..cc48520e921 100644 Binary files a/public/images/pokemon/exp/shiny/4080.png and b/public/images/pokemon/exp/shiny/4080.png differ diff --git a/public/images/pokemon/exp/shiny/4083.png b/public/images/pokemon/exp/shiny/4083.png index 40d6c6cc50f..67753bc2dec 100644 Binary files a/public/images/pokemon/exp/shiny/4083.png and b/public/images/pokemon/exp/shiny/4083.png differ diff --git a/public/images/pokemon/exp/shiny/4144.png b/public/images/pokemon/exp/shiny/4144.png index 09a4c5802f3..bfe05390436 100644 Binary files a/public/images/pokemon/exp/shiny/4144.png and b/public/images/pokemon/exp/shiny/4144.png differ diff --git a/public/images/pokemon/exp/shiny/4145.png b/public/images/pokemon/exp/shiny/4145.png index 78aa2abb4ad..73a477a7595 100644 Binary files a/public/images/pokemon/exp/shiny/4145.png and b/public/images/pokemon/exp/shiny/4145.png differ diff --git a/public/images/pokemon/exp/shiny/4146.png b/public/images/pokemon/exp/shiny/4146.png index 758dd3877ec..c44536aa5c4 100644 Binary files a/public/images/pokemon/exp/shiny/4146.png and b/public/images/pokemon/exp/shiny/4146.png differ diff --git a/public/images/pokemon/exp/shiny/4222.png b/public/images/pokemon/exp/shiny/4222.png index 62ab7974e7e..677fba740f2 100644 Binary files a/public/images/pokemon/exp/shiny/4222.png and b/public/images/pokemon/exp/shiny/4222.png differ diff --git a/public/images/pokemon/exp/shiny/4264.png b/public/images/pokemon/exp/shiny/4264.png index 3508177e683..f6ae1c66f08 100644 Binary files a/public/images/pokemon/exp/shiny/4264.png and b/public/images/pokemon/exp/shiny/4264.png differ diff --git a/public/images/pokemon/exp/shiny/4555.png b/public/images/pokemon/exp/shiny/4555.png index 1fc84012eed..cb1330b3150 100644 Binary files a/public/images/pokemon/exp/shiny/4555.png and b/public/images/pokemon/exp/shiny/4555.png differ diff --git a/public/images/pokemon/exp/shiny/484-origin.png b/public/images/pokemon/exp/shiny/484-origin.png index bea804ed677..7554feb122b 100644 Binary files a/public/images/pokemon/exp/shiny/484-origin.png and b/public/images/pokemon/exp/shiny/484-origin.png differ diff --git a/public/images/pokemon/exp/shiny/569-gigantamax.png b/public/images/pokemon/exp/shiny/569-gigantamax.png index fc15ecd4585..3a4ad6e39c1 100644 Binary files a/public/images/pokemon/exp/shiny/569-gigantamax.png and b/public/images/pokemon/exp/shiny/569-gigantamax.png differ diff --git a/public/images/pokemon/exp/shiny/6211.png b/public/images/pokemon/exp/shiny/6211.png index eacdfae2ff4..23da5a6a222 100644 Binary files a/public/images/pokemon/exp/shiny/6211.png and b/public/images/pokemon/exp/shiny/6211.png differ diff --git a/public/images/pokemon/exp/shiny/651.png b/public/images/pokemon/exp/shiny/651.png index 1e59bc97587..53ac68b444b 100644 Binary files a/public/images/pokemon/exp/shiny/651.png and b/public/images/pokemon/exp/shiny/651.png differ diff --git a/public/images/pokemon/exp/shiny/653.png b/public/images/pokemon/exp/shiny/653.png index b1afebbd6a1..872eb45c6d2 100644 Binary files a/public/images/pokemon/exp/shiny/653.png and b/public/images/pokemon/exp/shiny/653.png differ diff --git a/public/images/pokemon/exp/shiny/654.png b/public/images/pokemon/exp/shiny/654.png index bc9177ec918..826576c699b 100644 Binary files a/public/images/pokemon/exp/shiny/654.png and b/public/images/pokemon/exp/shiny/654.png differ diff --git a/public/images/pokemon/exp/shiny/656.png b/public/images/pokemon/exp/shiny/656.png index c0a97924ca7..824e8a37281 100644 Binary files a/public/images/pokemon/exp/shiny/656.png and b/public/images/pokemon/exp/shiny/656.png differ diff --git a/public/images/pokemon/exp/shiny/6571.png b/public/images/pokemon/exp/shiny/6571.png index 25008c500d1..7553b59365d 100644 Binary files a/public/images/pokemon/exp/shiny/6571.png and b/public/images/pokemon/exp/shiny/6571.png differ diff --git a/public/images/pokemon/exp/shiny/658-ash.png b/public/images/pokemon/exp/shiny/658-ash.png index 5b25ec9e021..bc9435ec396 100644 Binary files a/public/images/pokemon/exp/shiny/658-ash.png and b/public/images/pokemon/exp/shiny/658-ash.png differ diff --git a/public/images/pokemon/exp/shiny/658-battle-bond.png b/public/images/pokemon/exp/shiny/658-battle-bond.png index c34cca13407..a88842e81b9 100644 Binary files a/public/images/pokemon/exp/shiny/658-battle-bond.png and b/public/images/pokemon/exp/shiny/658-battle-bond.png differ diff --git a/public/images/pokemon/exp/shiny/658.png b/public/images/pokemon/exp/shiny/658.png index e7278458f2c..a4d0c832bbe 100644 Binary files a/public/images/pokemon/exp/shiny/658.png and b/public/images/pokemon/exp/shiny/658.png differ diff --git a/public/images/pokemon/exp/shiny/661.png b/public/images/pokemon/exp/shiny/661.png index 0e2d5996bc2..18e032cf77d 100644 Binary files a/public/images/pokemon/exp/shiny/661.png and b/public/images/pokemon/exp/shiny/661.png differ diff --git a/public/images/pokemon/exp/shiny/662.png b/public/images/pokemon/exp/shiny/662.png index 4eae91c7855..6a515be1d7b 100644 Binary files a/public/images/pokemon/exp/shiny/662.png and b/public/images/pokemon/exp/shiny/662.png differ diff --git a/public/images/pokemon/exp/shiny/6628.png b/public/images/pokemon/exp/shiny/6628.png index 904065d6f57..8a370d7d174 100644 Binary files a/public/images/pokemon/exp/shiny/6628.png and b/public/images/pokemon/exp/shiny/6628.png differ diff --git a/public/images/pokemon/exp/shiny/663.png b/public/images/pokemon/exp/shiny/663.png index a4e9dad1596..54c4a1cd7fc 100644 Binary files a/public/images/pokemon/exp/shiny/663.png and b/public/images/pokemon/exp/shiny/663.png differ diff --git a/public/images/pokemon/exp/shiny/664.png b/public/images/pokemon/exp/shiny/664.png index bfb8bd76371..7da7b7d704e 100644 Binary files a/public/images/pokemon/exp/shiny/664.png and b/public/images/pokemon/exp/shiny/664.png differ diff --git a/public/images/pokemon/exp/shiny/665.png b/public/images/pokemon/exp/shiny/665.png index 7046825ae59..8e9c1e84e1b 100644 Binary files a/public/images/pokemon/exp/shiny/665.png and b/public/images/pokemon/exp/shiny/665.png differ diff --git a/public/images/pokemon/exp/shiny/667.png b/public/images/pokemon/exp/shiny/667.png index 589f219c472..7985888758b 100644 Binary files a/public/images/pokemon/exp/shiny/667.png and b/public/images/pokemon/exp/shiny/667.png differ diff --git a/public/images/pokemon/exp/shiny/668-female.png b/public/images/pokemon/exp/shiny/668-female.png index 9544e92c622..ae6af266ade 100644 Binary files a/public/images/pokemon/exp/shiny/668-female.png and b/public/images/pokemon/exp/shiny/668-female.png differ diff --git a/public/images/pokemon/exp/shiny/668.png b/public/images/pokemon/exp/shiny/668.png index 4cac3d1d582..2d9b09e2a66 100644 Binary files a/public/images/pokemon/exp/shiny/668.png and b/public/images/pokemon/exp/shiny/668.png differ diff --git a/public/images/pokemon/exp/shiny/669-red.png b/public/images/pokemon/exp/shiny/669-red.png index 242087ff5d9..7c64cd53ea3 100644 Binary files a/public/images/pokemon/exp/shiny/669-red.png and b/public/images/pokemon/exp/shiny/669-red.png differ diff --git a/public/images/pokemon/exp/shiny/670-blue.png b/public/images/pokemon/exp/shiny/670-blue.png index 0b9d95f232f..26f49ceda91 100644 Binary files a/public/images/pokemon/exp/shiny/670-blue.png and b/public/images/pokemon/exp/shiny/670-blue.png differ diff --git a/public/images/pokemon/exp/shiny/670-orange.png b/public/images/pokemon/exp/shiny/670-orange.png index e86c6d9e230..4e0a7881fd3 100644 Binary files a/public/images/pokemon/exp/shiny/670-orange.png and b/public/images/pokemon/exp/shiny/670-orange.png differ diff --git a/public/images/pokemon/exp/shiny/670-red.png b/public/images/pokemon/exp/shiny/670-red.png index 0095258dd68..8aaabfb26e9 100644 Binary files a/public/images/pokemon/exp/shiny/670-red.png and b/public/images/pokemon/exp/shiny/670-red.png differ diff --git a/public/images/pokemon/exp/shiny/670-white.png b/public/images/pokemon/exp/shiny/670-white.png index 29fc8bad662..ad1f19e7d0b 100644 Binary files a/public/images/pokemon/exp/shiny/670-white.png and b/public/images/pokemon/exp/shiny/670-white.png differ diff --git a/public/images/pokemon/exp/shiny/670-yellow.png b/public/images/pokemon/exp/shiny/670-yellow.png index 8c6b85c4f60..6023e48fb2d 100644 Binary files a/public/images/pokemon/exp/shiny/670-yellow.png and b/public/images/pokemon/exp/shiny/670-yellow.png differ diff --git a/public/images/pokemon/exp/shiny/670-yellow_1.png b/public/images/pokemon/exp/shiny/670-yellow_1.png index fdc31ce08d8..cd715c071db 100644 Binary files a/public/images/pokemon/exp/shiny/670-yellow_1.png and b/public/images/pokemon/exp/shiny/670-yellow_1.png differ diff --git a/public/images/pokemon/exp/shiny/672.json b/public/images/pokemon/exp/shiny/672.json deleted file mode 100644 index f337bef7d29..00000000000 --- a/public/images/pokemon/exp/shiny/672.json +++ /dev/null @@ -1,479 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 42, "y": 100, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 83, "y": 101, "w": 41, "h": 49 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, - "sourceSize": { "w": 44, "h": 58 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.11-x64", - "image": "672.png", - "format": "I8", - "size": { "w": 170, "h": 193 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/shiny/672.png b/public/images/pokemon/exp/shiny/672.png deleted file mode 100644 index 605e79f1889..00000000000 Binary files a/public/images/pokemon/exp/shiny/672.png and /dev/null differ diff --git a/public/images/pokemon/exp/shiny/675.png b/public/images/pokemon/exp/shiny/675.png index 83f96cf22ba..197d6815b6b 100644 Binary files a/public/images/pokemon/exp/shiny/675.png and b/public/images/pokemon/exp/shiny/675.png differ diff --git a/public/images/pokemon/exp/shiny/677.png b/public/images/pokemon/exp/shiny/677.png index 1a236f65716..3192eb840dd 100644 Binary files a/public/images/pokemon/exp/shiny/677.png and b/public/images/pokemon/exp/shiny/677.png differ diff --git a/public/images/pokemon/exp/shiny/678-female.png b/public/images/pokemon/exp/shiny/678-female.png index 021055baf2c..ebfa6405464 100644 Binary files a/public/images/pokemon/exp/shiny/678-female.png and b/public/images/pokemon/exp/shiny/678-female.png differ diff --git a/public/images/pokemon/exp/shiny/679.png b/public/images/pokemon/exp/shiny/679.png index 46373f60ead..3601e7aa522 100644 Binary files a/public/images/pokemon/exp/shiny/679.png and b/public/images/pokemon/exp/shiny/679.png differ diff --git a/public/images/pokemon/exp/shiny/682.png b/public/images/pokemon/exp/shiny/682.png index 099176ee625..156f6395917 100644 Binary files a/public/images/pokemon/exp/shiny/682.png and b/public/images/pokemon/exp/shiny/682.png differ diff --git a/public/images/pokemon/exp/shiny/684.png b/public/images/pokemon/exp/shiny/684.png index ed7b392cd6d..8bf0dcc822b 100644 Binary files a/public/images/pokemon/exp/shiny/684.png and b/public/images/pokemon/exp/shiny/684.png differ diff --git a/public/images/pokemon/exp/shiny/692.json b/public/images/pokemon/exp/shiny/692.json deleted file mode 100644 index 86b535260ae..00000000000 --- a/public/images/pokemon/exp/shiny/692.json +++ /dev/null @@ -1,794 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0002.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0003.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0004.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0005.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0006.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0007.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0008.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0009.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0010.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0011.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0012.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0013.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0014.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0015.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0016.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0017.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0018.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0019.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0020.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0021.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0022.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0023.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0024.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0025.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0026.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0027.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0028.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0029.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0030.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0031.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0032.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0033.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0034.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0035.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0036.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0037.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0038.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0039.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0040.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0041.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0042.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0043.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0044.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0045.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0046.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0047.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0048.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0049.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0050.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0051.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0052.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0053.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0054.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0055.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0056.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0057.png", - "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0058.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0059.png", - "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0060.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0061.png", - "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0062.png", - "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0063.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0064.png", - "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0065.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0066.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0067.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0068.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0069.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0070.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0071.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0072.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0073.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0074.png", - "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0075.png", - "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0076.png", - "frame": { "x": 117, "y": 72, "w": 59, "h": 33 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 2, "w": 59, "h": 33 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0077.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0078.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0079.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0080.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0081.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0082.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0084.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0085.png", - "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0086.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - }, - { - "filename": "0087.png", - "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, - "sourceSize": { "w": 63, "h": 35 }, - "duration": 50 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "692.png", - "format": "I8", - "size": { "w": 239, "h": 106 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/shiny/692.png b/public/images/pokemon/exp/shiny/692.png deleted file mode 100644 index d46c585bdfb..00000000000 Binary files a/public/images/pokemon/exp/shiny/692.png and /dev/null differ diff --git a/public/images/pokemon/exp/shiny/693.json b/public/images/pokemon/exp/shiny/693.json deleted file mode 100644 index c8f7763de1d..00000000000 --- a/public/images/pokemon/exp/shiny/693.json +++ /dev/null @@ -1,902 +0,0 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0002.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0003.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0004.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0005.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0006.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0007.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0008.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0009.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0010.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0011.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0012.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0013.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0014.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0015.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0016.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0017.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0018.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0019.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0020.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0021.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0022.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0023.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0024.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0025.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0026.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0027.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0028.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0029.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0030.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0031.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0032.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0033.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0034.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0035.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0036.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0037.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0038.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0039.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0040.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0041.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0042.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0043.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0044.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0045.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0046.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0047.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0048.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0049.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0050.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0051.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0052.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0053.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0054.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0055.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0056.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0057.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0058.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0059.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0060.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0061.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0062.png", - "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0063.png", - "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0064.png", - "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0065.png", - "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0066.png", - "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0067.png", - "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0068.png", - "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0069.png", - "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0070.png", - "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0071.png", - "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0072.png", - "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0073.png", - "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0074.png", - "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0075.png", - "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0076.png", - "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0077.png", - "frame": { "x": 303, "y": 140, "w": 102, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 11, "y": 5, "w": 102, "h": 70 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0078.png", - "frame": { "x": 523, "y": 348, "w": 102, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 13, "y": 11, "w": 102, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0079.png", - "frame": { "x": 318, "y": 290, "w": 103, "h": 64 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 15, "y": 7, "w": 103, "h": 64 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0080.png", - "frame": { "x": 105, "y": 1, "w": 102, "h": 75 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 11, "y": 0, "w": 102, "h": 75 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0081.png", - "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0082.png", - "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0083.png", - "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0084.png", - "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0085.png", - "frame": { "x": 508, "y": 152, "w": 106, "h": 67 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 15, "w": 106, "h": 67 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0086.png", - "frame": { "x": 414, "y": 74, "w": 103, "h": 71 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 8, "w": 103, "h": 71 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0087.png", - "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0088.png", - "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0089.png", - "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0090.png", - "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0091.png", - "frame": { "x": 309, "y": 214, "w": 107, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 14, "w": 107, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0092.png", - "frame": { "x": 306, "y": 1, "w": 106, "h": 70 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 4, "y": 9, "w": 106, "h": 70 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0093.png", - "frame": { "x": 1, "y": 218, "w": 107, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 5, "y": 14, "w": 107, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0094.png", - "frame": { "x": 213, "y": 279, "w": 105, "h": 65 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 14, "w": 105, "h": 65 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0095.png", - "frame": { "x": 103, "y": 341, "w": 104, "h": 63 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 15, "w": 104, "h": 63 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0096.png", - "frame": { "x": 516, "y": 1, "w": 101, "h": 73 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 6, "y": 5, "w": 101, "h": 73 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0097.png", - "frame": { "x": 100, "y": 149, "w": 103, "h": 69 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0098.png", - "frame": { "x": 1, "y": 349, "w": 102, "h": 62 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 8, "y": 16, "w": 102, "h": 62 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - }, - { - "filename": "0099.png", - "frame": { "x": 103, "y": 404, "w": 100, "h": 61 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 9, "y": 16, "w": 100, "h": 61 }, - "sourceSize": { "w": 118, "h": 90 }, - "duration": 100 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.12-x64", - "image": "693.png", - "format": "I8", - "size": { "w": 626, "h": 466 }, - "scale": "1" - } -} diff --git a/public/images/pokemon/exp/shiny/693.png b/public/images/pokemon/exp/shiny/693.png deleted file mode 100644 index 60f40ad0c40..00000000000 Binary files a/public/images/pokemon/exp/shiny/693.png and /dev/null differ diff --git a/public/images/pokemon/exp/shiny/696.png b/public/images/pokemon/exp/shiny/696.png index 86ecac0d371..3c59fa00b1f 100644 Binary files a/public/images/pokemon/exp/shiny/696.png and b/public/images/pokemon/exp/shiny/696.png differ diff --git a/public/images/pokemon/exp/shiny/697.png b/public/images/pokemon/exp/shiny/697.png index 7f4a0c09327..b6c1339647a 100644 Binary files a/public/images/pokemon/exp/shiny/697.png and b/public/images/pokemon/exp/shiny/697.png differ diff --git a/public/images/pokemon/exp/shiny/699.png b/public/images/pokemon/exp/shiny/699.png index 7ec9dbd7252..4e66ba7cb98 100644 Binary files a/public/images/pokemon/exp/shiny/699.png and b/public/images/pokemon/exp/shiny/699.png differ diff --git a/public/images/pokemon/exp/shiny/700.png b/public/images/pokemon/exp/shiny/700.png index f7addc720bf..5d8c2f40ce5 100644 Binary files a/public/images/pokemon/exp/shiny/700.png and b/public/images/pokemon/exp/shiny/700.png differ diff --git a/public/images/pokemon/exp/shiny/702.png b/public/images/pokemon/exp/shiny/702.png index 2f7b735a1dc..3813f32deae 100644 Binary files a/public/images/pokemon/exp/shiny/702.png and b/public/images/pokemon/exp/shiny/702.png differ diff --git a/public/images/pokemon/exp/shiny/704.png b/public/images/pokemon/exp/shiny/704.png index d630d161de1..851525cd767 100644 Binary files a/public/images/pokemon/exp/shiny/704.png and b/public/images/pokemon/exp/shiny/704.png differ diff --git a/public/images/pokemon/exp/shiny/705.png b/public/images/pokemon/exp/shiny/705.png index 7fed21b3583..7f8af69f598 100644 Binary files a/public/images/pokemon/exp/shiny/705.png and b/public/images/pokemon/exp/shiny/705.png differ diff --git a/public/images/pokemon/exp/shiny/712.png b/public/images/pokemon/exp/shiny/712.png index 2ba0434ad7a..fd440ab0243 100644 Binary files a/public/images/pokemon/exp/shiny/712.png and b/public/images/pokemon/exp/shiny/712.png differ diff --git a/public/images/pokemon/exp/shiny/713.png b/public/images/pokemon/exp/shiny/713.png index 72c06f1d750..d324723be20 100644 Binary files a/public/images/pokemon/exp/shiny/713.png and b/public/images/pokemon/exp/shiny/713.png differ diff --git a/public/images/pokemon/exp/shiny/716-active.png b/public/images/pokemon/exp/shiny/716-active.png index 126c1a78e79..a1077e80611 100644 Binary files a/public/images/pokemon/exp/shiny/716-active.png and b/public/images/pokemon/exp/shiny/716-active.png differ diff --git a/public/images/pokemon/exp/shiny/716-neutral.png b/public/images/pokemon/exp/shiny/716-neutral.png index 4806e57123b..82082038674 100644 Binary files a/public/images/pokemon/exp/shiny/716-neutral.png and b/public/images/pokemon/exp/shiny/716-neutral.png differ diff --git a/public/images/pokemon/exp/shiny/728.png b/public/images/pokemon/exp/shiny/728.png index d3bf6112f30..9474f5af0d5 100644 Binary files a/public/images/pokemon/exp/shiny/728.png and b/public/images/pokemon/exp/shiny/728.png differ diff --git a/public/images/pokemon/exp/shiny/729.png b/public/images/pokemon/exp/shiny/729.png index 66b8a99f34a..b073905d704 100644 Binary files a/public/images/pokemon/exp/shiny/729.png and b/public/images/pokemon/exp/shiny/729.png differ diff --git a/public/images/pokemon/exp/shiny/730.png b/public/images/pokemon/exp/shiny/730.png index d11ef725a95..49cded379ad 100644 Binary files a/public/images/pokemon/exp/shiny/730.png and b/public/images/pokemon/exp/shiny/730.png differ diff --git a/public/images/pokemon/exp/shiny/745.png b/public/images/pokemon/exp/shiny/745.png index c3256cf3f64..367809f4b41 100644 Binary files a/public/images/pokemon/exp/shiny/745.png and b/public/images/pokemon/exp/shiny/745.png differ diff --git a/public/images/pokemon/exp/shiny/746-school.png b/public/images/pokemon/exp/shiny/746-school.png index a665f1a61ac..66b3cd37900 100644 Binary files a/public/images/pokemon/exp/shiny/746-school.png and b/public/images/pokemon/exp/shiny/746-school.png differ diff --git a/public/images/pokemon/exp/shiny/746.png b/public/images/pokemon/exp/shiny/746.png index 1c897dcbc49..5749d55179d 100644 Binary files a/public/images/pokemon/exp/shiny/746.png and b/public/images/pokemon/exp/shiny/746.png differ diff --git a/public/images/pokemon/exp/shiny/749.png b/public/images/pokemon/exp/shiny/749.png index 81013d98e58..06afd328100 100644 Binary files a/public/images/pokemon/exp/shiny/749.png and b/public/images/pokemon/exp/shiny/749.png differ diff --git a/public/images/pokemon/exp/shiny/750.png b/public/images/pokemon/exp/shiny/750.png index b2b3076b55f..a10b5992017 100644 Binary files a/public/images/pokemon/exp/shiny/750.png and b/public/images/pokemon/exp/shiny/750.png differ diff --git a/public/images/pokemon/exp/shiny/752.png b/public/images/pokemon/exp/shiny/752.png index 22a70b76218..32cacaa40f9 100644 Binary files a/public/images/pokemon/exp/shiny/752.png and b/public/images/pokemon/exp/shiny/752.png differ diff --git a/public/images/pokemon/exp/shiny/753.json b/public/images/pokemon/exp/shiny/753.json deleted file mode 100644 index 5b20ef749a0..00000000000 --- a/public/images/pokemon/exp/shiny/753.json +++ /dev/null @@ -1,2582 +0,0 @@ -{ - "textures": [ - { - "image": "753.png", - "format": "RGBA8888", - "size": { - "w": 137, - "h": 137 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0068.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0069.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0070.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0111.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0112.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0120.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0121.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0122.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 30, - "h": 47 - }, - "frame": { - "x": 0, - "y": 0, - "w": 30, - "h": 47 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0113.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0114.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 28, - "h": 47 - }, - "frame": { - "x": 30, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0118.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 4, - "w": 28, - "h": 47 - }, - "frame": { - "x": 58, - "y": 0, - "w": 28, - "h": 47 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0071.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0072.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 0, - "w": 29, - "h": 46 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0062.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 29, - "h": 46 - }, - "frame": { - "x": 86, - "y": 46, - "w": 29, - "h": 46 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 47, - "w": 30, - "h": 45 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0116.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 27, - "h": 46 - }, - "frame": { - "x": 30, - "y": 47, - "w": 27, - "h": 46 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 92, - "w": 30, - "h": 45 - } - }, - { - "filename": "0119.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 30, - "h": 45 - }, - "frame": { - "x": 0, - "y": 92, - "w": 30, - "h": 45 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 29, - "h": 44 - }, - "frame": { - "x": 57, - "y": 47, - "w": 29, - "h": 44 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0077.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 57, - "y": 91, - "w": 28, - "h": 44 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 30, - "h": 52 - }, - "spriteSourceSize": { - "x": 2, - "y": 8, - "w": 28, - "h": 44 - }, - "frame": { - "x": 85, - "y": 92, - "w": 28, - "h": 44 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:0a066207f4eaa63438f1b44ba24dbced:1c3824600c00c692fd9dab4dbe03a2ed:16c1874bc814253ca78e52a99a340ff7$" - } -} diff --git a/public/images/pokemon/exp/shiny/753.png b/public/images/pokemon/exp/shiny/753.png deleted file mode 100644 index 12f0f7a090f..00000000000 Binary files a/public/images/pokemon/exp/shiny/753.png and /dev/null differ diff --git a/public/images/pokemon/exp/shiny/754.json b/public/images/pokemon/exp/shiny/754.json deleted file mode 100644 index 18bb597aa75..00000000000 --- a/public/images/pokemon/exp/shiny/754.json +++ /dev/null @@ -1,1133 +0,0 @@ -{ - "textures": [ - { - "image": "754.png", - "format": "RGBA8888", - "size": { - "w": 234, - "h": 234 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:05bdd50d4b0041ca84c3293ee7fdf36e:adfe2b6fb11cad37f71416b628cb08c7:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} diff --git a/public/images/pokemon/exp/shiny/754.png b/public/images/pokemon/exp/shiny/754.png deleted file mode 100644 index b1d4806163a..00000000000 Binary files a/public/images/pokemon/exp/shiny/754.png and /dev/null differ diff --git a/public/images/pokemon/exp/shiny/771.png b/public/images/pokemon/exp/shiny/771.png index b9e8e315b77..9f81aa28cb1 100644 Binary files a/public/images/pokemon/exp/shiny/771.png and b/public/images/pokemon/exp/shiny/771.png differ diff --git a/public/images/pokemon/exp/shiny/772.png b/public/images/pokemon/exp/shiny/772.png index 16bc67faf12..c8be346893a 100644 Binary files a/public/images/pokemon/exp/shiny/772.png and b/public/images/pokemon/exp/shiny/772.png differ diff --git a/public/images/pokemon/exp/shiny/773-bug.png b/public/images/pokemon/exp/shiny/773-bug.png index eed158c66dd..b61b4a96a8c 100644 Binary files a/public/images/pokemon/exp/shiny/773-bug.png and b/public/images/pokemon/exp/shiny/773-bug.png differ diff --git a/public/images/pokemon/exp/shiny/773-dark.png b/public/images/pokemon/exp/shiny/773-dark.png index a83de242ef3..2f58fb1d6fd 100644 Binary files a/public/images/pokemon/exp/shiny/773-dark.png and b/public/images/pokemon/exp/shiny/773-dark.png differ diff --git a/public/images/pokemon/exp/shiny/773-dragon.png b/public/images/pokemon/exp/shiny/773-dragon.png index 4fc9b8fd50f..cf3bfd8fff9 100644 Binary files a/public/images/pokemon/exp/shiny/773-dragon.png and b/public/images/pokemon/exp/shiny/773-dragon.png differ diff --git a/public/images/pokemon/exp/shiny/773-electric.png b/public/images/pokemon/exp/shiny/773-electric.png index 6be46f8f66b..1f95771cae4 100644 Binary files a/public/images/pokemon/exp/shiny/773-electric.png and b/public/images/pokemon/exp/shiny/773-electric.png differ diff --git a/public/images/pokemon/exp/shiny/773-fairy.png b/public/images/pokemon/exp/shiny/773-fairy.png index 16a0af45fcd..73f78bcb7e9 100644 Binary files a/public/images/pokemon/exp/shiny/773-fairy.png and b/public/images/pokemon/exp/shiny/773-fairy.png differ diff --git a/public/images/pokemon/exp/shiny/773-fighting.png b/public/images/pokemon/exp/shiny/773-fighting.png index ad2c784db03..f7030a20791 100644 Binary files a/public/images/pokemon/exp/shiny/773-fighting.png and b/public/images/pokemon/exp/shiny/773-fighting.png differ diff --git a/public/images/pokemon/exp/shiny/773-fire.png b/public/images/pokemon/exp/shiny/773-fire.png index 144b6140412..a76f0b9bf41 100644 Binary files a/public/images/pokemon/exp/shiny/773-fire.png and b/public/images/pokemon/exp/shiny/773-fire.png differ diff --git a/public/images/pokemon/exp/shiny/773-flying.png b/public/images/pokemon/exp/shiny/773-flying.png index 69844543843..5d01069548b 100644 Binary files a/public/images/pokemon/exp/shiny/773-flying.png and b/public/images/pokemon/exp/shiny/773-flying.png differ diff --git a/public/images/pokemon/exp/shiny/773-ghost.png b/public/images/pokemon/exp/shiny/773-ghost.png index 89405e0a7ca..b167bff239b 100644 Binary files a/public/images/pokemon/exp/shiny/773-ghost.png and b/public/images/pokemon/exp/shiny/773-ghost.png differ diff --git a/public/images/pokemon/exp/shiny/773-grass.png b/public/images/pokemon/exp/shiny/773-grass.png index dd3cb842ca0..c4516a3c5b1 100644 Binary files a/public/images/pokemon/exp/shiny/773-grass.png and b/public/images/pokemon/exp/shiny/773-grass.png differ diff --git a/public/images/pokemon/exp/shiny/773-ground.png b/public/images/pokemon/exp/shiny/773-ground.png index 3ce87abe562..f26eb8652fe 100644 Binary files a/public/images/pokemon/exp/shiny/773-ground.png and b/public/images/pokemon/exp/shiny/773-ground.png differ diff --git a/public/images/pokemon/exp/shiny/773-ice.png b/public/images/pokemon/exp/shiny/773-ice.png index 8e255027270..2abce5aa674 100644 Binary files a/public/images/pokemon/exp/shiny/773-ice.png and b/public/images/pokemon/exp/shiny/773-ice.png differ diff --git a/public/images/pokemon/exp/shiny/773-poison.png b/public/images/pokemon/exp/shiny/773-poison.png index 0ff4ee2ae27..8b49d3b1876 100644 Binary files a/public/images/pokemon/exp/shiny/773-poison.png and b/public/images/pokemon/exp/shiny/773-poison.png differ diff --git a/public/images/pokemon/exp/shiny/773-psychic.png b/public/images/pokemon/exp/shiny/773-psychic.png index 301ba2aa960..1c7a2501464 100644 Binary files a/public/images/pokemon/exp/shiny/773-psychic.png and b/public/images/pokemon/exp/shiny/773-psychic.png differ diff --git a/public/images/pokemon/exp/shiny/773-rock.png b/public/images/pokemon/exp/shiny/773-rock.png index b0112ed5249..57caa7ca92f 100644 Binary files a/public/images/pokemon/exp/shiny/773-rock.png and b/public/images/pokemon/exp/shiny/773-rock.png differ diff --git a/public/images/pokemon/exp/shiny/773-steel.png b/public/images/pokemon/exp/shiny/773-steel.png index d6cccc50220..5d9711947cd 100644 Binary files a/public/images/pokemon/exp/shiny/773-steel.png and b/public/images/pokemon/exp/shiny/773-steel.png differ diff --git a/public/images/pokemon/exp/shiny/773-water.png b/public/images/pokemon/exp/shiny/773-water.png index 93b34532111..057756c6950 100644 Binary files a/public/images/pokemon/exp/shiny/773-water.png and b/public/images/pokemon/exp/shiny/773-water.png differ diff --git a/public/images/pokemon/exp/shiny/773.png b/public/images/pokemon/exp/shiny/773.png index 9b0c6b98b9d..184d4860ac6 100644 Binary files a/public/images/pokemon/exp/shiny/773.png and b/public/images/pokemon/exp/shiny/773.png differ diff --git a/public/images/pokemon/exp/shiny/774-blue.png b/public/images/pokemon/exp/shiny/774-blue.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-blue.png and b/public/images/pokemon/exp/shiny/774-blue.png differ diff --git a/public/images/pokemon/exp/shiny/774-green.png b/public/images/pokemon/exp/shiny/774-green.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-green.png and b/public/images/pokemon/exp/shiny/774-green.png differ diff --git a/public/images/pokemon/exp/shiny/774-indigo.png b/public/images/pokemon/exp/shiny/774-indigo.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-indigo.png and b/public/images/pokemon/exp/shiny/774-indigo.png differ diff --git a/public/images/pokemon/exp/shiny/774-orange.png b/public/images/pokemon/exp/shiny/774-orange.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-orange.png and b/public/images/pokemon/exp/shiny/774-orange.png differ diff --git a/public/images/pokemon/exp/shiny/774-red.png b/public/images/pokemon/exp/shiny/774-red.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-red.png and b/public/images/pokemon/exp/shiny/774-red.png differ diff --git a/public/images/pokemon/exp/shiny/774-violet.png b/public/images/pokemon/exp/shiny/774-violet.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-violet.png and b/public/images/pokemon/exp/shiny/774-violet.png differ diff --git a/public/images/pokemon/exp/shiny/774-yellow.png b/public/images/pokemon/exp/shiny/774-yellow.png index 21dd00d307b..1edf188819c 100644 Binary files a/public/images/pokemon/exp/shiny/774-yellow.png and b/public/images/pokemon/exp/shiny/774-yellow.png differ diff --git a/public/images/pokemon/exp/shiny/774.png b/public/images/pokemon/exp/shiny/774.png index f9228f2ee30..bb6030ee4f5 100644 Binary files a/public/images/pokemon/exp/shiny/774.png and b/public/images/pokemon/exp/shiny/774.png differ diff --git a/public/images/pokemon/exp/shiny/776.png b/public/images/pokemon/exp/shiny/776.png index a0a363aff3e..de1b5de591e 100644 Binary files a/public/images/pokemon/exp/shiny/776.png and b/public/images/pokemon/exp/shiny/776.png differ diff --git a/public/images/pokemon/exp/shiny/777.png b/public/images/pokemon/exp/shiny/777.png index 504a2d23abc..264400c8797 100644 Binary files a/public/images/pokemon/exp/shiny/777.png and b/public/images/pokemon/exp/shiny/777.png differ diff --git a/public/images/pokemon/exp/shiny/778-disguised.png b/public/images/pokemon/exp/shiny/778-disguised.png index 07f0b9183c9..71fa86a772f 100644 Binary files a/public/images/pokemon/exp/shiny/778-disguised.png and b/public/images/pokemon/exp/shiny/778-disguised.png differ diff --git a/public/images/pokemon/exp/shiny/780.png b/public/images/pokemon/exp/shiny/780.png index 4487e9d629c..64f43561768 100644 Binary files a/public/images/pokemon/exp/shiny/780.png and b/public/images/pokemon/exp/shiny/780.png differ diff --git a/public/images/pokemon/exp/shiny/793.png b/public/images/pokemon/exp/shiny/793.png index 72a1e65037a..db936adb417 100644 Binary files a/public/images/pokemon/exp/shiny/793.png and b/public/images/pokemon/exp/shiny/793.png differ diff --git a/public/images/pokemon/exp/shiny/798.png b/public/images/pokemon/exp/shiny/798.png index d67c0a50fdc..56d5e6ffe8c 100644 Binary files a/public/images/pokemon/exp/shiny/798.png and b/public/images/pokemon/exp/shiny/798.png differ diff --git a/public/images/pokemon/exp/shiny/815-gigantamax.png b/public/images/pokemon/exp/shiny/815-gigantamax.png index a299119e06f..1671bb51014 100644 Binary files a/public/images/pokemon/exp/shiny/815-gigantamax.png and b/public/images/pokemon/exp/shiny/815-gigantamax.png differ diff --git a/public/images/pokemon/exp/shiny/818.png b/public/images/pokemon/exp/shiny/818.png index 0105e7e38ab..330d06af3a9 100644 Binary files a/public/images/pokemon/exp/shiny/818.png and b/public/images/pokemon/exp/shiny/818.png differ diff --git a/public/images/pokemon/exp/shiny/821.png b/public/images/pokemon/exp/shiny/821.png index 6f6cf7f2991..2b512d9d455 100644 Binary files a/public/images/pokemon/exp/shiny/821.png and b/public/images/pokemon/exp/shiny/821.png differ diff --git a/public/images/pokemon/exp/shiny/823.png b/public/images/pokemon/exp/shiny/823.png index 9df29297e3a..cf2e8aba483 100644 Binary files a/public/images/pokemon/exp/shiny/823.png and b/public/images/pokemon/exp/shiny/823.png differ diff --git a/public/images/pokemon/exp/shiny/839-gigantamax.png b/public/images/pokemon/exp/shiny/839-gigantamax.png index f52de9357b1..13bed69a915 100644 Binary files a/public/images/pokemon/exp/shiny/839-gigantamax.png and b/public/images/pokemon/exp/shiny/839-gigantamax.png differ diff --git a/public/images/pokemon/exp/shiny/845-gulping.png b/public/images/pokemon/exp/shiny/845-gulping.png index 8f6f82bf863..dce060d6afe 100644 Binary files a/public/images/pokemon/exp/shiny/845-gulping.png and b/public/images/pokemon/exp/shiny/845-gulping.png differ diff --git a/public/images/pokemon/exp/shiny/855.png b/public/images/pokemon/exp/shiny/855.png index 4aa625004c0..326404c0423 100644 Binary files a/public/images/pokemon/exp/shiny/855.png and b/public/images/pokemon/exp/shiny/855.png differ diff --git a/public/images/pokemon/exp/shiny/857.png b/public/images/pokemon/exp/shiny/857.png index 331e54f93e6..ad2f4e8e752 100644 Binary files a/public/images/pokemon/exp/shiny/857.png and b/public/images/pokemon/exp/shiny/857.png differ diff --git a/public/images/pokemon/exp/shiny/864.png b/public/images/pokemon/exp/shiny/864.png index 66d648edf79..dbcf087d3d5 100644 Binary files a/public/images/pokemon/exp/shiny/864.png and b/public/images/pokemon/exp/shiny/864.png differ diff --git a/public/images/pokemon/exp/shiny/898-ice.png b/public/images/pokemon/exp/shiny/898-ice.png index 4fc9cb48083..312b9f519cc 100644 Binary files a/public/images/pokemon/exp/shiny/898-ice.png and b/public/images/pokemon/exp/shiny/898-ice.png differ diff --git a/public/images/pokemon/exp/shiny/898-shadow.png b/public/images/pokemon/exp/shiny/898-shadow.png index 8587106d483..fa822c35adf 100644 Binary files a/public/images/pokemon/exp/shiny/898-shadow.png and b/public/images/pokemon/exp/shiny/898-shadow.png differ diff --git a/public/images/pokemon/exp/shiny/912.png b/public/images/pokemon/exp/shiny/912.png index 9306f0d8cef..b18a26a17eb 100644 Binary files a/public/images/pokemon/exp/shiny/912.png and b/public/images/pokemon/exp/shiny/912.png differ diff --git a/public/images/pokemon/exp/shiny/913.png b/public/images/pokemon/exp/shiny/913.png index 9179cfe07f7..bc0d847f0d3 100644 Binary files a/public/images/pokemon/exp/shiny/913.png and b/public/images/pokemon/exp/shiny/913.png differ diff --git a/public/images/pokemon/exp/shiny/914.png b/public/images/pokemon/exp/shiny/914.png index 8697f0ea3fd..6dc535ba9f7 100644 Binary files a/public/images/pokemon/exp/shiny/914.png and b/public/images/pokemon/exp/shiny/914.png differ diff --git a/public/images/pokemon/exp/shiny/928.png b/public/images/pokemon/exp/shiny/928.png index 9e5c3ccb00f..24916a101c7 100644 Binary files a/public/images/pokemon/exp/shiny/928.png and b/public/images/pokemon/exp/shiny/928.png differ diff --git a/public/images/pokemon/exp/shiny/932.png b/public/images/pokemon/exp/shiny/932.png index 8ad0f2e12a3..1ff7d56d9cc 100644 Binary files a/public/images/pokemon/exp/shiny/932.png and b/public/images/pokemon/exp/shiny/932.png differ diff --git a/public/images/pokemon/exp/shiny/940.png b/public/images/pokemon/exp/shiny/940.png index 7eab3973ebf..1ad8806914c 100644 Binary files a/public/images/pokemon/exp/shiny/940.png and b/public/images/pokemon/exp/shiny/940.png differ diff --git a/public/images/pokemon/exp/shiny/944.png b/public/images/pokemon/exp/shiny/944.png index ee13a988a2b..bbc1817ac94 100644 Binary files a/public/images/pokemon/exp/shiny/944.png and b/public/images/pokemon/exp/shiny/944.png differ diff --git a/public/images/pokemon/exp/shiny/945.png b/public/images/pokemon/exp/shiny/945.png index 3dba64c6ee8..e42423998ef 100644 Binary files a/public/images/pokemon/exp/shiny/945.png and b/public/images/pokemon/exp/shiny/945.png differ diff --git a/public/images/pokemon/exp/shiny/954.png b/public/images/pokemon/exp/shiny/954.png index 87f5093f221..d4928e1042a 100644 Binary files a/public/images/pokemon/exp/shiny/954.png and b/public/images/pokemon/exp/shiny/954.png differ diff --git a/public/images/pokemon/exp/shiny/957.png b/public/images/pokemon/exp/shiny/957.png index 195296b89d0..7b999d7b4ba 100644 Binary files a/public/images/pokemon/exp/shiny/957.png and b/public/images/pokemon/exp/shiny/957.png differ diff --git a/public/images/pokemon/exp/shiny/958.png b/public/images/pokemon/exp/shiny/958.png index 50de7da7fda..97ce0239899 100644 Binary files a/public/images/pokemon/exp/shiny/958.png and b/public/images/pokemon/exp/shiny/958.png differ diff --git a/public/images/pokemon/exp/shiny/959.png b/public/images/pokemon/exp/shiny/959.png index 22624d813c0..a6718adb434 100644 Binary files a/public/images/pokemon/exp/shiny/959.png and b/public/images/pokemon/exp/shiny/959.png differ diff --git a/public/images/pokemon/exp/shiny/970.png b/public/images/pokemon/exp/shiny/970.png index d455d836e51..5ce80ccba19 100644 Binary files a/public/images/pokemon/exp/shiny/970.png and b/public/images/pokemon/exp/shiny/970.png differ diff --git a/public/images/pokemon/exp/shiny/974.png b/public/images/pokemon/exp/shiny/974.png index 889074dd63e..dfaf9d0e7fd 100644 Binary files a/public/images/pokemon/exp/shiny/974.png and b/public/images/pokemon/exp/shiny/974.png differ diff --git a/public/images/pokemon/exp/shiny/975.png b/public/images/pokemon/exp/shiny/975.png index e59189a1252..1c1a5cef446 100644 Binary files a/public/images/pokemon/exp/shiny/975.png and b/public/images/pokemon/exp/shiny/975.png differ diff --git a/public/images/pokemon/exp/shiny/981.png b/public/images/pokemon/exp/shiny/981.png index 5cced7d6d3f..3e03fa14b8e 100644 Binary files a/public/images/pokemon/exp/shiny/981.png and b/public/images/pokemon/exp/shiny/981.png differ diff --git a/public/images/pokemon/exp/shiny/983.png b/public/images/pokemon/exp/shiny/983.png index f7505c9b1a6..398aa22327b 100644 Binary files a/public/images/pokemon/exp/shiny/983.png and b/public/images/pokemon/exp/shiny/983.png differ diff --git a/public/images/pokemon/exp/shiny/997.png b/public/images/pokemon/exp/shiny/997.png index c3b0e4b8f0c..45fa92e6d42 100644 Binary files a/public/images/pokemon/exp/shiny/997.png and b/public/images/pokemon/exp/shiny/997.png differ diff --git a/public/images/pokemon/exp/shiny/female/668.png b/public/images/pokemon/exp/shiny/female/668.png index ad84dc50460..cef3d3247e8 100644 Binary files a/public/images/pokemon/exp/shiny/female/668.png and b/public/images/pokemon/exp/shiny/female/668.png differ diff --git a/public/images/pokemon/female/154.png b/public/images/pokemon/female/154.png index f671d6b75aa..9a3eaeef82f 100644 Binary files a/public/images/pokemon/female/154.png and b/public/images/pokemon/female/154.png differ diff --git a/public/images/pokemon/female/178.png b/public/images/pokemon/female/178.png index 96323eeea94..ddfee713020 100644 Binary files a/public/images/pokemon/female/178.png and b/public/images/pokemon/female/178.png differ diff --git a/public/images/pokemon/female/190.png b/public/images/pokemon/female/190.png index a2d5c0b7b7d..ec5e4e29e67 100644 Binary files a/public/images/pokemon/female/190.png and b/public/images/pokemon/female/190.png differ diff --git a/public/images/pokemon/female/194.png b/public/images/pokemon/female/194.png index c0066f051ee..41f03012826 100644 Binary files a/public/images/pokemon/female/194.png and b/public/images/pokemon/female/194.png differ diff --git a/public/images/pokemon/female/198.png b/public/images/pokemon/female/198.png index 9cead4fcbe0..14d63652643 100644 Binary files a/public/images/pokemon/female/198.png and b/public/images/pokemon/female/198.png differ diff --git a/public/images/pokemon/female/207.png b/public/images/pokemon/female/207.png index 48662a1a516..9734be56418 100644 Binary files a/public/images/pokemon/female/207.png and b/public/images/pokemon/female/207.png differ diff --git a/public/images/pokemon/female/229.png b/public/images/pokemon/female/229.png index 836ceab6bb5..dd06ab97228 100644 Binary files a/public/images/pokemon/female/229.png and b/public/images/pokemon/female/229.png differ diff --git a/public/images/pokemon/female/232.png b/public/images/pokemon/female/232.png index 9477fd192f7..fc3ba804428 100644 Binary files a/public/images/pokemon/female/232.png and b/public/images/pokemon/female/232.png differ diff --git a/public/images/pokemon/female/25-beauty-cosplay.png b/public/images/pokemon/female/25-beauty-cosplay.png index 26887468559..8e6aaa667f1 100644 Binary files a/public/images/pokemon/female/25-beauty-cosplay.png and b/public/images/pokemon/female/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/female/25-cool-cosplay.png b/public/images/pokemon/female/25-cool-cosplay.png index 9f76c7826f1..1b6767d3095 100644 Binary files a/public/images/pokemon/female/25-cool-cosplay.png and b/public/images/pokemon/female/25-cool-cosplay.png differ diff --git a/public/images/pokemon/female/25-cosplay.png b/public/images/pokemon/female/25-cosplay.png index 145d32e5130..98b616ab366 100644 Binary files a/public/images/pokemon/female/25-cosplay.png and b/public/images/pokemon/female/25-cosplay.png differ diff --git a/public/images/pokemon/female/25-cute-cosplay.png b/public/images/pokemon/female/25-cute-cosplay.png index 675a141b0fd..34ed9f12282 100644 Binary files a/public/images/pokemon/female/25-cute-cosplay.png and b/public/images/pokemon/female/25-cute-cosplay.png differ diff --git a/public/images/pokemon/female/25-partner.png b/public/images/pokemon/female/25-partner.png index 8ce8d01c937..4e423f4810e 100644 Binary files a/public/images/pokemon/female/25-partner.png and b/public/images/pokemon/female/25-partner.png differ diff --git a/public/images/pokemon/female/25-smart-cosplay.png b/public/images/pokemon/female/25-smart-cosplay.png index 8306fb17dea..fe7f5086e65 100644 Binary files a/public/images/pokemon/female/25-smart-cosplay.png and b/public/images/pokemon/female/25-smart-cosplay.png differ diff --git a/public/images/pokemon/female/25-tough-cosplay.png b/public/images/pokemon/female/25-tough-cosplay.png index a12d4a40a88..60c8d66eed4 100644 Binary files a/public/images/pokemon/female/25-tough-cosplay.png and b/public/images/pokemon/female/25-tough-cosplay.png differ diff --git a/public/images/pokemon/female/25.png b/public/images/pokemon/female/25.png index 8ce8d01c937..4e423f4810e 100644 Binary files a/public/images/pokemon/female/25.png and b/public/images/pokemon/female/25.png differ diff --git a/public/images/pokemon/female/256.png b/public/images/pokemon/female/256.png index c8b0b2cbd4c..8d75a1aa4c1 100644 Binary files a/public/images/pokemon/female/256.png and b/public/images/pokemon/female/256.png differ diff --git a/public/images/pokemon/female/257.png b/public/images/pokemon/female/257.png index ed3e8d2914e..adba2fc9ba4 100644 Binary files a/public/images/pokemon/female/257.png and b/public/images/pokemon/female/257.png differ diff --git a/public/images/pokemon/female/26.png b/public/images/pokemon/female/26.png index 242785a81cc..40237ada722 100644 Binary files a/public/images/pokemon/female/26.png and b/public/images/pokemon/female/26.png differ diff --git a/public/images/pokemon/female/275.png b/public/images/pokemon/female/275.png index c3c358716b2..7312774f3f6 100644 Binary files a/public/images/pokemon/female/275.png and b/public/images/pokemon/female/275.png differ diff --git a/public/images/pokemon/female/3.png b/public/images/pokemon/female/3.png index e21b53dfd57..c40d8c9e598 100644 Binary files a/public/images/pokemon/female/3.png and b/public/images/pokemon/female/3.png differ diff --git a/public/images/pokemon/female/332.png b/public/images/pokemon/female/332.png index c1f7c8ec3f0..bf917d80867 100644 Binary files a/public/images/pokemon/female/332.png and b/public/images/pokemon/female/332.png differ diff --git a/public/images/pokemon/female/396.png b/public/images/pokemon/female/396.png index ee7debc27a9..2fafa301cc4 100644 Binary files a/public/images/pokemon/female/396.png and b/public/images/pokemon/female/396.png differ diff --git a/public/images/pokemon/female/397.png b/public/images/pokemon/female/397.png index 109a12dad7c..8a1c85142da 100644 Binary files a/public/images/pokemon/female/397.png and b/public/images/pokemon/female/397.png differ diff --git a/public/images/pokemon/female/398.png b/public/images/pokemon/female/398.png index d0af82f4f3b..521e1f192e5 100644 Binary files a/public/images/pokemon/female/398.png and b/public/images/pokemon/female/398.png differ diff --git a/public/images/pokemon/female/401.png b/public/images/pokemon/female/401.png index 4cd3fc77097..3f0754442f5 100644 Binary files a/public/images/pokemon/female/401.png and b/public/images/pokemon/female/401.png differ diff --git a/public/images/pokemon/female/402.png b/public/images/pokemon/female/402.png index 1b92a7a9a95..c20fa0a96e9 100644 Binary files a/public/images/pokemon/female/402.png and b/public/images/pokemon/female/402.png differ diff --git a/public/images/pokemon/female/404.png b/public/images/pokemon/female/404.png index d05821148d4..6fa2fac047a 100644 Binary files a/public/images/pokemon/female/404.png and b/public/images/pokemon/female/404.png differ diff --git a/public/images/pokemon/female/417.png b/public/images/pokemon/female/417.png index 5b12e357477..e799f4c51ef 100644 Binary files a/public/images/pokemon/female/417.png and b/public/images/pokemon/female/417.png differ diff --git a/public/images/pokemon/female/418.png b/public/images/pokemon/female/418.png index fba2402c2b3..71e44be3fe5 100644 Binary files a/public/images/pokemon/female/418.png and b/public/images/pokemon/female/418.png differ diff --git a/public/images/pokemon/female/419.png b/public/images/pokemon/female/419.png index 5fbe90ff3bd..ce679569341 100644 Binary files a/public/images/pokemon/female/419.png and b/public/images/pokemon/female/419.png differ diff --git a/public/images/pokemon/female/424.png b/public/images/pokemon/female/424.png index 4d86b5be16e..999a0f5761e 100644 Binary files a/public/images/pokemon/female/424.png and b/public/images/pokemon/female/424.png differ diff --git a/public/images/pokemon/female/45.png b/public/images/pokemon/female/45.png index 3c5d4d91aeb..59bc3bcb878 100644 Binary files a/public/images/pokemon/female/45.png and b/public/images/pokemon/female/45.png differ diff --git a/public/images/pokemon/female/454.png b/public/images/pokemon/female/454.png index 62b4c58558d..b70d957356b 100644 Binary files a/public/images/pokemon/female/454.png and b/public/images/pokemon/female/454.png differ diff --git a/public/images/pokemon/female/456.png b/public/images/pokemon/female/456.png index ca0d454c98f..fb9d1fe3a02 100644 Binary files a/public/images/pokemon/female/456.png and b/public/images/pokemon/female/456.png differ diff --git a/public/images/pokemon/female/457.png b/public/images/pokemon/female/457.png index 605bb23a892..a726043653e 100644 Binary files a/public/images/pokemon/female/457.png and b/public/images/pokemon/female/457.png differ diff --git a/public/images/pokemon/female/6215.png b/public/images/pokemon/female/6215.png index c98bc4847b7..4cfd0536a8a 100644 Binary files a/public/images/pokemon/female/6215.png and b/public/images/pokemon/female/6215.png differ diff --git a/public/images/pokemon/female/65.png b/public/images/pokemon/female/65.png index 2da30ef57e7..31c336d92aa 100644 Binary files a/public/images/pokemon/female/65.png and b/public/images/pokemon/female/65.png differ diff --git a/public/images/pokemon/icons/1/1.png b/public/images/pokemon/icons/1/1.png index 11ba76a964a..da746d8c221 100644 Binary files a/public/images/pokemon/icons/1/1.png and b/public/images/pokemon/icons/1/1.png differ diff --git a/public/images/pokemon/icons/1/10.png b/public/images/pokemon/icons/1/10.png index 8a341e1921d..eae5feb76d2 100644 Binary files a/public/images/pokemon/icons/1/10.png and b/public/images/pokemon/icons/1/10.png differ diff --git a/public/images/pokemon/icons/1/100.png b/public/images/pokemon/icons/1/100.png index 484cfd01d28..634f19ad3d0 100644 Binary files a/public/images/pokemon/icons/1/100.png and b/public/images/pokemon/icons/1/100.png differ diff --git a/public/images/pokemon/icons/1/100s.png b/public/images/pokemon/icons/1/100s.png index 9e4522f9486..fa657602139 100644 Binary files a/public/images/pokemon/icons/1/100s.png and b/public/images/pokemon/icons/1/100s.png differ diff --git a/public/images/pokemon/icons/1/101.png b/public/images/pokemon/icons/1/101.png index c2c7ea0edb1..f7f75dbcbed 100644 Binary files a/public/images/pokemon/icons/1/101.png and b/public/images/pokemon/icons/1/101.png differ diff --git a/public/images/pokemon/icons/1/101s.png b/public/images/pokemon/icons/1/101s.png index bdd2ce2b854..daa4dddd1cf 100644 Binary files a/public/images/pokemon/icons/1/101s.png and b/public/images/pokemon/icons/1/101s.png differ diff --git a/public/images/pokemon/icons/1/102.png b/public/images/pokemon/icons/1/102.png index bd087b79a6a..bfbc752d9c1 100644 Binary files a/public/images/pokemon/icons/1/102.png and b/public/images/pokemon/icons/1/102.png differ diff --git a/public/images/pokemon/icons/1/102s.png b/public/images/pokemon/icons/1/102s.png index 69b52456ba6..9a855ae8c0d 100644 Binary files a/public/images/pokemon/icons/1/102s.png and b/public/images/pokemon/icons/1/102s.png differ diff --git a/public/images/pokemon/icons/1/103.png b/public/images/pokemon/icons/1/103.png index f9dae809e24..98381c681bc 100644 Binary files a/public/images/pokemon/icons/1/103.png and b/public/images/pokemon/icons/1/103.png differ diff --git a/public/images/pokemon/icons/1/103s.png b/public/images/pokemon/icons/1/103s.png index 9058e272fce..d65057e0bef 100644 Binary files a/public/images/pokemon/icons/1/103s.png and b/public/images/pokemon/icons/1/103s.png differ diff --git a/public/images/pokemon/icons/1/104.png b/public/images/pokemon/icons/1/104.png index 5901df3bd38..654595ad7e7 100644 Binary files a/public/images/pokemon/icons/1/104.png and b/public/images/pokemon/icons/1/104.png differ diff --git a/public/images/pokemon/icons/1/104s.png b/public/images/pokemon/icons/1/104s.png index 7c694d4a517..ac6290386cc 100644 Binary files a/public/images/pokemon/icons/1/104s.png and b/public/images/pokemon/icons/1/104s.png differ diff --git a/public/images/pokemon/icons/1/105.png b/public/images/pokemon/icons/1/105.png index 892b9effabf..30ff4e45350 100644 Binary files a/public/images/pokemon/icons/1/105.png and b/public/images/pokemon/icons/1/105.png differ diff --git a/public/images/pokemon/icons/1/105s.png b/public/images/pokemon/icons/1/105s.png index adb90bb28ee..51a03856dde 100644 Binary files a/public/images/pokemon/icons/1/105s.png and b/public/images/pokemon/icons/1/105s.png differ diff --git a/public/images/pokemon/icons/1/106.png b/public/images/pokemon/icons/1/106.png index 4b8ccf44bd5..b2b0ceb6612 100644 Binary files a/public/images/pokemon/icons/1/106.png and b/public/images/pokemon/icons/1/106.png differ diff --git a/public/images/pokemon/icons/1/106s.png b/public/images/pokemon/icons/1/106s.png index ce44919affd..abe946d8586 100644 Binary files a/public/images/pokemon/icons/1/106s.png and b/public/images/pokemon/icons/1/106s.png differ diff --git a/public/images/pokemon/icons/1/107.png b/public/images/pokemon/icons/1/107.png index d29fff3ea12..c6b68f54a2a 100644 Binary files a/public/images/pokemon/icons/1/107.png and b/public/images/pokemon/icons/1/107.png differ diff --git a/public/images/pokemon/icons/1/107s.png b/public/images/pokemon/icons/1/107s.png index 5d600a5dd69..cd8b32b0376 100644 Binary files a/public/images/pokemon/icons/1/107s.png and b/public/images/pokemon/icons/1/107s.png differ diff --git a/public/images/pokemon/icons/1/108.png b/public/images/pokemon/icons/1/108.png index 7d5e96547d5..bfa769b0dc6 100644 Binary files a/public/images/pokemon/icons/1/108.png and b/public/images/pokemon/icons/1/108.png differ diff --git a/public/images/pokemon/icons/1/108s.png b/public/images/pokemon/icons/1/108s.png index 3bcc8d7b828..57a855ea729 100644 Binary files a/public/images/pokemon/icons/1/108s.png and b/public/images/pokemon/icons/1/108s.png differ diff --git a/public/images/pokemon/icons/1/109.png b/public/images/pokemon/icons/1/109.png index cea6210e108..4888490b827 100644 Binary files a/public/images/pokemon/icons/1/109.png and b/public/images/pokemon/icons/1/109.png differ diff --git a/public/images/pokemon/icons/1/109s.png b/public/images/pokemon/icons/1/109s.png index 264c414a9f7..81f9f57b067 100644 Binary files a/public/images/pokemon/icons/1/109s.png and b/public/images/pokemon/icons/1/109s.png differ diff --git a/public/images/pokemon/icons/1/10s.png b/public/images/pokemon/icons/1/10s.png index 529f9607120..357132aa628 100644 Binary files a/public/images/pokemon/icons/1/10s.png and b/public/images/pokemon/icons/1/10s.png differ diff --git a/public/images/pokemon/icons/1/11.png b/public/images/pokemon/icons/1/11.png index 412dac7bf15..a2ff31bc29f 100644 Binary files a/public/images/pokemon/icons/1/11.png and b/public/images/pokemon/icons/1/11.png differ diff --git a/public/images/pokemon/icons/1/110.png b/public/images/pokemon/icons/1/110.png index 258f56f7388..bd01b91a691 100644 Binary files a/public/images/pokemon/icons/1/110.png and b/public/images/pokemon/icons/1/110.png differ diff --git a/public/images/pokemon/icons/1/110s.png b/public/images/pokemon/icons/1/110s.png index fb6e3d36673..0ed712e0830 100644 Binary files a/public/images/pokemon/icons/1/110s.png and b/public/images/pokemon/icons/1/110s.png differ diff --git a/public/images/pokemon/icons/1/111.png b/public/images/pokemon/icons/1/111.png index 9e8e0eebae1..cd7ad5da76a 100644 Binary files a/public/images/pokemon/icons/1/111.png and b/public/images/pokemon/icons/1/111.png differ diff --git a/public/images/pokemon/icons/1/111s.png b/public/images/pokemon/icons/1/111s.png index 6a08e29e034..65ebacbb3f6 100644 Binary files a/public/images/pokemon/icons/1/111s.png and b/public/images/pokemon/icons/1/111s.png differ diff --git a/public/images/pokemon/icons/1/112.png b/public/images/pokemon/icons/1/112.png index 9835169401e..38d6a1f7eb5 100644 Binary files a/public/images/pokemon/icons/1/112.png and b/public/images/pokemon/icons/1/112.png differ diff --git a/public/images/pokemon/icons/1/112s.png b/public/images/pokemon/icons/1/112s.png index 02ec189978f..ba0589d6594 100644 Binary files a/public/images/pokemon/icons/1/112s.png and b/public/images/pokemon/icons/1/112s.png differ diff --git a/public/images/pokemon/icons/1/113.png b/public/images/pokemon/icons/1/113.png index 050f7c0f94f..1fb14f94cfc 100644 Binary files a/public/images/pokemon/icons/1/113.png and b/public/images/pokemon/icons/1/113.png differ diff --git a/public/images/pokemon/icons/1/113s.png b/public/images/pokemon/icons/1/113s.png index b17c3a3f158..84583b6f35a 100644 Binary files a/public/images/pokemon/icons/1/113s.png and b/public/images/pokemon/icons/1/113s.png differ diff --git a/public/images/pokemon/icons/1/114.png b/public/images/pokemon/icons/1/114.png index 9c7929177eb..3c9cb456518 100644 Binary files a/public/images/pokemon/icons/1/114.png and b/public/images/pokemon/icons/1/114.png differ diff --git a/public/images/pokemon/icons/1/114s.png b/public/images/pokemon/icons/1/114s.png index 76b9364243d..d8f0b7d2666 100644 Binary files a/public/images/pokemon/icons/1/114s.png and b/public/images/pokemon/icons/1/114s.png differ diff --git a/public/images/pokemon/icons/1/115-mega.png b/public/images/pokemon/icons/1/115-mega.png index ac2ba5c8773..7ed54c14982 100644 Binary files a/public/images/pokemon/icons/1/115-mega.png and b/public/images/pokemon/icons/1/115-mega.png differ diff --git a/public/images/pokemon/icons/1/115.png b/public/images/pokemon/icons/1/115.png index e7f3963ba2f..55de1706af6 100644 Binary files a/public/images/pokemon/icons/1/115.png and b/public/images/pokemon/icons/1/115.png differ diff --git a/public/images/pokemon/icons/1/115s-mega.png b/public/images/pokemon/icons/1/115s-mega.png index 18540d75977..a9feb94e01c 100644 Binary files a/public/images/pokemon/icons/1/115s-mega.png and b/public/images/pokemon/icons/1/115s-mega.png differ diff --git a/public/images/pokemon/icons/1/115s.png b/public/images/pokemon/icons/1/115s.png index 00ee9442e31..03fcb93e046 100644 Binary files a/public/images/pokemon/icons/1/115s.png and b/public/images/pokemon/icons/1/115s.png differ diff --git a/public/images/pokemon/icons/1/116.png b/public/images/pokemon/icons/1/116.png index c55526651c2..4e90b14495f 100644 Binary files a/public/images/pokemon/icons/1/116.png and b/public/images/pokemon/icons/1/116.png differ diff --git a/public/images/pokemon/icons/1/116s.png b/public/images/pokemon/icons/1/116s.png index 9f7ea460dda..1c0e2fa32b5 100644 Binary files a/public/images/pokemon/icons/1/116s.png and b/public/images/pokemon/icons/1/116s.png differ diff --git a/public/images/pokemon/icons/1/117.png b/public/images/pokemon/icons/1/117.png index 878af8a5428..b60edbd0649 100644 Binary files a/public/images/pokemon/icons/1/117.png and b/public/images/pokemon/icons/1/117.png differ diff --git a/public/images/pokemon/icons/1/117s.png b/public/images/pokemon/icons/1/117s.png index 51ab11f755c..07f51d1aad7 100644 Binary files a/public/images/pokemon/icons/1/117s.png and b/public/images/pokemon/icons/1/117s.png differ diff --git a/public/images/pokemon/icons/1/118.png b/public/images/pokemon/icons/1/118.png index 033a3d5c33e..dceb27678f1 100644 Binary files a/public/images/pokemon/icons/1/118.png and b/public/images/pokemon/icons/1/118.png differ diff --git a/public/images/pokemon/icons/1/118s.png b/public/images/pokemon/icons/1/118s.png index b6f5697962e..5c04323e74f 100644 Binary files a/public/images/pokemon/icons/1/118s.png and b/public/images/pokemon/icons/1/118s.png differ diff --git a/public/images/pokemon/icons/1/119.png b/public/images/pokemon/icons/1/119.png index 8d41fea0655..c4969f75e68 100644 Binary files a/public/images/pokemon/icons/1/119.png and b/public/images/pokemon/icons/1/119.png differ diff --git a/public/images/pokemon/icons/1/119s.png b/public/images/pokemon/icons/1/119s.png index 1d2924fd07c..809f4eb4b58 100644 Binary files a/public/images/pokemon/icons/1/119s.png and b/public/images/pokemon/icons/1/119s.png differ diff --git a/public/images/pokemon/icons/1/11s.png b/public/images/pokemon/icons/1/11s.png index f3a41010db2..ce0ab7092a9 100644 Binary files a/public/images/pokemon/icons/1/11s.png and b/public/images/pokemon/icons/1/11s.png differ diff --git a/public/images/pokemon/icons/1/12-gigantamax.png b/public/images/pokemon/icons/1/12-gigantamax.png index 4597977dd58..f3752cdefdd 100644 Binary files a/public/images/pokemon/icons/1/12-gigantamax.png and b/public/images/pokemon/icons/1/12-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/12.png b/public/images/pokemon/icons/1/12.png index 6b59bade114..f67f72c5203 100644 Binary files a/public/images/pokemon/icons/1/12.png and b/public/images/pokemon/icons/1/12.png differ diff --git a/public/images/pokemon/icons/1/120.png b/public/images/pokemon/icons/1/120.png index adf4084b312..d43588df837 100644 Binary files a/public/images/pokemon/icons/1/120.png and b/public/images/pokemon/icons/1/120.png differ diff --git a/public/images/pokemon/icons/1/120s.png b/public/images/pokemon/icons/1/120s.png index 383e8a4352d..9d3dcba70fa 100644 Binary files a/public/images/pokemon/icons/1/120s.png and b/public/images/pokemon/icons/1/120s.png differ diff --git a/public/images/pokemon/icons/1/121.png b/public/images/pokemon/icons/1/121.png index 97c0bd57d1a..dbea416aabd 100644 Binary files a/public/images/pokemon/icons/1/121.png and b/public/images/pokemon/icons/1/121.png differ diff --git a/public/images/pokemon/icons/1/121s.png b/public/images/pokemon/icons/1/121s.png index fb2378a1aa5..37f89dbf413 100644 Binary files a/public/images/pokemon/icons/1/121s.png and b/public/images/pokemon/icons/1/121s.png differ diff --git a/public/images/pokemon/icons/1/122.png b/public/images/pokemon/icons/1/122.png index 2e38c3b58ae..f44353a2f04 100644 Binary files a/public/images/pokemon/icons/1/122.png and b/public/images/pokemon/icons/1/122.png differ diff --git a/public/images/pokemon/icons/1/122s.png b/public/images/pokemon/icons/1/122s.png index 70ac8e2aac2..e36201e1db5 100644 Binary files a/public/images/pokemon/icons/1/122s.png and b/public/images/pokemon/icons/1/122s.png differ diff --git a/public/images/pokemon/icons/1/123.png b/public/images/pokemon/icons/1/123.png index 315c9045240..5001fb4fa84 100644 Binary files a/public/images/pokemon/icons/1/123.png and b/public/images/pokemon/icons/1/123.png differ diff --git a/public/images/pokemon/icons/1/123s.png b/public/images/pokemon/icons/1/123s.png index 2d22395cef5..16218abc945 100644 Binary files a/public/images/pokemon/icons/1/123s.png and b/public/images/pokemon/icons/1/123s.png differ diff --git a/public/images/pokemon/icons/1/124.png b/public/images/pokemon/icons/1/124.png index 84e39acb012..3895cbc6815 100644 Binary files a/public/images/pokemon/icons/1/124.png and b/public/images/pokemon/icons/1/124.png differ diff --git a/public/images/pokemon/icons/1/124s.png b/public/images/pokemon/icons/1/124s.png index 93b3da99d41..4dd73e08a72 100644 Binary files a/public/images/pokemon/icons/1/124s.png and b/public/images/pokemon/icons/1/124s.png differ diff --git a/public/images/pokemon/icons/1/125.png b/public/images/pokemon/icons/1/125.png index 7c5fc8387e3..53204977d67 100644 Binary files a/public/images/pokemon/icons/1/125.png and b/public/images/pokemon/icons/1/125.png differ diff --git a/public/images/pokemon/icons/1/125s.png b/public/images/pokemon/icons/1/125s.png index 096b5435d5d..0155bb82c47 100644 Binary files a/public/images/pokemon/icons/1/125s.png and b/public/images/pokemon/icons/1/125s.png differ diff --git a/public/images/pokemon/icons/1/126.png b/public/images/pokemon/icons/1/126.png index 7d2aa020b98..ef1c960ba33 100644 Binary files a/public/images/pokemon/icons/1/126.png and b/public/images/pokemon/icons/1/126.png differ diff --git a/public/images/pokemon/icons/1/126s.png b/public/images/pokemon/icons/1/126s.png index 6affde34a25..403051dd3ae 100644 Binary files a/public/images/pokemon/icons/1/126s.png and b/public/images/pokemon/icons/1/126s.png differ diff --git a/public/images/pokemon/icons/1/127-mega.png b/public/images/pokemon/icons/1/127-mega.png index 3705bae84ec..3c93b4bb6de 100644 Binary files a/public/images/pokemon/icons/1/127-mega.png and b/public/images/pokemon/icons/1/127-mega.png differ diff --git a/public/images/pokemon/icons/1/127.png b/public/images/pokemon/icons/1/127.png index 4b3671990b0..eb23b84e4dd 100644 Binary files a/public/images/pokemon/icons/1/127.png and b/public/images/pokemon/icons/1/127.png differ diff --git a/public/images/pokemon/icons/1/127s-mega.png b/public/images/pokemon/icons/1/127s-mega.png index f360364ceb8..ce09ded653a 100644 Binary files a/public/images/pokemon/icons/1/127s-mega.png and b/public/images/pokemon/icons/1/127s-mega.png differ diff --git a/public/images/pokemon/icons/1/127s.png b/public/images/pokemon/icons/1/127s.png index 5f2cc24139a..af090e68a05 100644 Binary files a/public/images/pokemon/icons/1/127s.png and b/public/images/pokemon/icons/1/127s.png differ diff --git a/public/images/pokemon/icons/1/128.png b/public/images/pokemon/icons/1/128.png index 68938b402e8..7f0e5bc79bb 100644 Binary files a/public/images/pokemon/icons/1/128.png and b/public/images/pokemon/icons/1/128.png differ diff --git a/public/images/pokemon/icons/1/128s.png b/public/images/pokemon/icons/1/128s.png index 28cc9c7c342..cce1dc794c1 100644 Binary files a/public/images/pokemon/icons/1/128s.png and b/public/images/pokemon/icons/1/128s.png differ diff --git a/public/images/pokemon/icons/1/129.png b/public/images/pokemon/icons/1/129.png index 66d2066790b..fb67939816d 100644 Binary files a/public/images/pokemon/icons/1/129.png and b/public/images/pokemon/icons/1/129.png differ diff --git a/public/images/pokemon/icons/1/129s.png b/public/images/pokemon/icons/1/129s.png index 2f77553ce5c..f8997938421 100644 Binary files a/public/images/pokemon/icons/1/129s.png and b/public/images/pokemon/icons/1/129s.png differ diff --git a/public/images/pokemon/icons/1/12s-gigantamax.png b/public/images/pokemon/icons/1/12s-gigantamax.png index 1ce3df3072d..aa1ec8b03a4 100644 Binary files a/public/images/pokemon/icons/1/12s-gigantamax.png and b/public/images/pokemon/icons/1/12s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/12s.png b/public/images/pokemon/icons/1/12s.png index 3cfe152ced1..adc6bbd9b94 100644 Binary files a/public/images/pokemon/icons/1/12s.png and b/public/images/pokemon/icons/1/12s.png differ diff --git a/public/images/pokemon/icons/1/13.png b/public/images/pokemon/icons/1/13.png index 23413febee6..4e29f567977 100644 Binary files a/public/images/pokemon/icons/1/13.png and b/public/images/pokemon/icons/1/13.png differ diff --git a/public/images/pokemon/icons/1/130-mega.png b/public/images/pokemon/icons/1/130-mega.png index ea68919f6ba..b9705bc2b3d 100644 Binary files a/public/images/pokemon/icons/1/130-mega.png and b/public/images/pokemon/icons/1/130-mega.png differ diff --git a/public/images/pokemon/icons/1/130.png b/public/images/pokemon/icons/1/130.png index 72c0e053cf5..6e3600411df 100644 Binary files a/public/images/pokemon/icons/1/130.png and b/public/images/pokemon/icons/1/130.png differ diff --git a/public/images/pokemon/icons/1/130s-mega.png b/public/images/pokemon/icons/1/130s-mega.png index fd8b0bda8a8..7c3a1b967ea 100644 Binary files a/public/images/pokemon/icons/1/130s-mega.png and b/public/images/pokemon/icons/1/130s-mega.png differ diff --git a/public/images/pokemon/icons/1/130s.png b/public/images/pokemon/icons/1/130s.png index cfd7005b34f..e45ad3b630b 100644 Binary files a/public/images/pokemon/icons/1/130s.png and b/public/images/pokemon/icons/1/130s.png differ diff --git a/public/images/pokemon/icons/1/131-gigantamax.png b/public/images/pokemon/icons/1/131-gigantamax.png index efbe949dbd1..fe39310eb81 100644 Binary files a/public/images/pokemon/icons/1/131-gigantamax.png and b/public/images/pokemon/icons/1/131-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/131.png b/public/images/pokemon/icons/1/131.png index 8cc65b18381..875ab658ac3 100644 Binary files a/public/images/pokemon/icons/1/131.png and b/public/images/pokemon/icons/1/131.png differ diff --git a/public/images/pokemon/icons/1/131s-gigantamax.png b/public/images/pokemon/icons/1/131s-gigantamax.png index e9ab5f7eb9f..47d4e4b63a3 100644 Binary files a/public/images/pokemon/icons/1/131s-gigantamax.png and b/public/images/pokemon/icons/1/131s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/131s.png b/public/images/pokemon/icons/1/131s.png index 7f01df0864a..507d2c1914b 100644 Binary files a/public/images/pokemon/icons/1/131s.png and b/public/images/pokemon/icons/1/131s.png differ diff --git a/public/images/pokemon/icons/1/132.png b/public/images/pokemon/icons/1/132.png index 026c2269807..e73643b03de 100644 Binary files a/public/images/pokemon/icons/1/132.png and b/public/images/pokemon/icons/1/132.png differ diff --git a/public/images/pokemon/icons/1/132s.png b/public/images/pokemon/icons/1/132s.png index 3b2abc10388..a7aef9a4aa0 100644 Binary files a/public/images/pokemon/icons/1/132s.png and b/public/images/pokemon/icons/1/132s.png differ diff --git a/public/images/pokemon/icons/1/133-gigantamax.png b/public/images/pokemon/icons/1/133-gigantamax.png index f965cb1083f..5f0e79db7a6 100644 Binary files a/public/images/pokemon/icons/1/133-gigantamax.png and b/public/images/pokemon/icons/1/133-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/133-partner.png b/public/images/pokemon/icons/1/133-partner.png index b4022e26441..113f2dbeee0 100644 Binary files a/public/images/pokemon/icons/1/133-partner.png and b/public/images/pokemon/icons/1/133-partner.png differ diff --git a/public/images/pokemon/icons/1/133.png b/public/images/pokemon/icons/1/133.png index 32018a8a681..4cb8b62613a 100644 Binary files a/public/images/pokemon/icons/1/133.png and b/public/images/pokemon/icons/1/133.png differ diff --git a/public/images/pokemon/icons/1/133s-gigantamax.png b/public/images/pokemon/icons/1/133s-gigantamax.png index a524ca7d8b4..537bd0c206d 100644 Binary files a/public/images/pokemon/icons/1/133s-gigantamax.png and b/public/images/pokemon/icons/1/133s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/133s-partner.png b/public/images/pokemon/icons/1/133s-partner.png index 4cc0f1c73b4..a73690e53a1 100644 Binary files a/public/images/pokemon/icons/1/133s-partner.png and b/public/images/pokemon/icons/1/133s-partner.png differ diff --git a/public/images/pokemon/icons/1/133s.png b/public/images/pokemon/icons/1/133s.png index 68598d2dd34..fa3b72f9ced 100644 Binary files a/public/images/pokemon/icons/1/133s.png and b/public/images/pokemon/icons/1/133s.png differ diff --git a/public/images/pokemon/icons/1/134.png b/public/images/pokemon/icons/1/134.png index 5b2eb101779..099c27eb63e 100644 Binary files a/public/images/pokemon/icons/1/134.png and b/public/images/pokemon/icons/1/134.png differ diff --git a/public/images/pokemon/icons/1/134s.png b/public/images/pokemon/icons/1/134s.png index c598cd20987..dc02481933f 100644 Binary files a/public/images/pokemon/icons/1/134s.png and b/public/images/pokemon/icons/1/134s.png differ diff --git a/public/images/pokemon/icons/1/135.png b/public/images/pokemon/icons/1/135.png index 1e45d02936b..1c27485002c 100644 Binary files a/public/images/pokemon/icons/1/135.png and b/public/images/pokemon/icons/1/135.png differ diff --git a/public/images/pokemon/icons/1/135s.png b/public/images/pokemon/icons/1/135s.png index 91c29a36604..a77f36481fe 100644 Binary files a/public/images/pokemon/icons/1/135s.png and b/public/images/pokemon/icons/1/135s.png differ diff --git a/public/images/pokemon/icons/1/136.png b/public/images/pokemon/icons/1/136.png index 51756a8c958..51baeef08d1 100644 Binary files a/public/images/pokemon/icons/1/136.png and b/public/images/pokemon/icons/1/136.png differ diff --git a/public/images/pokemon/icons/1/136s.png b/public/images/pokemon/icons/1/136s.png index 6c58d9c775c..db838333051 100644 Binary files a/public/images/pokemon/icons/1/136s.png and b/public/images/pokemon/icons/1/136s.png differ diff --git a/public/images/pokemon/icons/1/137.png b/public/images/pokemon/icons/1/137.png index 24010fe5ccc..785441c57fc 100644 Binary files a/public/images/pokemon/icons/1/137.png and b/public/images/pokemon/icons/1/137.png differ diff --git a/public/images/pokemon/icons/1/137s.png b/public/images/pokemon/icons/1/137s.png index ebc8f53abdf..6d39d6d6751 100644 Binary files a/public/images/pokemon/icons/1/137s.png and b/public/images/pokemon/icons/1/137s.png differ diff --git a/public/images/pokemon/icons/1/138.png b/public/images/pokemon/icons/1/138.png index 323b55a8ed4..97ac55f21e3 100644 Binary files a/public/images/pokemon/icons/1/138.png and b/public/images/pokemon/icons/1/138.png differ diff --git a/public/images/pokemon/icons/1/138s.png b/public/images/pokemon/icons/1/138s.png index 8593417ab5b..44ee795d66c 100644 Binary files a/public/images/pokemon/icons/1/138s.png and b/public/images/pokemon/icons/1/138s.png differ diff --git a/public/images/pokemon/icons/1/139.png b/public/images/pokemon/icons/1/139.png index 03a93d72af7..ab4e49717bc 100644 Binary files a/public/images/pokemon/icons/1/139.png and b/public/images/pokemon/icons/1/139.png differ diff --git a/public/images/pokemon/icons/1/139s.png b/public/images/pokemon/icons/1/139s.png index a66486aeadc..6d8053ee052 100644 Binary files a/public/images/pokemon/icons/1/139s.png and b/public/images/pokemon/icons/1/139s.png differ diff --git a/public/images/pokemon/icons/1/13s.png b/public/images/pokemon/icons/1/13s.png index 4f47ae3dec4..7d6ce38967c 100644 Binary files a/public/images/pokemon/icons/1/13s.png and b/public/images/pokemon/icons/1/13s.png differ diff --git a/public/images/pokemon/icons/1/14.png b/public/images/pokemon/icons/1/14.png index d94f6de9606..641f2e98636 100644 Binary files a/public/images/pokemon/icons/1/14.png and b/public/images/pokemon/icons/1/14.png differ diff --git a/public/images/pokemon/icons/1/140.png b/public/images/pokemon/icons/1/140.png index 5fdc60315b7..4acd72b9480 100644 Binary files a/public/images/pokemon/icons/1/140.png and b/public/images/pokemon/icons/1/140.png differ diff --git a/public/images/pokemon/icons/1/140s.png b/public/images/pokemon/icons/1/140s.png index c512b40ca59..9000b2bb597 100644 Binary files a/public/images/pokemon/icons/1/140s.png and b/public/images/pokemon/icons/1/140s.png differ diff --git a/public/images/pokemon/icons/1/141.png b/public/images/pokemon/icons/1/141.png index d784fbecc9d..252ebe64dc0 100644 Binary files a/public/images/pokemon/icons/1/141.png and b/public/images/pokemon/icons/1/141.png differ diff --git a/public/images/pokemon/icons/1/141s.png b/public/images/pokemon/icons/1/141s.png index f1781ca607f..8bafbd6d49b 100644 Binary files a/public/images/pokemon/icons/1/141s.png and b/public/images/pokemon/icons/1/141s.png differ diff --git a/public/images/pokemon/icons/1/142-mega.png b/public/images/pokemon/icons/1/142-mega.png index 953dc4afbe1..56470d948fb 100644 Binary files a/public/images/pokemon/icons/1/142-mega.png and b/public/images/pokemon/icons/1/142-mega.png differ diff --git a/public/images/pokemon/icons/1/142.png b/public/images/pokemon/icons/1/142.png index 739e03178c6..0c9fad18b64 100644 Binary files a/public/images/pokemon/icons/1/142.png and b/public/images/pokemon/icons/1/142.png differ diff --git a/public/images/pokemon/icons/1/142s-mega.png b/public/images/pokemon/icons/1/142s-mega.png index 8d5e611f412..9106b3bb4d8 100644 Binary files a/public/images/pokemon/icons/1/142s-mega.png and b/public/images/pokemon/icons/1/142s-mega.png differ diff --git a/public/images/pokemon/icons/1/142s.png b/public/images/pokemon/icons/1/142s.png index e461aa0eb6a..1c2abcb0436 100644 Binary files a/public/images/pokemon/icons/1/142s.png and b/public/images/pokemon/icons/1/142s.png differ diff --git a/public/images/pokemon/icons/1/143-gigantamax.png b/public/images/pokemon/icons/1/143-gigantamax.png index 9d0ebef46ca..205bca0c1db 100644 Binary files a/public/images/pokemon/icons/1/143-gigantamax.png and b/public/images/pokemon/icons/1/143-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/143.png b/public/images/pokemon/icons/1/143.png index 6e42a638208..ede65b1d925 100644 Binary files a/public/images/pokemon/icons/1/143.png and b/public/images/pokemon/icons/1/143.png differ diff --git a/public/images/pokemon/icons/1/143s-gigantamax.png b/public/images/pokemon/icons/1/143s-gigantamax.png index 3a69f519e0b..344f25f509c 100644 Binary files a/public/images/pokemon/icons/1/143s-gigantamax.png and b/public/images/pokemon/icons/1/143s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/143s.png b/public/images/pokemon/icons/1/143s.png index 8f0fd04710b..f20d3321180 100644 Binary files a/public/images/pokemon/icons/1/143s.png and b/public/images/pokemon/icons/1/143s.png differ diff --git a/public/images/pokemon/icons/1/144.png b/public/images/pokemon/icons/1/144.png index e63b57a5c23..7d611ed0aeb 100644 Binary files a/public/images/pokemon/icons/1/144.png and b/public/images/pokemon/icons/1/144.png differ diff --git a/public/images/pokemon/icons/1/144s.png b/public/images/pokemon/icons/1/144s.png index 925845dff24..e91a0be5d61 100644 Binary files a/public/images/pokemon/icons/1/144s.png and b/public/images/pokemon/icons/1/144s.png differ diff --git a/public/images/pokemon/icons/1/145.png b/public/images/pokemon/icons/1/145.png index 45329f0574b..77bfa65321a 100644 Binary files a/public/images/pokemon/icons/1/145.png and b/public/images/pokemon/icons/1/145.png differ diff --git a/public/images/pokemon/icons/1/145s.png b/public/images/pokemon/icons/1/145s.png index 01f9843ef84..d7503f88a5c 100644 Binary files a/public/images/pokemon/icons/1/145s.png and b/public/images/pokemon/icons/1/145s.png differ diff --git a/public/images/pokemon/icons/1/146.png b/public/images/pokemon/icons/1/146.png index c1f072658d2..3ffff04eec9 100644 Binary files a/public/images/pokemon/icons/1/146.png and b/public/images/pokemon/icons/1/146.png differ diff --git a/public/images/pokemon/icons/1/146s.png b/public/images/pokemon/icons/1/146s.png index ec0b22909fd..6abfebe1390 100644 Binary files a/public/images/pokemon/icons/1/146s.png and b/public/images/pokemon/icons/1/146s.png differ diff --git a/public/images/pokemon/icons/1/147.png b/public/images/pokemon/icons/1/147.png index a9d528742d1..e69b3b4c49d 100644 Binary files a/public/images/pokemon/icons/1/147.png and b/public/images/pokemon/icons/1/147.png differ diff --git a/public/images/pokemon/icons/1/147s.png b/public/images/pokemon/icons/1/147s.png index d088254b124..c95e2396e71 100644 Binary files a/public/images/pokemon/icons/1/147s.png and b/public/images/pokemon/icons/1/147s.png differ diff --git a/public/images/pokemon/icons/1/148.png b/public/images/pokemon/icons/1/148.png index d3e45bc8d90..352c391431c 100644 Binary files a/public/images/pokemon/icons/1/148.png and b/public/images/pokemon/icons/1/148.png differ diff --git a/public/images/pokemon/icons/1/148s.png b/public/images/pokemon/icons/1/148s.png index d162ab11211..b6c956e7a49 100644 Binary files a/public/images/pokemon/icons/1/148s.png and b/public/images/pokemon/icons/1/148s.png differ diff --git a/public/images/pokemon/icons/1/149.png b/public/images/pokemon/icons/1/149.png index 282c74cfde9..e651c52d3a1 100644 Binary files a/public/images/pokemon/icons/1/149.png and b/public/images/pokemon/icons/1/149.png differ diff --git a/public/images/pokemon/icons/1/149s.png b/public/images/pokemon/icons/1/149s.png index 9c9b59abde8..ee8ebf4adea 100644 Binary files a/public/images/pokemon/icons/1/149s.png and b/public/images/pokemon/icons/1/149s.png differ diff --git a/public/images/pokemon/icons/1/14s.png b/public/images/pokemon/icons/1/14s.png index cdfb19f2c14..97a9ead4392 100644 Binary files a/public/images/pokemon/icons/1/14s.png and b/public/images/pokemon/icons/1/14s.png differ diff --git a/public/images/pokemon/icons/1/15-mega.png b/public/images/pokemon/icons/1/15-mega.png index 2f82a2c8ed4..7ab7c171b40 100644 Binary files a/public/images/pokemon/icons/1/15-mega.png and b/public/images/pokemon/icons/1/15-mega.png differ diff --git a/public/images/pokemon/icons/1/15.png b/public/images/pokemon/icons/1/15.png index 3a753c4b247..c78c42d118f 100644 Binary files a/public/images/pokemon/icons/1/15.png and b/public/images/pokemon/icons/1/15.png differ diff --git a/public/images/pokemon/icons/1/150-mega-x.png b/public/images/pokemon/icons/1/150-mega-x.png index 5e0b9c2afcf..54f98621cb5 100644 Binary files a/public/images/pokemon/icons/1/150-mega-x.png and b/public/images/pokemon/icons/1/150-mega-x.png differ diff --git a/public/images/pokemon/icons/1/150-mega-y.png b/public/images/pokemon/icons/1/150-mega-y.png index 0154faceb83..94476be3053 100644 Binary files a/public/images/pokemon/icons/1/150-mega-y.png and b/public/images/pokemon/icons/1/150-mega-y.png differ diff --git a/public/images/pokemon/icons/1/150.png b/public/images/pokemon/icons/1/150.png index 2ad64a0a126..063ad51668e 100644 Binary files a/public/images/pokemon/icons/1/150.png and b/public/images/pokemon/icons/1/150.png differ diff --git a/public/images/pokemon/icons/1/150s-mega-x.png b/public/images/pokemon/icons/1/150s-mega-x.png index 9f48c4bf4da..fa384598bc1 100644 Binary files a/public/images/pokemon/icons/1/150s-mega-x.png and b/public/images/pokemon/icons/1/150s-mega-x.png differ diff --git a/public/images/pokemon/icons/1/150s-mega-y.png b/public/images/pokemon/icons/1/150s-mega-y.png index 35a2f2f45f8..d33a50a821f 100644 Binary files a/public/images/pokemon/icons/1/150s-mega-y.png and b/public/images/pokemon/icons/1/150s-mega-y.png differ diff --git a/public/images/pokemon/icons/1/150s.png b/public/images/pokemon/icons/1/150s.png index c4c75f6a14b..224d43f6ebd 100644 Binary files a/public/images/pokemon/icons/1/150s.png and b/public/images/pokemon/icons/1/150s.png differ diff --git a/public/images/pokemon/icons/1/151.png b/public/images/pokemon/icons/1/151.png index 2b0c14ead7e..090da6f2c3a 100644 Binary files a/public/images/pokemon/icons/1/151.png and b/public/images/pokemon/icons/1/151.png differ diff --git a/public/images/pokemon/icons/1/151s.png b/public/images/pokemon/icons/1/151s.png index 6cfd3eada96..c1bf3059c58 100644 Binary files a/public/images/pokemon/icons/1/151s.png and b/public/images/pokemon/icons/1/151s.png differ diff --git a/public/images/pokemon/icons/1/15s-mega.png b/public/images/pokemon/icons/1/15s-mega.png index ce24d8ee071..a22fd1e898e 100644 Binary files a/public/images/pokemon/icons/1/15s-mega.png and b/public/images/pokemon/icons/1/15s-mega.png differ diff --git a/public/images/pokemon/icons/1/15s.png b/public/images/pokemon/icons/1/15s.png index b609c309712..66739ed843e 100644 Binary files a/public/images/pokemon/icons/1/15s.png and b/public/images/pokemon/icons/1/15s.png differ diff --git a/public/images/pokemon/icons/1/16.png b/public/images/pokemon/icons/1/16.png index be93220fc1b..2e680dde192 100644 Binary files a/public/images/pokemon/icons/1/16.png and b/public/images/pokemon/icons/1/16.png differ diff --git a/public/images/pokemon/icons/1/16s.png b/public/images/pokemon/icons/1/16s.png index 06b270bfa9b..a289db5266a 100644 Binary files a/public/images/pokemon/icons/1/16s.png and b/public/images/pokemon/icons/1/16s.png differ diff --git a/public/images/pokemon/icons/1/17.png b/public/images/pokemon/icons/1/17.png index 468e30d0874..ff7cd992130 100644 Binary files a/public/images/pokemon/icons/1/17.png and b/public/images/pokemon/icons/1/17.png differ diff --git a/public/images/pokemon/icons/1/17s.png b/public/images/pokemon/icons/1/17s.png index 7c9e404924c..05925e11079 100644 Binary files a/public/images/pokemon/icons/1/17s.png and b/public/images/pokemon/icons/1/17s.png differ diff --git a/public/images/pokemon/icons/1/18-mega.png b/public/images/pokemon/icons/1/18-mega.png index 43839e599c8..5b62eab0aad 100644 Binary files a/public/images/pokemon/icons/1/18-mega.png and b/public/images/pokemon/icons/1/18-mega.png differ diff --git a/public/images/pokemon/icons/1/18.png b/public/images/pokemon/icons/1/18.png index da8a5e6f19d..774a88d6fad 100644 Binary files a/public/images/pokemon/icons/1/18.png and b/public/images/pokemon/icons/1/18.png differ diff --git a/public/images/pokemon/icons/1/18s-mega.png b/public/images/pokemon/icons/1/18s-mega.png index 958b6873f49..4e49a3e1408 100644 Binary files a/public/images/pokemon/icons/1/18s-mega.png and b/public/images/pokemon/icons/1/18s-mega.png differ diff --git a/public/images/pokemon/icons/1/18s.png b/public/images/pokemon/icons/1/18s.png index 888f0fda8b1..fe51f522184 100644 Binary files a/public/images/pokemon/icons/1/18s.png and b/public/images/pokemon/icons/1/18s.png differ diff --git a/public/images/pokemon/icons/1/19.png b/public/images/pokemon/icons/1/19.png index 3107905cb37..801c5796923 100644 Binary files a/public/images/pokemon/icons/1/19.png and b/public/images/pokemon/icons/1/19.png differ diff --git a/public/images/pokemon/icons/1/19s.png b/public/images/pokemon/icons/1/19s.png index 7440eda331b..e9980b1a6da 100644 Binary files a/public/images/pokemon/icons/1/19s.png and b/public/images/pokemon/icons/1/19s.png differ diff --git a/public/images/pokemon/icons/1/1s.png b/public/images/pokemon/icons/1/1s.png index 89f1825a36c..1d134f1a179 100644 Binary files a/public/images/pokemon/icons/1/1s.png and b/public/images/pokemon/icons/1/1s.png differ diff --git a/public/images/pokemon/icons/1/2.png b/public/images/pokemon/icons/1/2.png index bc252686eb8..7d687b658f3 100644 Binary files a/public/images/pokemon/icons/1/2.png and b/public/images/pokemon/icons/1/2.png differ diff --git a/public/images/pokemon/icons/1/20.png b/public/images/pokemon/icons/1/20.png index 0890f4c624d..2722b431e24 100644 Binary files a/public/images/pokemon/icons/1/20.png and b/public/images/pokemon/icons/1/20.png differ diff --git a/public/images/pokemon/icons/1/20s.png b/public/images/pokemon/icons/1/20s.png index 0cda31fd6f3..f49d039e3bc 100644 Binary files a/public/images/pokemon/icons/1/20s.png and b/public/images/pokemon/icons/1/20s.png differ diff --git a/public/images/pokemon/icons/1/21.png b/public/images/pokemon/icons/1/21.png index 4625c1f9f5d..746c67c14fd 100644 Binary files a/public/images/pokemon/icons/1/21.png and b/public/images/pokemon/icons/1/21.png differ diff --git a/public/images/pokemon/icons/1/21s.png b/public/images/pokemon/icons/1/21s.png index 8292b3ab71a..1b7442a6c2b 100644 Binary files a/public/images/pokemon/icons/1/21s.png and b/public/images/pokemon/icons/1/21s.png differ diff --git a/public/images/pokemon/icons/1/22.png b/public/images/pokemon/icons/1/22.png index 738ba728f2f..331d767c3bb 100644 Binary files a/public/images/pokemon/icons/1/22.png and b/public/images/pokemon/icons/1/22.png differ diff --git a/public/images/pokemon/icons/1/22s.png b/public/images/pokemon/icons/1/22s.png index 468675275e8..a3e0527c014 100644 Binary files a/public/images/pokemon/icons/1/22s.png and b/public/images/pokemon/icons/1/22s.png differ diff --git a/public/images/pokemon/icons/1/23.png b/public/images/pokemon/icons/1/23.png index b2fcec7b2f8..3b819c20db0 100644 Binary files a/public/images/pokemon/icons/1/23.png and b/public/images/pokemon/icons/1/23.png differ diff --git a/public/images/pokemon/icons/1/23s.png b/public/images/pokemon/icons/1/23s.png index 59e0acb708c..b1ed579b841 100644 Binary files a/public/images/pokemon/icons/1/23s.png and b/public/images/pokemon/icons/1/23s.png differ diff --git a/public/images/pokemon/icons/1/24.png b/public/images/pokemon/icons/1/24.png index 2ca9712723f..571c1ed2888 100644 Binary files a/public/images/pokemon/icons/1/24.png and b/public/images/pokemon/icons/1/24.png differ diff --git a/public/images/pokemon/icons/1/24s.png b/public/images/pokemon/icons/1/24s.png index 042a7fa0769..ebd38e590f7 100644 Binary files a/public/images/pokemon/icons/1/24s.png and b/public/images/pokemon/icons/1/24s.png differ diff --git a/public/images/pokemon/icons/1/25-beauty-cosplay.png b/public/images/pokemon/icons/1/25-beauty-cosplay.png index f9b6f3dcc82..60fc96c7e3d 100644 Binary files a/public/images/pokemon/icons/1/25-beauty-cosplay.png and b/public/images/pokemon/icons/1/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25-cool-cosplay.png b/public/images/pokemon/icons/1/25-cool-cosplay.png index 6436dff6dbb..689ec529ad0 100644 Binary files a/public/images/pokemon/icons/1/25-cool-cosplay.png and b/public/images/pokemon/icons/1/25-cool-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25-cosplay.png b/public/images/pokemon/icons/1/25-cosplay.png index 580805ef797..fbbf95eb696 100644 Binary files a/public/images/pokemon/icons/1/25-cosplay.png and b/public/images/pokemon/icons/1/25-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25-cute-cosplay.png b/public/images/pokemon/icons/1/25-cute-cosplay.png index 71822acab8b..29f4d7127f9 100644 Binary files a/public/images/pokemon/icons/1/25-cute-cosplay.png and b/public/images/pokemon/icons/1/25-cute-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25-gigantamax.png b/public/images/pokemon/icons/1/25-gigantamax.png index 8650a88a62e..7d006524c5e 100644 Binary files a/public/images/pokemon/icons/1/25-gigantamax.png and b/public/images/pokemon/icons/1/25-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/25-partner.png b/public/images/pokemon/icons/1/25-partner.png index 5b00a2025a3..61f0a197cec 100644 Binary files a/public/images/pokemon/icons/1/25-partner.png and b/public/images/pokemon/icons/1/25-partner.png differ diff --git a/public/images/pokemon/icons/1/25-smart-cosplay.png b/public/images/pokemon/icons/1/25-smart-cosplay.png index 90aba5ddbf0..486e0982d91 100644 Binary files a/public/images/pokemon/icons/1/25-smart-cosplay.png and b/public/images/pokemon/icons/1/25-smart-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25-tough-cosplay.png b/public/images/pokemon/icons/1/25-tough-cosplay.png index 18101b5b497..3dbf2744d29 100644 Binary files a/public/images/pokemon/icons/1/25-tough-cosplay.png and b/public/images/pokemon/icons/1/25-tough-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25.png b/public/images/pokemon/icons/1/25.png index 0061bb3e670..fb5a85f9205 100644 Binary files a/public/images/pokemon/icons/1/25.png and b/public/images/pokemon/icons/1/25.png differ diff --git a/public/images/pokemon/icons/1/25s-beauty-cosplay.png b/public/images/pokemon/icons/1/25s-beauty-cosplay.png index 3b524dfcb06..327b9db1e37 100644 Binary files a/public/images/pokemon/icons/1/25s-beauty-cosplay.png and b/public/images/pokemon/icons/1/25s-beauty-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25s-cool-cosplay.png b/public/images/pokemon/icons/1/25s-cool-cosplay.png index 0a3fc2d11ac..bd51055036c 100644 Binary files a/public/images/pokemon/icons/1/25s-cool-cosplay.png and b/public/images/pokemon/icons/1/25s-cool-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25s-cosplay.png b/public/images/pokemon/icons/1/25s-cosplay.png index 218977fd454..5a1b6ff25c5 100644 Binary files a/public/images/pokemon/icons/1/25s-cosplay.png and b/public/images/pokemon/icons/1/25s-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25s-cute-cosplay.png b/public/images/pokemon/icons/1/25s-cute-cosplay.png index 07df252aeb9..9ca095563b7 100644 Binary files a/public/images/pokemon/icons/1/25s-cute-cosplay.png and b/public/images/pokemon/icons/1/25s-cute-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25s-gigantamax.png b/public/images/pokemon/icons/1/25s-gigantamax.png index f682236be5e..a6299643e63 100644 Binary files a/public/images/pokemon/icons/1/25s-gigantamax.png and b/public/images/pokemon/icons/1/25s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/25s-partner.png b/public/images/pokemon/icons/1/25s-partner.png index 58e2b3a35d1..f7b1bf76a0a 100644 Binary files a/public/images/pokemon/icons/1/25s-partner.png and b/public/images/pokemon/icons/1/25s-partner.png differ diff --git a/public/images/pokemon/icons/1/25s-smart-cosplay.png b/public/images/pokemon/icons/1/25s-smart-cosplay.png index 5742bb2718a..be49631c55e 100644 Binary files a/public/images/pokemon/icons/1/25s-smart-cosplay.png and b/public/images/pokemon/icons/1/25s-smart-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25s-tough-cosplay.png b/public/images/pokemon/icons/1/25s-tough-cosplay.png index 7e49d494573..beb59c680cc 100644 Binary files a/public/images/pokemon/icons/1/25s-tough-cosplay.png and b/public/images/pokemon/icons/1/25s-tough-cosplay.png differ diff --git a/public/images/pokemon/icons/1/25s.png b/public/images/pokemon/icons/1/25s.png index fd5f0e737e4..e67d7f66f90 100644 Binary files a/public/images/pokemon/icons/1/25s.png and b/public/images/pokemon/icons/1/25s.png differ diff --git a/public/images/pokemon/icons/1/26.png b/public/images/pokemon/icons/1/26.png index 3b58f7274a9..c55fab2b7f9 100644 Binary files a/public/images/pokemon/icons/1/26.png and b/public/images/pokemon/icons/1/26.png differ diff --git a/public/images/pokemon/icons/1/26s.png b/public/images/pokemon/icons/1/26s.png index 7b51d75c66e..c5e23ff73c3 100644 Binary files a/public/images/pokemon/icons/1/26s.png and b/public/images/pokemon/icons/1/26s.png differ diff --git a/public/images/pokemon/icons/1/27.png b/public/images/pokemon/icons/1/27.png index c3197081f6b..aa0336fb832 100644 Binary files a/public/images/pokemon/icons/1/27.png and b/public/images/pokemon/icons/1/27.png differ diff --git a/public/images/pokemon/icons/1/27s.png b/public/images/pokemon/icons/1/27s.png index 066ecd1a66a..8e6e47bfa3f 100644 Binary files a/public/images/pokemon/icons/1/27s.png and b/public/images/pokemon/icons/1/27s.png differ diff --git a/public/images/pokemon/icons/1/28.png b/public/images/pokemon/icons/1/28.png index 0e42b43e2b4..d3295cdaf8e 100644 Binary files a/public/images/pokemon/icons/1/28.png and b/public/images/pokemon/icons/1/28.png differ diff --git a/public/images/pokemon/icons/1/28s.png b/public/images/pokemon/icons/1/28s.png index 6f12c14d046..1654f6aadf1 100644 Binary files a/public/images/pokemon/icons/1/28s.png and b/public/images/pokemon/icons/1/28s.png differ diff --git a/public/images/pokemon/icons/1/29.png b/public/images/pokemon/icons/1/29.png index aa89b9a64ce..85530b2fc6d 100644 Binary files a/public/images/pokemon/icons/1/29.png and b/public/images/pokemon/icons/1/29.png differ diff --git a/public/images/pokemon/icons/1/29s.png b/public/images/pokemon/icons/1/29s.png index 86368219eea..6384288f51c 100644 Binary files a/public/images/pokemon/icons/1/29s.png and b/public/images/pokemon/icons/1/29s.png differ diff --git a/public/images/pokemon/icons/1/2s.png b/public/images/pokemon/icons/1/2s.png index 3b7c6086d1c..85f89f69d18 100644 Binary files a/public/images/pokemon/icons/1/2s.png and b/public/images/pokemon/icons/1/2s.png differ diff --git a/public/images/pokemon/icons/1/3-gigantamax.png b/public/images/pokemon/icons/1/3-gigantamax.png index ac93a6fcb34..5ae9d4e6db9 100644 Binary files a/public/images/pokemon/icons/1/3-gigantamax.png and b/public/images/pokemon/icons/1/3-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/3-mega.png b/public/images/pokemon/icons/1/3-mega.png index 280ff0ef118..19a0af80233 100644 Binary files a/public/images/pokemon/icons/1/3-mega.png and b/public/images/pokemon/icons/1/3-mega.png differ diff --git a/public/images/pokemon/icons/1/3.png b/public/images/pokemon/icons/1/3.png index 43816cc6b7c..55b05d86f56 100644 Binary files a/public/images/pokemon/icons/1/3.png and b/public/images/pokemon/icons/1/3.png differ diff --git a/public/images/pokemon/icons/1/30.png b/public/images/pokemon/icons/1/30.png index 92b2d88a5f0..a191f80c935 100644 Binary files a/public/images/pokemon/icons/1/30.png and b/public/images/pokemon/icons/1/30.png differ diff --git a/public/images/pokemon/icons/1/30s.png b/public/images/pokemon/icons/1/30s.png index 4b774f28243..47b3ed0dcc5 100644 Binary files a/public/images/pokemon/icons/1/30s.png and b/public/images/pokemon/icons/1/30s.png differ diff --git a/public/images/pokemon/icons/1/31.png b/public/images/pokemon/icons/1/31.png index 16e40f0b1c1..325353543e5 100644 Binary files a/public/images/pokemon/icons/1/31.png and b/public/images/pokemon/icons/1/31.png differ diff --git a/public/images/pokemon/icons/1/31s.png b/public/images/pokemon/icons/1/31s.png index a02ee54d0f0..ed8803fbfc0 100644 Binary files a/public/images/pokemon/icons/1/31s.png and b/public/images/pokemon/icons/1/31s.png differ diff --git a/public/images/pokemon/icons/1/32.png b/public/images/pokemon/icons/1/32.png index c9b2e663c3e..70fa73093b9 100644 Binary files a/public/images/pokemon/icons/1/32.png and b/public/images/pokemon/icons/1/32.png differ diff --git a/public/images/pokemon/icons/1/32s.png b/public/images/pokemon/icons/1/32s.png index 513fd5dc4b3..bec676d01ad 100644 Binary files a/public/images/pokemon/icons/1/32s.png and b/public/images/pokemon/icons/1/32s.png differ diff --git a/public/images/pokemon/icons/1/33.png b/public/images/pokemon/icons/1/33.png index 1fac9e4d53f..87681012813 100644 Binary files a/public/images/pokemon/icons/1/33.png and b/public/images/pokemon/icons/1/33.png differ diff --git a/public/images/pokemon/icons/1/33s.png b/public/images/pokemon/icons/1/33s.png index 35b849f9841..d661c7aefc7 100644 Binary files a/public/images/pokemon/icons/1/33s.png and b/public/images/pokemon/icons/1/33s.png differ diff --git a/public/images/pokemon/icons/1/34.png b/public/images/pokemon/icons/1/34.png index 712e660fad2..72c9ae3e02b 100644 Binary files a/public/images/pokemon/icons/1/34.png and b/public/images/pokemon/icons/1/34.png differ diff --git a/public/images/pokemon/icons/1/34s.png b/public/images/pokemon/icons/1/34s.png index 42206b43004..514e6b76adb 100644 Binary files a/public/images/pokemon/icons/1/34s.png and b/public/images/pokemon/icons/1/34s.png differ diff --git a/public/images/pokemon/icons/1/35.png b/public/images/pokemon/icons/1/35.png index 751ff177011..843216da61c 100644 Binary files a/public/images/pokemon/icons/1/35.png and b/public/images/pokemon/icons/1/35.png differ diff --git a/public/images/pokemon/icons/1/35s.png b/public/images/pokemon/icons/1/35s.png index 55d919a4fe6..8e3ce38fdd0 100644 Binary files a/public/images/pokemon/icons/1/35s.png and b/public/images/pokemon/icons/1/35s.png differ diff --git a/public/images/pokemon/icons/1/36.png b/public/images/pokemon/icons/1/36.png index b462ecf180d..e5ef07ff49f 100644 Binary files a/public/images/pokemon/icons/1/36.png and b/public/images/pokemon/icons/1/36.png differ diff --git a/public/images/pokemon/icons/1/36s.png b/public/images/pokemon/icons/1/36s.png index 5ede8f59d8a..f12acf7c91a 100644 Binary files a/public/images/pokemon/icons/1/36s.png and b/public/images/pokemon/icons/1/36s.png differ diff --git a/public/images/pokemon/icons/1/37.png b/public/images/pokemon/icons/1/37.png index c6bbc65f782..da205e3e985 100644 Binary files a/public/images/pokemon/icons/1/37.png and b/public/images/pokemon/icons/1/37.png differ diff --git a/public/images/pokemon/icons/1/37s.png b/public/images/pokemon/icons/1/37s.png index 955a8f5a0c0..641f7e1c57c 100644 Binary files a/public/images/pokemon/icons/1/37s.png and b/public/images/pokemon/icons/1/37s.png differ diff --git a/public/images/pokemon/icons/1/38.png b/public/images/pokemon/icons/1/38.png index 03ad55d47c3..29c22c9999b 100644 Binary files a/public/images/pokemon/icons/1/38.png and b/public/images/pokemon/icons/1/38.png differ diff --git a/public/images/pokemon/icons/1/38s.png b/public/images/pokemon/icons/1/38s.png index 7670e025a99..1a211e44e39 100644 Binary files a/public/images/pokemon/icons/1/38s.png and b/public/images/pokemon/icons/1/38s.png differ diff --git a/public/images/pokemon/icons/1/39.png b/public/images/pokemon/icons/1/39.png index 410b028f461..12ec9b40ad3 100644 Binary files a/public/images/pokemon/icons/1/39.png and b/public/images/pokemon/icons/1/39.png differ diff --git a/public/images/pokemon/icons/1/39s.png b/public/images/pokemon/icons/1/39s.png index cebefc9ae30..9c30ecfd3c7 100644 Binary files a/public/images/pokemon/icons/1/39s.png and b/public/images/pokemon/icons/1/39s.png differ diff --git a/public/images/pokemon/icons/1/3s-gigantamax.png b/public/images/pokemon/icons/1/3s-gigantamax.png index b73a58404c6..6249a9ef51b 100644 Binary files a/public/images/pokemon/icons/1/3s-gigantamax.png and b/public/images/pokemon/icons/1/3s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/3s-mega.png b/public/images/pokemon/icons/1/3s-mega.png index a605bbbad24..4e1533666c1 100644 Binary files a/public/images/pokemon/icons/1/3s-mega.png and b/public/images/pokemon/icons/1/3s-mega.png differ diff --git a/public/images/pokemon/icons/1/3s.png b/public/images/pokemon/icons/1/3s.png index 5f4b6e740d2..b8ba8777988 100644 Binary files a/public/images/pokemon/icons/1/3s.png and b/public/images/pokemon/icons/1/3s.png differ diff --git a/public/images/pokemon/icons/1/4.png b/public/images/pokemon/icons/1/4.png index 4daca0a6505..f5f55ab433d 100644 Binary files a/public/images/pokemon/icons/1/4.png and b/public/images/pokemon/icons/1/4.png differ diff --git a/public/images/pokemon/icons/1/40.png b/public/images/pokemon/icons/1/40.png index b4a8176ec0b..eec61ffb09a 100644 Binary files a/public/images/pokemon/icons/1/40.png and b/public/images/pokemon/icons/1/40.png differ diff --git a/public/images/pokemon/icons/1/40s.png b/public/images/pokemon/icons/1/40s.png index 90acee55ee3..9ae633cfd82 100644 Binary files a/public/images/pokemon/icons/1/40s.png and b/public/images/pokemon/icons/1/40s.png differ diff --git a/public/images/pokemon/icons/1/41.png b/public/images/pokemon/icons/1/41.png index e3754c8c171..02ba63f383d 100644 Binary files a/public/images/pokemon/icons/1/41.png and b/public/images/pokemon/icons/1/41.png differ diff --git a/public/images/pokemon/icons/1/41s.png b/public/images/pokemon/icons/1/41s.png index a5b99e23d6b..dfd43a4b6b8 100644 Binary files a/public/images/pokemon/icons/1/41s.png and b/public/images/pokemon/icons/1/41s.png differ diff --git a/public/images/pokemon/icons/1/42.png b/public/images/pokemon/icons/1/42.png index 8981d5aeb49..9911b4783da 100644 Binary files a/public/images/pokemon/icons/1/42.png and b/public/images/pokemon/icons/1/42.png differ diff --git a/public/images/pokemon/icons/1/42s.png b/public/images/pokemon/icons/1/42s.png index 713ff4dce46..506d7441f2d 100644 Binary files a/public/images/pokemon/icons/1/42s.png and b/public/images/pokemon/icons/1/42s.png differ diff --git a/public/images/pokemon/icons/1/43.png b/public/images/pokemon/icons/1/43.png index 142fff17c32..20f8aa11d97 100644 Binary files a/public/images/pokemon/icons/1/43.png and b/public/images/pokemon/icons/1/43.png differ diff --git a/public/images/pokemon/icons/1/43s.png b/public/images/pokemon/icons/1/43s.png index 8911da36ad4..ff4b017949b 100644 Binary files a/public/images/pokemon/icons/1/43s.png and b/public/images/pokemon/icons/1/43s.png differ diff --git a/public/images/pokemon/icons/1/44.png b/public/images/pokemon/icons/1/44.png index c74f7f8febb..4fa510ff966 100644 Binary files a/public/images/pokemon/icons/1/44.png and b/public/images/pokemon/icons/1/44.png differ diff --git a/public/images/pokemon/icons/1/44s.png b/public/images/pokemon/icons/1/44s.png index 421972244fb..c0299e52f0f 100644 Binary files a/public/images/pokemon/icons/1/44s.png and b/public/images/pokemon/icons/1/44s.png differ diff --git a/public/images/pokemon/icons/1/45.png b/public/images/pokemon/icons/1/45.png index 810b9c12649..92f14896d57 100644 Binary files a/public/images/pokemon/icons/1/45.png and b/public/images/pokemon/icons/1/45.png differ diff --git a/public/images/pokemon/icons/1/45s.png b/public/images/pokemon/icons/1/45s.png index 5968d010362..6d2a644f0fd 100644 Binary files a/public/images/pokemon/icons/1/45s.png and b/public/images/pokemon/icons/1/45s.png differ diff --git a/public/images/pokemon/icons/1/46.png b/public/images/pokemon/icons/1/46.png index 5f1d8916998..d8829546047 100644 Binary files a/public/images/pokemon/icons/1/46.png and b/public/images/pokemon/icons/1/46.png differ diff --git a/public/images/pokemon/icons/1/46s.png b/public/images/pokemon/icons/1/46s.png index f859391d116..0605139febe 100644 Binary files a/public/images/pokemon/icons/1/46s.png and b/public/images/pokemon/icons/1/46s.png differ diff --git a/public/images/pokemon/icons/1/47.png b/public/images/pokemon/icons/1/47.png index 5b7ba998437..0ec45b7c02a 100644 Binary files a/public/images/pokemon/icons/1/47.png and b/public/images/pokemon/icons/1/47.png differ diff --git a/public/images/pokemon/icons/1/47s.png b/public/images/pokemon/icons/1/47s.png index ea2b2e2ad73..2ca1128217c 100644 Binary files a/public/images/pokemon/icons/1/47s.png and b/public/images/pokemon/icons/1/47s.png differ diff --git a/public/images/pokemon/icons/1/48.png b/public/images/pokemon/icons/1/48.png index 81332133806..d85db03274c 100644 Binary files a/public/images/pokemon/icons/1/48.png and b/public/images/pokemon/icons/1/48.png differ diff --git a/public/images/pokemon/icons/1/48s.png b/public/images/pokemon/icons/1/48s.png index 368416a934b..c270a9113cc 100644 Binary files a/public/images/pokemon/icons/1/48s.png and b/public/images/pokemon/icons/1/48s.png differ diff --git a/public/images/pokemon/icons/1/49.png b/public/images/pokemon/icons/1/49.png index 328afd407a0..156f98df057 100644 Binary files a/public/images/pokemon/icons/1/49.png and b/public/images/pokemon/icons/1/49.png differ diff --git a/public/images/pokemon/icons/1/49s.png b/public/images/pokemon/icons/1/49s.png index 3cbd9ef4da2..25127666fe6 100644 Binary files a/public/images/pokemon/icons/1/49s.png and b/public/images/pokemon/icons/1/49s.png differ diff --git a/public/images/pokemon/icons/1/4s.png b/public/images/pokemon/icons/1/4s.png index 9b82e9b422d..78dd7881b78 100644 Binary files a/public/images/pokemon/icons/1/4s.png and b/public/images/pokemon/icons/1/4s.png differ diff --git a/public/images/pokemon/icons/1/5.png b/public/images/pokemon/icons/1/5.png index 3907c55aa94..53200ee53ca 100644 Binary files a/public/images/pokemon/icons/1/5.png and b/public/images/pokemon/icons/1/5.png differ diff --git a/public/images/pokemon/icons/1/50.png b/public/images/pokemon/icons/1/50.png index 3111e6fa77a..c7528817143 100644 Binary files a/public/images/pokemon/icons/1/50.png and b/public/images/pokemon/icons/1/50.png differ diff --git a/public/images/pokemon/icons/1/50s.png b/public/images/pokemon/icons/1/50s.png index 2f025a5c596..9243ee686f7 100644 Binary files a/public/images/pokemon/icons/1/50s.png and b/public/images/pokemon/icons/1/50s.png differ diff --git a/public/images/pokemon/icons/1/51.png b/public/images/pokemon/icons/1/51.png index dee7cebab1d..6e7adeb30fa 100644 Binary files a/public/images/pokemon/icons/1/51.png and b/public/images/pokemon/icons/1/51.png differ diff --git a/public/images/pokemon/icons/1/51s.png b/public/images/pokemon/icons/1/51s.png index 1d34853a427..b72bf50b5a6 100644 Binary files a/public/images/pokemon/icons/1/51s.png and b/public/images/pokemon/icons/1/51s.png differ diff --git a/public/images/pokemon/icons/1/52-gigantamax.png b/public/images/pokemon/icons/1/52-gigantamax.png index d860d6b6e5d..8d989e05140 100644 Binary files a/public/images/pokemon/icons/1/52-gigantamax.png and b/public/images/pokemon/icons/1/52-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/52.png b/public/images/pokemon/icons/1/52.png index 73721d506c5..b893e71fee6 100644 Binary files a/public/images/pokemon/icons/1/52.png and b/public/images/pokemon/icons/1/52.png differ diff --git a/public/images/pokemon/icons/1/52s-gigantamax.png b/public/images/pokemon/icons/1/52s-gigantamax.png index 1129f387d99..a83734ab5e5 100644 Binary files a/public/images/pokemon/icons/1/52s-gigantamax.png and b/public/images/pokemon/icons/1/52s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/52s.png b/public/images/pokemon/icons/1/52s.png index d0430d22f14..0ba5b6f7060 100644 Binary files a/public/images/pokemon/icons/1/52s.png and b/public/images/pokemon/icons/1/52s.png differ diff --git a/public/images/pokemon/icons/1/53.png b/public/images/pokemon/icons/1/53.png index ed8f6fc847a..f82e3f24b63 100644 Binary files a/public/images/pokemon/icons/1/53.png and b/public/images/pokemon/icons/1/53.png differ diff --git a/public/images/pokemon/icons/1/53s.png b/public/images/pokemon/icons/1/53s.png index 7a629383c0f..1c676915f6f 100644 Binary files a/public/images/pokemon/icons/1/53s.png and b/public/images/pokemon/icons/1/53s.png differ diff --git a/public/images/pokemon/icons/1/54.png b/public/images/pokemon/icons/1/54.png index 2c413a94ba2..4d20113a2dc 100644 Binary files a/public/images/pokemon/icons/1/54.png and b/public/images/pokemon/icons/1/54.png differ diff --git a/public/images/pokemon/icons/1/54s.png b/public/images/pokemon/icons/1/54s.png index 1b130136fb2..640500c2fd5 100644 Binary files a/public/images/pokemon/icons/1/54s.png and b/public/images/pokemon/icons/1/54s.png differ diff --git a/public/images/pokemon/icons/1/55.png b/public/images/pokemon/icons/1/55.png index 7415fd6f471..b9fba31fe78 100644 Binary files a/public/images/pokemon/icons/1/55.png and b/public/images/pokemon/icons/1/55.png differ diff --git a/public/images/pokemon/icons/1/55s.png b/public/images/pokemon/icons/1/55s.png index f8187dbca3c..7f2cfbc237c 100644 Binary files a/public/images/pokemon/icons/1/55s.png and b/public/images/pokemon/icons/1/55s.png differ diff --git a/public/images/pokemon/icons/1/56.png b/public/images/pokemon/icons/1/56.png index 10c94df5721..f719a9c8d16 100644 Binary files a/public/images/pokemon/icons/1/56.png and b/public/images/pokemon/icons/1/56.png differ diff --git a/public/images/pokemon/icons/1/56s.png b/public/images/pokemon/icons/1/56s.png index 01ce09f92ad..2048a6caae3 100644 Binary files a/public/images/pokemon/icons/1/56s.png and b/public/images/pokemon/icons/1/56s.png differ diff --git a/public/images/pokemon/icons/1/57.png b/public/images/pokemon/icons/1/57.png index 60e620706b1..5330404a9b0 100644 Binary files a/public/images/pokemon/icons/1/57.png and b/public/images/pokemon/icons/1/57.png differ diff --git a/public/images/pokemon/icons/1/57s.png b/public/images/pokemon/icons/1/57s.png index ce098e58a18..530443fb79b 100644 Binary files a/public/images/pokemon/icons/1/57s.png and b/public/images/pokemon/icons/1/57s.png differ diff --git a/public/images/pokemon/icons/1/58.png b/public/images/pokemon/icons/1/58.png index 8e8b9dd1ef6..0e9201f5257 100644 Binary files a/public/images/pokemon/icons/1/58.png and b/public/images/pokemon/icons/1/58.png differ diff --git a/public/images/pokemon/icons/1/58s.png b/public/images/pokemon/icons/1/58s.png index 45a83158670..c83fe8862a9 100644 Binary files a/public/images/pokemon/icons/1/58s.png and b/public/images/pokemon/icons/1/58s.png differ diff --git a/public/images/pokemon/icons/1/59.png b/public/images/pokemon/icons/1/59.png index 305dcaa5b91..c7561498d5d 100644 Binary files a/public/images/pokemon/icons/1/59.png and b/public/images/pokemon/icons/1/59.png differ diff --git a/public/images/pokemon/icons/1/59s.png b/public/images/pokemon/icons/1/59s.png index 9b38843d835..644b3a87b42 100644 Binary files a/public/images/pokemon/icons/1/59s.png and b/public/images/pokemon/icons/1/59s.png differ diff --git a/public/images/pokemon/icons/1/5s.png b/public/images/pokemon/icons/1/5s.png index f17c9a3da22..26887984cc3 100644 Binary files a/public/images/pokemon/icons/1/5s.png and b/public/images/pokemon/icons/1/5s.png differ diff --git a/public/images/pokemon/icons/1/6-gigantamax.png b/public/images/pokemon/icons/1/6-gigantamax.png index ec8f080d326..cc231cfefb3 100644 Binary files a/public/images/pokemon/icons/1/6-gigantamax.png and b/public/images/pokemon/icons/1/6-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/6-mega-x.png b/public/images/pokemon/icons/1/6-mega-x.png index 4fb60e7fd2e..d65813c4096 100644 Binary files a/public/images/pokemon/icons/1/6-mega-x.png and b/public/images/pokemon/icons/1/6-mega-x.png differ diff --git a/public/images/pokemon/icons/1/6-mega-y.png b/public/images/pokemon/icons/1/6-mega-y.png index 48e7467d166..46d0035df0e 100644 Binary files a/public/images/pokemon/icons/1/6-mega-y.png and b/public/images/pokemon/icons/1/6-mega-y.png differ diff --git a/public/images/pokemon/icons/1/6.png b/public/images/pokemon/icons/1/6.png index 18046a77dd6..b2fbd2475ea 100644 Binary files a/public/images/pokemon/icons/1/6.png and b/public/images/pokemon/icons/1/6.png differ diff --git a/public/images/pokemon/icons/1/60.png b/public/images/pokemon/icons/1/60.png index f07dbb5913a..a90ee0613e7 100644 Binary files a/public/images/pokemon/icons/1/60.png and b/public/images/pokemon/icons/1/60.png differ diff --git a/public/images/pokemon/icons/1/60s.png b/public/images/pokemon/icons/1/60s.png index 56bc9dd8982..2e79b959af0 100644 Binary files a/public/images/pokemon/icons/1/60s.png and b/public/images/pokemon/icons/1/60s.png differ diff --git a/public/images/pokemon/icons/1/61.png b/public/images/pokemon/icons/1/61.png index 8642906c2a0..4d46447e585 100644 Binary files a/public/images/pokemon/icons/1/61.png and b/public/images/pokemon/icons/1/61.png differ diff --git a/public/images/pokemon/icons/1/61s.png b/public/images/pokemon/icons/1/61s.png index 3d772e77d93..a41ca410536 100644 Binary files a/public/images/pokemon/icons/1/61s.png and b/public/images/pokemon/icons/1/61s.png differ diff --git a/public/images/pokemon/icons/1/62.png b/public/images/pokemon/icons/1/62.png index 396e1cf5cec..c2b38a017fd 100644 Binary files a/public/images/pokemon/icons/1/62.png and b/public/images/pokemon/icons/1/62.png differ diff --git a/public/images/pokemon/icons/1/62s.png b/public/images/pokemon/icons/1/62s.png index 6c651e1edfc..d0c67a0ee7a 100644 Binary files a/public/images/pokemon/icons/1/62s.png and b/public/images/pokemon/icons/1/62s.png differ diff --git a/public/images/pokemon/icons/1/63.png b/public/images/pokemon/icons/1/63.png index 0e39b897a86..2dce68e210b 100644 Binary files a/public/images/pokemon/icons/1/63.png and b/public/images/pokemon/icons/1/63.png differ diff --git a/public/images/pokemon/icons/1/63s.png b/public/images/pokemon/icons/1/63s.png index 6645f9f1c34..214eabeecbc 100644 Binary files a/public/images/pokemon/icons/1/63s.png and b/public/images/pokemon/icons/1/63s.png differ diff --git a/public/images/pokemon/icons/1/64.png b/public/images/pokemon/icons/1/64.png index d32130034ac..c446816bbb1 100644 Binary files a/public/images/pokemon/icons/1/64.png and b/public/images/pokemon/icons/1/64.png differ diff --git a/public/images/pokemon/icons/1/64s.png b/public/images/pokemon/icons/1/64s.png index 865f427a8ac..e360ee9f12a 100644 Binary files a/public/images/pokemon/icons/1/64s.png and b/public/images/pokemon/icons/1/64s.png differ diff --git a/public/images/pokemon/icons/1/65-mega.png b/public/images/pokemon/icons/1/65-mega.png index fb0326b9340..10719aa0c33 100644 Binary files a/public/images/pokemon/icons/1/65-mega.png and b/public/images/pokemon/icons/1/65-mega.png differ diff --git a/public/images/pokemon/icons/1/65.png b/public/images/pokemon/icons/1/65.png index ecb42810b01..5f096c8a9ba 100644 Binary files a/public/images/pokemon/icons/1/65.png and b/public/images/pokemon/icons/1/65.png differ diff --git a/public/images/pokemon/icons/1/65s-mega.png b/public/images/pokemon/icons/1/65s-mega.png index 3c7798d4ad8..3af35cec27e 100644 Binary files a/public/images/pokemon/icons/1/65s-mega.png and b/public/images/pokemon/icons/1/65s-mega.png differ diff --git a/public/images/pokemon/icons/1/65s.png b/public/images/pokemon/icons/1/65s.png index 3a720e88963..6733562bcab 100644 Binary files a/public/images/pokemon/icons/1/65s.png and b/public/images/pokemon/icons/1/65s.png differ diff --git a/public/images/pokemon/icons/1/66.png b/public/images/pokemon/icons/1/66.png index 1ca982cfba4..6430e9c4bc1 100644 Binary files a/public/images/pokemon/icons/1/66.png and b/public/images/pokemon/icons/1/66.png differ diff --git a/public/images/pokemon/icons/1/66s.png b/public/images/pokemon/icons/1/66s.png index 89f51ed1c95..e00f2b5b577 100644 Binary files a/public/images/pokemon/icons/1/66s.png and b/public/images/pokemon/icons/1/66s.png differ diff --git a/public/images/pokemon/icons/1/67.png b/public/images/pokemon/icons/1/67.png index b1ef2fc304a..e56dcca7d35 100644 Binary files a/public/images/pokemon/icons/1/67.png and b/public/images/pokemon/icons/1/67.png differ diff --git a/public/images/pokemon/icons/1/67s.png b/public/images/pokemon/icons/1/67s.png index 777493efc55..00e1213edc9 100644 Binary files a/public/images/pokemon/icons/1/67s.png and b/public/images/pokemon/icons/1/67s.png differ diff --git a/public/images/pokemon/icons/1/68-gigantamax.png b/public/images/pokemon/icons/1/68-gigantamax.png index 3421c931539..3995c95e0b4 100644 Binary files a/public/images/pokemon/icons/1/68-gigantamax.png and b/public/images/pokemon/icons/1/68-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/68.png b/public/images/pokemon/icons/1/68.png index 200f13ba0db..c57c930f2dc 100644 Binary files a/public/images/pokemon/icons/1/68.png and b/public/images/pokemon/icons/1/68.png differ diff --git a/public/images/pokemon/icons/1/68s-gigantamax.png b/public/images/pokemon/icons/1/68s-gigantamax.png index c54898def48..664f4211f52 100644 Binary files a/public/images/pokemon/icons/1/68s-gigantamax.png and b/public/images/pokemon/icons/1/68s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/68s.png b/public/images/pokemon/icons/1/68s.png index f58405eb0e8..cbbba6b8c17 100644 Binary files a/public/images/pokemon/icons/1/68s.png and b/public/images/pokemon/icons/1/68s.png differ diff --git a/public/images/pokemon/icons/1/69.png b/public/images/pokemon/icons/1/69.png index c90956d4495..de58418414a 100644 Binary files a/public/images/pokemon/icons/1/69.png and b/public/images/pokemon/icons/1/69.png differ diff --git a/public/images/pokemon/icons/1/69s.png b/public/images/pokemon/icons/1/69s.png index 86abede97d9..4576f8a0fa8 100644 Binary files a/public/images/pokemon/icons/1/69s.png and b/public/images/pokemon/icons/1/69s.png differ diff --git a/public/images/pokemon/icons/1/6s-gigantamax.png b/public/images/pokemon/icons/1/6s-gigantamax.png index 3efe0040c56..543e1fbef4a 100644 Binary files a/public/images/pokemon/icons/1/6s-gigantamax.png and b/public/images/pokemon/icons/1/6s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/6s-mega-x.png b/public/images/pokemon/icons/1/6s-mega-x.png index 39c2f0056de..35eb0315d14 100644 Binary files a/public/images/pokemon/icons/1/6s-mega-x.png and b/public/images/pokemon/icons/1/6s-mega-x.png differ diff --git a/public/images/pokemon/icons/1/6s-mega-y.png b/public/images/pokemon/icons/1/6s-mega-y.png index 65954efd6c7..ddf3ef5e6d7 100644 Binary files a/public/images/pokemon/icons/1/6s-mega-y.png and b/public/images/pokemon/icons/1/6s-mega-y.png differ diff --git a/public/images/pokemon/icons/1/6s.png b/public/images/pokemon/icons/1/6s.png index 3881ebedefb..3e42681e959 100644 Binary files a/public/images/pokemon/icons/1/6s.png and b/public/images/pokemon/icons/1/6s.png differ diff --git a/public/images/pokemon/icons/1/7.png b/public/images/pokemon/icons/1/7.png index cce1bb3389d..9b2952bc58f 100644 Binary files a/public/images/pokemon/icons/1/7.png and b/public/images/pokemon/icons/1/7.png differ diff --git a/public/images/pokemon/icons/1/70.png b/public/images/pokemon/icons/1/70.png index 2a473d680d1..52de6ff6a70 100644 Binary files a/public/images/pokemon/icons/1/70.png and b/public/images/pokemon/icons/1/70.png differ diff --git a/public/images/pokemon/icons/1/70s.png b/public/images/pokemon/icons/1/70s.png index f38379a4d0d..3c55568808e 100644 Binary files a/public/images/pokemon/icons/1/70s.png and b/public/images/pokemon/icons/1/70s.png differ diff --git a/public/images/pokemon/icons/1/71.png b/public/images/pokemon/icons/1/71.png index 5b059089de3..df1d872d9cc 100644 Binary files a/public/images/pokemon/icons/1/71.png and b/public/images/pokemon/icons/1/71.png differ diff --git a/public/images/pokemon/icons/1/71s.png b/public/images/pokemon/icons/1/71s.png index fd4c7ac8536..845ac177687 100644 Binary files a/public/images/pokemon/icons/1/71s.png and b/public/images/pokemon/icons/1/71s.png differ diff --git a/public/images/pokemon/icons/1/72.png b/public/images/pokemon/icons/1/72.png index 82e3b2c0ab9..8b110e93149 100644 Binary files a/public/images/pokemon/icons/1/72.png and b/public/images/pokemon/icons/1/72.png differ diff --git a/public/images/pokemon/icons/1/72s.png b/public/images/pokemon/icons/1/72s.png index 2c4d35fd3f3..0778f62aba1 100644 Binary files a/public/images/pokemon/icons/1/72s.png and b/public/images/pokemon/icons/1/72s.png differ diff --git a/public/images/pokemon/icons/1/73.png b/public/images/pokemon/icons/1/73.png index 8a275b75bcb..80535dc075d 100644 Binary files a/public/images/pokemon/icons/1/73.png and b/public/images/pokemon/icons/1/73.png differ diff --git a/public/images/pokemon/icons/1/73s.png b/public/images/pokemon/icons/1/73s.png index e580fc4181e..e3c3eb34009 100644 Binary files a/public/images/pokemon/icons/1/73s.png and b/public/images/pokemon/icons/1/73s.png differ diff --git a/public/images/pokemon/icons/1/74.png b/public/images/pokemon/icons/1/74.png index 801421db9f0..1b8bfbf9557 100644 Binary files a/public/images/pokemon/icons/1/74.png and b/public/images/pokemon/icons/1/74.png differ diff --git a/public/images/pokemon/icons/1/74s.png b/public/images/pokemon/icons/1/74s.png index 8163c16a9cf..bccf8292c30 100644 Binary files a/public/images/pokemon/icons/1/74s.png and b/public/images/pokemon/icons/1/74s.png differ diff --git a/public/images/pokemon/icons/1/75.png b/public/images/pokemon/icons/1/75.png index 245d6acf81c..121d71722fe 100644 Binary files a/public/images/pokemon/icons/1/75.png and b/public/images/pokemon/icons/1/75.png differ diff --git a/public/images/pokemon/icons/1/75s.png b/public/images/pokemon/icons/1/75s.png index bf1b00b6f56..1adbcfb955b 100644 Binary files a/public/images/pokemon/icons/1/75s.png and b/public/images/pokemon/icons/1/75s.png differ diff --git a/public/images/pokemon/icons/1/76.png b/public/images/pokemon/icons/1/76.png index 79b4deb055f..82139ac48cf 100644 Binary files a/public/images/pokemon/icons/1/76.png and b/public/images/pokemon/icons/1/76.png differ diff --git a/public/images/pokemon/icons/1/76s.png b/public/images/pokemon/icons/1/76s.png index f54025f0393..55670817707 100644 Binary files a/public/images/pokemon/icons/1/76s.png and b/public/images/pokemon/icons/1/76s.png differ diff --git a/public/images/pokemon/icons/1/77.png b/public/images/pokemon/icons/1/77.png index 31fe01c0a70..085b0dc1045 100644 Binary files a/public/images/pokemon/icons/1/77.png and b/public/images/pokemon/icons/1/77.png differ diff --git a/public/images/pokemon/icons/1/77s.png b/public/images/pokemon/icons/1/77s.png index 5eaa304bbe5..5fba757d8d8 100644 Binary files a/public/images/pokemon/icons/1/77s.png and b/public/images/pokemon/icons/1/77s.png differ diff --git a/public/images/pokemon/icons/1/78.png b/public/images/pokemon/icons/1/78.png index 6d7d60739f2..6a2a22ce4e6 100644 Binary files a/public/images/pokemon/icons/1/78.png and b/public/images/pokemon/icons/1/78.png differ diff --git a/public/images/pokemon/icons/1/78s.png b/public/images/pokemon/icons/1/78s.png index 0db1744bf53..e6559716f7f 100644 Binary files a/public/images/pokemon/icons/1/78s.png and b/public/images/pokemon/icons/1/78s.png differ diff --git a/public/images/pokemon/icons/1/79.png b/public/images/pokemon/icons/1/79.png index c1f638e8610..a4762242ba8 100644 Binary files a/public/images/pokemon/icons/1/79.png and b/public/images/pokemon/icons/1/79.png differ diff --git a/public/images/pokemon/icons/1/79s.png b/public/images/pokemon/icons/1/79s.png index e5943d4d904..1cdbd8eaa6c 100644 Binary files a/public/images/pokemon/icons/1/79s.png and b/public/images/pokemon/icons/1/79s.png differ diff --git a/public/images/pokemon/icons/1/7s.png b/public/images/pokemon/icons/1/7s.png index ab450fa13cf..ac3f0026b57 100644 Binary files a/public/images/pokemon/icons/1/7s.png and b/public/images/pokemon/icons/1/7s.png differ diff --git a/public/images/pokemon/icons/1/8.png b/public/images/pokemon/icons/1/8.png index 0dfbbb5fba0..e8eb9a5ed6f 100644 Binary files a/public/images/pokemon/icons/1/8.png and b/public/images/pokemon/icons/1/8.png differ diff --git a/public/images/pokemon/icons/1/80-mega.png b/public/images/pokemon/icons/1/80-mega.png index f67656b1bd3..e8f8400052e 100644 Binary files a/public/images/pokemon/icons/1/80-mega.png and b/public/images/pokemon/icons/1/80-mega.png differ diff --git a/public/images/pokemon/icons/1/80.png b/public/images/pokemon/icons/1/80.png index fe37d441765..057103a8639 100644 Binary files a/public/images/pokemon/icons/1/80.png and b/public/images/pokemon/icons/1/80.png differ diff --git a/public/images/pokemon/icons/1/80s-mega.png b/public/images/pokemon/icons/1/80s-mega.png index 9670635448a..2d2d3213353 100644 Binary files a/public/images/pokemon/icons/1/80s-mega.png and b/public/images/pokemon/icons/1/80s-mega.png differ diff --git a/public/images/pokemon/icons/1/80s.png b/public/images/pokemon/icons/1/80s.png index 1dd4bb79389..5daac1ea643 100644 Binary files a/public/images/pokemon/icons/1/80s.png and b/public/images/pokemon/icons/1/80s.png differ diff --git a/public/images/pokemon/icons/1/81.png b/public/images/pokemon/icons/1/81.png index a2b33bfba05..349ccbf5bfa 100644 Binary files a/public/images/pokemon/icons/1/81.png and b/public/images/pokemon/icons/1/81.png differ diff --git a/public/images/pokemon/icons/1/81s.png b/public/images/pokemon/icons/1/81s.png index f317851f737..1e7238f7ebc 100644 Binary files a/public/images/pokemon/icons/1/81s.png and b/public/images/pokemon/icons/1/81s.png differ diff --git a/public/images/pokemon/icons/1/82.png b/public/images/pokemon/icons/1/82.png index f0db0c7326e..5453a78d157 100644 Binary files a/public/images/pokemon/icons/1/82.png and b/public/images/pokemon/icons/1/82.png differ diff --git a/public/images/pokemon/icons/1/82s.png b/public/images/pokemon/icons/1/82s.png index 811e3a62768..fbaa079c3f0 100644 Binary files a/public/images/pokemon/icons/1/82s.png and b/public/images/pokemon/icons/1/82s.png differ diff --git a/public/images/pokemon/icons/1/83.png b/public/images/pokemon/icons/1/83.png index c1186850e39..06f332dc680 100644 Binary files a/public/images/pokemon/icons/1/83.png and b/public/images/pokemon/icons/1/83.png differ diff --git a/public/images/pokemon/icons/1/83s.png b/public/images/pokemon/icons/1/83s.png index a41f26a0f58..dbd068efa2b 100644 Binary files a/public/images/pokemon/icons/1/83s.png and b/public/images/pokemon/icons/1/83s.png differ diff --git a/public/images/pokemon/icons/1/84-f.png b/public/images/pokemon/icons/1/84-f.png index 88531308131..0876f0013b5 100644 Binary files a/public/images/pokemon/icons/1/84-f.png and b/public/images/pokemon/icons/1/84-f.png differ diff --git a/public/images/pokemon/icons/1/84.png b/public/images/pokemon/icons/1/84.png index 92326be3259..91c9c3c7dbd 100644 Binary files a/public/images/pokemon/icons/1/84.png and b/public/images/pokemon/icons/1/84.png differ diff --git a/public/images/pokemon/icons/1/84s-f.png b/public/images/pokemon/icons/1/84s-f.png index 0b616beff56..a6d0c8b22eb 100644 Binary files a/public/images/pokemon/icons/1/84s-f.png and b/public/images/pokemon/icons/1/84s-f.png differ diff --git a/public/images/pokemon/icons/1/84s.png b/public/images/pokemon/icons/1/84s.png index ff57ddba8f4..a6d0c8b22eb 100644 Binary files a/public/images/pokemon/icons/1/84s.png and b/public/images/pokemon/icons/1/84s.png differ diff --git a/public/images/pokemon/icons/1/85-f.png b/public/images/pokemon/icons/1/85-f.png index ca34e9fc554..39686df3721 100644 Binary files a/public/images/pokemon/icons/1/85-f.png and b/public/images/pokemon/icons/1/85-f.png differ diff --git a/public/images/pokemon/icons/1/85.png b/public/images/pokemon/icons/1/85.png index 795334e2c4d..39686df3721 100644 Binary files a/public/images/pokemon/icons/1/85.png and b/public/images/pokemon/icons/1/85.png differ diff --git a/public/images/pokemon/icons/1/85s-f.png b/public/images/pokemon/icons/1/85s-f.png index 73bb083f2d9..6c37a1c90f9 100644 Binary files a/public/images/pokemon/icons/1/85s-f.png and b/public/images/pokemon/icons/1/85s-f.png differ diff --git a/public/images/pokemon/icons/1/85s.png b/public/images/pokemon/icons/1/85s.png index a6227d6ac6b..6c37a1c90f9 100644 Binary files a/public/images/pokemon/icons/1/85s.png and b/public/images/pokemon/icons/1/85s.png differ diff --git a/public/images/pokemon/icons/1/86.png b/public/images/pokemon/icons/1/86.png index 87cd94b5545..f33fe93da66 100644 Binary files a/public/images/pokemon/icons/1/86.png and b/public/images/pokemon/icons/1/86.png differ diff --git a/public/images/pokemon/icons/1/86s.png b/public/images/pokemon/icons/1/86s.png index 0de15ffbe19..ebeb64cf54d 100644 Binary files a/public/images/pokemon/icons/1/86s.png and b/public/images/pokemon/icons/1/86s.png differ diff --git a/public/images/pokemon/icons/1/87.png b/public/images/pokemon/icons/1/87.png index 726f089671c..a64e54a9d43 100644 Binary files a/public/images/pokemon/icons/1/87.png and b/public/images/pokemon/icons/1/87.png differ diff --git a/public/images/pokemon/icons/1/87s.png b/public/images/pokemon/icons/1/87s.png index 2f0829d92eb..d85ac37db34 100644 Binary files a/public/images/pokemon/icons/1/87s.png and b/public/images/pokemon/icons/1/87s.png differ diff --git a/public/images/pokemon/icons/1/88.png b/public/images/pokemon/icons/1/88.png index df82eb666f1..75af6b638fa 100644 Binary files a/public/images/pokemon/icons/1/88.png and b/public/images/pokemon/icons/1/88.png differ diff --git a/public/images/pokemon/icons/1/88s.png b/public/images/pokemon/icons/1/88s.png index 166b67b7527..4ab1e130d0c 100644 Binary files a/public/images/pokemon/icons/1/88s.png and b/public/images/pokemon/icons/1/88s.png differ diff --git a/public/images/pokemon/icons/1/89.png b/public/images/pokemon/icons/1/89.png index 251d7b81616..9af3b98998d 100644 Binary files a/public/images/pokemon/icons/1/89.png and b/public/images/pokemon/icons/1/89.png differ diff --git a/public/images/pokemon/icons/1/89s.png b/public/images/pokemon/icons/1/89s.png index fa9d0757ae5..c48024a8366 100644 Binary files a/public/images/pokemon/icons/1/89s.png and b/public/images/pokemon/icons/1/89s.png differ diff --git a/public/images/pokemon/icons/1/8s.png b/public/images/pokemon/icons/1/8s.png index 5ca64a3274e..f73796e22d1 100644 Binary files a/public/images/pokemon/icons/1/8s.png and b/public/images/pokemon/icons/1/8s.png differ diff --git a/public/images/pokemon/icons/1/9-gigantamax.png b/public/images/pokemon/icons/1/9-gigantamax.png index a39435de0e4..7bc8fc2c310 100644 Binary files a/public/images/pokemon/icons/1/9-gigantamax.png and b/public/images/pokemon/icons/1/9-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/9-mega.png b/public/images/pokemon/icons/1/9-mega.png index d8d415f2b1e..b2a040ea8dd 100644 Binary files a/public/images/pokemon/icons/1/9-mega.png and b/public/images/pokemon/icons/1/9-mega.png differ diff --git a/public/images/pokemon/icons/1/9.png b/public/images/pokemon/icons/1/9.png index 9ce0f443daf..0935d21c623 100644 Binary files a/public/images/pokemon/icons/1/9.png and b/public/images/pokemon/icons/1/9.png differ diff --git a/public/images/pokemon/icons/1/90.png b/public/images/pokemon/icons/1/90.png index 20940ec94c3..52169fa2ec1 100644 Binary files a/public/images/pokemon/icons/1/90.png and b/public/images/pokemon/icons/1/90.png differ diff --git a/public/images/pokemon/icons/1/90s.png b/public/images/pokemon/icons/1/90s.png index 60726a5d4af..a868f50d35e 100644 Binary files a/public/images/pokemon/icons/1/90s.png and b/public/images/pokemon/icons/1/90s.png differ diff --git a/public/images/pokemon/icons/1/91.png b/public/images/pokemon/icons/1/91.png index f7ca4370efd..0b144f3c59e 100644 Binary files a/public/images/pokemon/icons/1/91.png and b/public/images/pokemon/icons/1/91.png differ diff --git a/public/images/pokemon/icons/1/91s.png b/public/images/pokemon/icons/1/91s.png index e0530e41e58..88428106d85 100644 Binary files a/public/images/pokemon/icons/1/91s.png and b/public/images/pokemon/icons/1/91s.png differ diff --git a/public/images/pokemon/icons/1/92.png b/public/images/pokemon/icons/1/92.png index c32210b4f5b..f58ccaaaec0 100644 Binary files a/public/images/pokemon/icons/1/92.png and b/public/images/pokemon/icons/1/92.png differ diff --git a/public/images/pokemon/icons/1/92s.png b/public/images/pokemon/icons/1/92s.png index 5adae2cf2c3..881ca81996d 100644 Binary files a/public/images/pokemon/icons/1/92s.png and b/public/images/pokemon/icons/1/92s.png differ diff --git a/public/images/pokemon/icons/1/93.png b/public/images/pokemon/icons/1/93.png index cf28246086c..172b73ee7dd 100644 Binary files a/public/images/pokemon/icons/1/93.png and b/public/images/pokemon/icons/1/93.png differ diff --git a/public/images/pokemon/icons/1/93s.png b/public/images/pokemon/icons/1/93s.png index f6e2b6bffb3..e0e987dd1ed 100644 Binary files a/public/images/pokemon/icons/1/93s.png and b/public/images/pokemon/icons/1/93s.png differ diff --git a/public/images/pokemon/icons/1/94-gigantamax.png b/public/images/pokemon/icons/1/94-gigantamax.png index 2c931053d9b..646f9e8cf55 100644 Binary files a/public/images/pokemon/icons/1/94-gigantamax.png and b/public/images/pokemon/icons/1/94-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/94-mega.png b/public/images/pokemon/icons/1/94-mega.png index 2a5795ebeee..45042d239ac 100644 Binary files a/public/images/pokemon/icons/1/94-mega.png and b/public/images/pokemon/icons/1/94-mega.png differ diff --git a/public/images/pokemon/icons/1/94.png b/public/images/pokemon/icons/1/94.png index 666cfedab77..94f871e6f59 100644 Binary files a/public/images/pokemon/icons/1/94.png and b/public/images/pokemon/icons/1/94.png differ diff --git a/public/images/pokemon/icons/1/94s-gigantamax.png b/public/images/pokemon/icons/1/94s-gigantamax.png index 32bce9937c0..14425e54c81 100644 Binary files a/public/images/pokemon/icons/1/94s-gigantamax.png and b/public/images/pokemon/icons/1/94s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/94s-mega.png b/public/images/pokemon/icons/1/94s-mega.png index 65a938ca50b..4131ab2fda7 100644 Binary files a/public/images/pokemon/icons/1/94s-mega.png and b/public/images/pokemon/icons/1/94s-mega.png differ diff --git a/public/images/pokemon/icons/1/94s.png b/public/images/pokemon/icons/1/94s.png index 4fa53b85fb6..0810d64d1ad 100644 Binary files a/public/images/pokemon/icons/1/94s.png and b/public/images/pokemon/icons/1/94s.png differ diff --git a/public/images/pokemon/icons/1/95.png b/public/images/pokemon/icons/1/95.png index ef087bf5be6..98919075bbd 100644 Binary files a/public/images/pokemon/icons/1/95.png and b/public/images/pokemon/icons/1/95.png differ diff --git a/public/images/pokemon/icons/1/95s.png b/public/images/pokemon/icons/1/95s.png index 630539fce52..288a3503221 100644 Binary files a/public/images/pokemon/icons/1/95s.png and b/public/images/pokemon/icons/1/95s.png differ diff --git a/public/images/pokemon/icons/1/96.png b/public/images/pokemon/icons/1/96.png index f1481509a12..2326a8c125c 100644 Binary files a/public/images/pokemon/icons/1/96.png and b/public/images/pokemon/icons/1/96.png differ diff --git a/public/images/pokemon/icons/1/96s.png b/public/images/pokemon/icons/1/96s.png index 9154eaec582..36ad7d0d309 100644 Binary files a/public/images/pokemon/icons/1/96s.png and b/public/images/pokemon/icons/1/96s.png differ diff --git a/public/images/pokemon/icons/1/97.png b/public/images/pokemon/icons/1/97.png index c308a469903..09a8d289aa6 100644 Binary files a/public/images/pokemon/icons/1/97.png and b/public/images/pokemon/icons/1/97.png differ diff --git a/public/images/pokemon/icons/1/97s.png b/public/images/pokemon/icons/1/97s.png index 6443015c3d8..768c5a6355f 100644 Binary files a/public/images/pokemon/icons/1/97s.png and b/public/images/pokemon/icons/1/97s.png differ diff --git a/public/images/pokemon/icons/1/98.png b/public/images/pokemon/icons/1/98.png index 11b3e2f19ef..6414a97895d 100644 Binary files a/public/images/pokemon/icons/1/98.png and b/public/images/pokemon/icons/1/98.png differ diff --git a/public/images/pokemon/icons/1/98s.png b/public/images/pokemon/icons/1/98s.png index 3cbe0e89481..bf5bc15bf9e 100644 Binary files a/public/images/pokemon/icons/1/98s.png and b/public/images/pokemon/icons/1/98s.png differ diff --git a/public/images/pokemon/icons/1/99-gigantamax.png b/public/images/pokemon/icons/1/99-gigantamax.png index 733bb3bb5f7..ff93c39b183 100644 Binary files a/public/images/pokemon/icons/1/99-gigantamax.png and b/public/images/pokemon/icons/1/99-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/99.png b/public/images/pokemon/icons/1/99.png index 32dd1985845..b546243ea0c 100644 Binary files a/public/images/pokemon/icons/1/99.png and b/public/images/pokemon/icons/1/99.png differ diff --git a/public/images/pokemon/icons/1/99s-gigantamax.png b/public/images/pokemon/icons/1/99s-gigantamax.png index a4e434a6c61..6ac26c44ae6 100644 Binary files a/public/images/pokemon/icons/1/99s-gigantamax.png and b/public/images/pokemon/icons/1/99s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/99s.png b/public/images/pokemon/icons/1/99s.png index 5d4f0a5dcec..5aeb031cff8 100644 Binary files a/public/images/pokemon/icons/1/99s.png and b/public/images/pokemon/icons/1/99s.png differ diff --git a/public/images/pokemon/icons/1/9s-gigantamax.png b/public/images/pokemon/icons/1/9s-gigantamax.png index 607d93275f7..390117d147d 100644 Binary files a/public/images/pokemon/icons/1/9s-gigantamax.png and b/public/images/pokemon/icons/1/9s-gigantamax.png differ diff --git a/public/images/pokemon/icons/1/9s-mega.png b/public/images/pokemon/icons/1/9s-mega.png index d0f6d62460c..a4afc08b50d 100644 Binary files a/public/images/pokemon/icons/1/9s-mega.png and b/public/images/pokemon/icons/1/9s-mega.png differ diff --git a/public/images/pokemon/icons/1/9s.png b/public/images/pokemon/icons/1/9s.png index c9ba6aef4f6..44a949d86a9 100644 Binary files a/public/images/pokemon/icons/1/9s.png and b/public/images/pokemon/icons/1/9s.png differ diff --git a/public/images/pokemon/icons/2/152.png b/public/images/pokemon/icons/2/152.png index 182e03c7921..da42e4946e4 100644 Binary files a/public/images/pokemon/icons/2/152.png and b/public/images/pokemon/icons/2/152.png differ diff --git a/public/images/pokemon/icons/2/152s.png b/public/images/pokemon/icons/2/152s.png index 73da2638a18..850d8fbe3fd 100644 Binary files a/public/images/pokemon/icons/2/152s.png and b/public/images/pokemon/icons/2/152s.png differ diff --git a/public/images/pokemon/icons/2/153.png b/public/images/pokemon/icons/2/153.png index bc7b5ec4b86..2b12e1c6366 100644 Binary files a/public/images/pokemon/icons/2/153.png and b/public/images/pokemon/icons/2/153.png differ diff --git a/public/images/pokemon/icons/2/153s.png b/public/images/pokemon/icons/2/153s.png index 6c8b4b274eb..d0a3633210e 100644 Binary files a/public/images/pokemon/icons/2/153s.png and b/public/images/pokemon/icons/2/153s.png differ diff --git a/public/images/pokemon/icons/2/154-f.png b/public/images/pokemon/icons/2/154-f.png index 6481cdd8a00..b4cd5f1da1e 100644 Binary files a/public/images/pokemon/icons/2/154-f.png and b/public/images/pokemon/icons/2/154-f.png differ diff --git a/public/images/pokemon/icons/2/154.png b/public/images/pokemon/icons/2/154.png index 6481cdd8a00..b4cd5f1da1e 100644 Binary files a/public/images/pokemon/icons/2/154.png and b/public/images/pokemon/icons/2/154.png differ diff --git a/public/images/pokemon/icons/2/154s-f.png b/public/images/pokemon/icons/2/154s-f.png index 44ded711dcd..ada1b9e3de9 100644 Binary files a/public/images/pokemon/icons/2/154s-f.png and b/public/images/pokemon/icons/2/154s-f.png differ diff --git a/public/images/pokemon/icons/2/154s.png b/public/images/pokemon/icons/2/154s.png index 44ded711dcd..ada1b9e3de9 100644 Binary files a/public/images/pokemon/icons/2/154s.png and b/public/images/pokemon/icons/2/154s.png differ diff --git a/public/images/pokemon/icons/2/155.png b/public/images/pokemon/icons/2/155.png index be0af2e9610..d30d6055202 100644 Binary files a/public/images/pokemon/icons/2/155.png and b/public/images/pokemon/icons/2/155.png differ diff --git a/public/images/pokemon/icons/2/155s.png b/public/images/pokemon/icons/2/155s.png index 139e8fba872..bb914f06eca 100644 Binary files a/public/images/pokemon/icons/2/155s.png and b/public/images/pokemon/icons/2/155s.png differ diff --git a/public/images/pokemon/icons/2/156.png b/public/images/pokemon/icons/2/156.png index c627c0fe21c..c4196566ea1 100644 Binary files a/public/images/pokemon/icons/2/156.png and b/public/images/pokemon/icons/2/156.png differ diff --git a/public/images/pokemon/icons/2/156s.png b/public/images/pokemon/icons/2/156s.png index 44e95f4c193..6aab570c1c8 100644 Binary files a/public/images/pokemon/icons/2/156s.png and b/public/images/pokemon/icons/2/156s.png differ diff --git a/public/images/pokemon/icons/2/157.png b/public/images/pokemon/icons/2/157.png index 89193590faa..0d015b281e9 100644 Binary files a/public/images/pokemon/icons/2/157.png and b/public/images/pokemon/icons/2/157.png differ diff --git a/public/images/pokemon/icons/2/157s.png b/public/images/pokemon/icons/2/157s.png index 9a2f7a40a82..09631b8ef40 100644 Binary files a/public/images/pokemon/icons/2/157s.png and b/public/images/pokemon/icons/2/157s.png differ diff --git a/public/images/pokemon/icons/2/158.png b/public/images/pokemon/icons/2/158.png index 492b82a8756..8846b5355e1 100644 Binary files a/public/images/pokemon/icons/2/158.png and b/public/images/pokemon/icons/2/158.png differ diff --git a/public/images/pokemon/icons/2/158s.png b/public/images/pokemon/icons/2/158s.png index ea8e5a9912d..b5cdd8f6b74 100644 Binary files a/public/images/pokemon/icons/2/158s.png and b/public/images/pokemon/icons/2/158s.png differ diff --git a/public/images/pokemon/icons/2/159.png b/public/images/pokemon/icons/2/159.png index 23c749d84fb..4349a7dc084 100644 Binary files a/public/images/pokemon/icons/2/159.png and b/public/images/pokemon/icons/2/159.png differ diff --git a/public/images/pokemon/icons/2/159s.png b/public/images/pokemon/icons/2/159s.png index c1ee168ff39..7d3867940ea 100644 Binary files a/public/images/pokemon/icons/2/159s.png and b/public/images/pokemon/icons/2/159s.png differ diff --git a/public/images/pokemon/icons/2/160.png b/public/images/pokemon/icons/2/160.png index adc289a1d6e..7165a43059e 100644 Binary files a/public/images/pokemon/icons/2/160.png and b/public/images/pokemon/icons/2/160.png differ diff --git a/public/images/pokemon/icons/2/160s.png b/public/images/pokemon/icons/2/160s.png index ad001e010b4..04db49d52d7 100644 Binary files a/public/images/pokemon/icons/2/160s.png and b/public/images/pokemon/icons/2/160s.png differ diff --git a/public/images/pokemon/icons/2/161.png b/public/images/pokemon/icons/2/161.png index 8887ceca0c4..c1438ede3f5 100644 Binary files a/public/images/pokemon/icons/2/161.png and b/public/images/pokemon/icons/2/161.png differ diff --git a/public/images/pokemon/icons/2/161s.png b/public/images/pokemon/icons/2/161s.png index abd550714c6..f815db45b90 100644 Binary files a/public/images/pokemon/icons/2/161s.png and b/public/images/pokemon/icons/2/161s.png differ diff --git a/public/images/pokemon/icons/2/162.png b/public/images/pokemon/icons/2/162.png index 9422bc9ef55..20b6a13d219 100644 Binary files a/public/images/pokemon/icons/2/162.png and b/public/images/pokemon/icons/2/162.png differ diff --git a/public/images/pokemon/icons/2/162s.png b/public/images/pokemon/icons/2/162s.png index f977bc4380a..e43bc22e6ed 100644 Binary files a/public/images/pokemon/icons/2/162s.png and b/public/images/pokemon/icons/2/162s.png differ diff --git a/public/images/pokemon/icons/2/163.png b/public/images/pokemon/icons/2/163.png index 44ad9f9ce75..3a2e6995c25 100644 Binary files a/public/images/pokemon/icons/2/163.png and b/public/images/pokemon/icons/2/163.png differ diff --git a/public/images/pokemon/icons/2/163s.png b/public/images/pokemon/icons/2/163s.png index 13b630ca2a1..293501179e0 100644 Binary files a/public/images/pokemon/icons/2/163s.png and b/public/images/pokemon/icons/2/163s.png differ diff --git a/public/images/pokemon/icons/2/164.png b/public/images/pokemon/icons/2/164.png index 2150ab0d644..60d3e688099 100644 Binary files a/public/images/pokemon/icons/2/164.png and b/public/images/pokemon/icons/2/164.png differ diff --git a/public/images/pokemon/icons/2/164s.png b/public/images/pokemon/icons/2/164s.png index 3cb1973187f..e5e06776d3f 100644 Binary files a/public/images/pokemon/icons/2/164s.png and b/public/images/pokemon/icons/2/164s.png differ diff --git a/public/images/pokemon/icons/2/165.png b/public/images/pokemon/icons/2/165.png index 65f9e04784d..f6c4b1353c5 100644 Binary files a/public/images/pokemon/icons/2/165.png and b/public/images/pokemon/icons/2/165.png differ diff --git a/public/images/pokemon/icons/2/165s.png b/public/images/pokemon/icons/2/165s.png index 210e9116b21..c7a8851286a 100644 Binary files a/public/images/pokemon/icons/2/165s.png and b/public/images/pokemon/icons/2/165s.png differ diff --git a/public/images/pokemon/icons/2/166.png b/public/images/pokemon/icons/2/166.png index 6c438dd8e58..2be3dbc7064 100644 Binary files a/public/images/pokemon/icons/2/166.png and b/public/images/pokemon/icons/2/166.png differ diff --git a/public/images/pokemon/icons/2/166s.png b/public/images/pokemon/icons/2/166s.png index 08e9f2df96c..ce3ea20c9f4 100644 Binary files a/public/images/pokemon/icons/2/166s.png and b/public/images/pokemon/icons/2/166s.png differ diff --git a/public/images/pokemon/icons/2/167.png b/public/images/pokemon/icons/2/167.png index b5f52abf26e..ed095e81db9 100644 Binary files a/public/images/pokemon/icons/2/167.png and b/public/images/pokemon/icons/2/167.png differ diff --git a/public/images/pokemon/icons/2/167s.png b/public/images/pokemon/icons/2/167s.png index 1d6c7cc4002..8fe063f6e3f 100644 Binary files a/public/images/pokemon/icons/2/167s.png and b/public/images/pokemon/icons/2/167s.png differ diff --git a/public/images/pokemon/icons/2/168.png b/public/images/pokemon/icons/2/168.png index 81e6a10aeda..69d636538da 100644 Binary files a/public/images/pokemon/icons/2/168.png and b/public/images/pokemon/icons/2/168.png differ diff --git a/public/images/pokemon/icons/2/168s.png b/public/images/pokemon/icons/2/168s.png index 389147a31ca..48f42cf45f3 100644 Binary files a/public/images/pokemon/icons/2/168s.png and b/public/images/pokemon/icons/2/168s.png differ diff --git a/public/images/pokemon/icons/2/169.png b/public/images/pokemon/icons/2/169.png index 4a83c1a3f51..bea38fd2cae 100644 Binary files a/public/images/pokemon/icons/2/169.png and b/public/images/pokemon/icons/2/169.png differ diff --git a/public/images/pokemon/icons/2/169s.png b/public/images/pokemon/icons/2/169s.png index 5d27b5a5b00..e5366297b36 100644 Binary files a/public/images/pokemon/icons/2/169s.png and b/public/images/pokemon/icons/2/169s.png differ diff --git a/public/images/pokemon/icons/2/170.png b/public/images/pokemon/icons/2/170.png index 7b558c81443..6f7f074c85d 100644 Binary files a/public/images/pokemon/icons/2/170.png and b/public/images/pokemon/icons/2/170.png differ diff --git a/public/images/pokemon/icons/2/170s.png b/public/images/pokemon/icons/2/170s.png index 8f55d6a6f1a..a142d14388d 100644 Binary files a/public/images/pokemon/icons/2/170s.png and b/public/images/pokemon/icons/2/170s.png differ diff --git a/public/images/pokemon/icons/2/171.png b/public/images/pokemon/icons/2/171.png index b561df1c9d6..dfb8f0eae28 100644 Binary files a/public/images/pokemon/icons/2/171.png and b/public/images/pokemon/icons/2/171.png differ diff --git a/public/images/pokemon/icons/2/171s.png b/public/images/pokemon/icons/2/171s.png index bfefddfc44a..7552aa81c57 100644 Binary files a/public/images/pokemon/icons/2/171s.png and b/public/images/pokemon/icons/2/171s.png differ diff --git a/public/images/pokemon/icons/2/172-spiky.png b/public/images/pokemon/icons/2/172-spiky.png index 40e0ea45e1d..15643b3cf40 100644 Binary files a/public/images/pokemon/icons/2/172-spiky.png and b/public/images/pokemon/icons/2/172-spiky.png differ diff --git a/public/images/pokemon/icons/2/172.png b/public/images/pokemon/icons/2/172.png index da5ee2f0f50..149d3824a4d 100644 Binary files a/public/images/pokemon/icons/2/172.png and b/public/images/pokemon/icons/2/172.png differ diff --git a/public/images/pokemon/icons/2/172s-spiky.png b/public/images/pokemon/icons/2/172s-spiky.png index 6d29bb7accb..7086d72fe5a 100644 Binary files a/public/images/pokemon/icons/2/172s-spiky.png and b/public/images/pokemon/icons/2/172s-spiky.png differ diff --git a/public/images/pokemon/icons/2/172s.png b/public/images/pokemon/icons/2/172s.png index a1def7089ba..8f630bc11d9 100644 Binary files a/public/images/pokemon/icons/2/172s.png and b/public/images/pokemon/icons/2/172s.png differ diff --git a/public/images/pokemon/icons/2/173.png b/public/images/pokemon/icons/2/173.png index e1b8255b8bb..00c4e99d57e 100644 Binary files a/public/images/pokemon/icons/2/173.png and b/public/images/pokemon/icons/2/173.png differ diff --git a/public/images/pokemon/icons/2/173s.png b/public/images/pokemon/icons/2/173s.png index b1a9a7e9ba6..558357f3b79 100644 Binary files a/public/images/pokemon/icons/2/173s.png and b/public/images/pokemon/icons/2/173s.png differ diff --git a/public/images/pokemon/icons/2/174.png b/public/images/pokemon/icons/2/174.png index ed99aa6c7f2..8fd146dec43 100644 Binary files a/public/images/pokemon/icons/2/174.png and b/public/images/pokemon/icons/2/174.png differ diff --git a/public/images/pokemon/icons/2/174s.png b/public/images/pokemon/icons/2/174s.png index ad11e7830cc..42d476e5937 100644 Binary files a/public/images/pokemon/icons/2/174s.png and b/public/images/pokemon/icons/2/174s.png differ diff --git a/public/images/pokemon/icons/2/175.png b/public/images/pokemon/icons/2/175.png index 4f30cec4831..1992f22e415 100644 Binary files a/public/images/pokemon/icons/2/175.png and b/public/images/pokemon/icons/2/175.png differ diff --git a/public/images/pokemon/icons/2/175s.png b/public/images/pokemon/icons/2/175s.png index 43850133fb1..77abf493a20 100644 Binary files a/public/images/pokemon/icons/2/175s.png and b/public/images/pokemon/icons/2/175s.png differ diff --git a/public/images/pokemon/icons/2/176.png b/public/images/pokemon/icons/2/176.png index 0e554f37c78..22890125e86 100644 Binary files a/public/images/pokemon/icons/2/176.png and b/public/images/pokemon/icons/2/176.png differ diff --git a/public/images/pokemon/icons/2/176s.png b/public/images/pokemon/icons/2/176s.png index cc290025349..071309908c8 100644 Binary files a/public/images/pokemon/icons/2/176s.png and b/public/images/pokemon/icons/2/176s.png differ diff --git a/public/images/pokemon/icons/2/177.png b/public/images/pokemon/icons/2/177.png index 47fb2256bf2..a254942edae 100644 Binary files a/public/images/pokemon/icons/2/177.png and b/public/images/pokemon/icons/2/177.png differ diff --git a/public/images/pokemon/icons/2/177s.png b/public/images/pokemon/icons/2/177s.png index 62e1b18167e..3786c9792d8 100644 Binary files a/public/images/pokemon/icons/2/177s.png and b/public/images/pokemon/icons/2/177s.png differ diff --git a/public/images/pokemon/icons/2/178.png b/public/images/pokemon/icons/2/178.png index 9f4b97ffc1c..9da32ac30d6 100644 Binary files a/public/images/pokemon/icons/2/178.png and b/public/images/pokemon/icons/2/178.png differ diff --git a/public/images/pokemon/icons/2/178s.png b/public/images/pokemon/icons/2/178s.png index 55edd478de2..940ea826dde 100644 Binary files a/public/images/pokemon/icons/2/178s.png and b/public/images/pokemon/icons/2/178s.png differ diff --git a/public/images/pokemon/icons/2/179.png b/public/images/pokemon/icons/2/179.png index 33a4d2fec18..b036e24bb75 100644 Binary files a/public/images/pokemon/icons/2/179.png and b/public/images/pokemon/icons/2/179.png differ diff --git a/public/images/pokemon/icons/2/179s.png b/public/images/pokemon/icons/2/179s.png index 0181f1087b0..cc310d7af52 100644 Binary files a/public/images/pokemon/icons/2/179s.png and b/public/images/pokemon/icons/2/179s.png differ diff --git a/public/images/pokemon/icons/2/180.png b/public/images/pokemon/icons/2/180.png index 373f050309a..568101e8487 100644 Binary files a/public/images/pokemon/icons/2/180.png and b/public/images/pokemon/icons/2/180.png differ diff --git a/public/images/pokemon/icons/2/180s.png b/public/images/pokemon/icons/2/180s.png index 77f29e6fd94..2618546ab4b 100644 Binary files a/public/images/pokemon/icons/2/180s.png and b/public/images/pokemon/icons/2/180s.png differ diff --git a/public/images/pokemon/icons/2/181-mega.png b/public/images/pokemon/icons/2/181-mega.png index 93d43658f7c..6113effc9dc 100644 Binary files a/public/images/pokemon/icons/2/181-mega.png and b/public/images/pokemon/icons/2/181-mega.png differ diff --git a/public/images/pokemon/icons/2/181.png b/public/images/pokemon/icons/2/181.png index 42b699c669a..f7aaecd249d 100644 Binary files a/public/images/pokemon/icons/2/181.png and b/public/images/pokemon/icons/2/181.png differ diff --git a/public/images/pokemon/icons/2/181s-mega.png b/public/images/pokemon/icons/2/181s-mega.png index 58ddca90c80..7b2aa827896 100644 Binary files a/public/images/pokemon/icons/2/181s-mega.png and b/public/images/pokemon/icons/2/181s-mega.png differ diff --git a/public/images/pokemon/icons/2/181s.png b/public/images/pokemon/icons/2/181s.png index 075ccb57b90..602e3a969d1 100644 Binary files a/public/images/pokemon/icons/2/181s.png and b/public/images/pokemon/icons/2/181s.png differ diff --git a/public/images/pokemon/icons/2/182.png b/public/images/pokemon/icons/2/182.png index 113e98c48f6..8aa03f04dc5 100644 Binary files a/public/images/pokemon/icons/2/182.png and b/public/images/pokemon/icons/2/182.png differ diff --git a/public/images/pokemon/icons/2/182s.png b/public/images/pokemon/icons/2/182s.png index 6969d90ee10..24f94e8e8ec 100644 Binary files a/public/images/pokemon/icons/2/182s.png and b/public/images/pokemon/icons/2/182s.png differ diff --git a/public/images/pokemon/icons/2/183.png b/public/images/pokemon/icons/2/183.png index a385269289c..11d24c658ce 100644 Binary files a/public/images/pokemon/icons/2/183.png and b/public/images/pokemon/icons/2/183.png differ diff --git a/public/images/pokemon/icons/2/183s.png b/public/images/pokemon/icons/2/183s.png index f6c00748c8a..5e0b5f958db 100644 Binary files a/public/images/pokemon/icons/2/183s.png and b/public/images/pokemon/icons/2/183s.png differ diff --git a/public/images/pokemon/icons/2/184.png b/public/images/pokemon/icons/2/184.png index 258b47c151c..e94e7fbea46 100644 Binary files a/public/images/pokemon/icons/2/184.png and b/public/images/pokemon/icons/2/184.png differ diff --git a/public/images/pokemon/icons/2/184s.png b/public/images/pokemon/icons/2/184s.png index 2d67f39a97d..c0521b9cb9b 100644 Binary files a/public/images/pokemon/icons/2/184s.png and b/public/images/pokemon/icons/2/184s.png differ diff --git a/public/images/pokemon/icons/2/185.png b/public/images/pokemon/icons/2/185.png index a86016fbce1..24a322e430e 100644 Binary files a/public/images/pokemon/icons/2/185.png and b/public/images/pokemon/icons/2/185.png differ diff --git a/public/images/pokemon/icons/2/185s.png b/public/images/pokemon/icons/2/185s.png index 0ed6505d90c..5b476ac614f 100644 Binary files a/public/images/pokemon/icons/2/185s.png and b/public/images/pokemon/icons/2/185s.png differ diff --git a/public/images/pokemon/icons/2/186.png b/public/images/pokemon/icons/2/186.png index 1f514f39518..925aa848a2f 100644 Binary files a/public/images/pokemon/icons/2/186.png and b/public/images/pokemon/icons/2/186.png differ diff --git a/public/images/pokemon/icons/2/186s.png b/public/images/pokemon/icons/2/186s.png index 3c68835ad5e..85de74919c5 100644 Binary files a/public/images/pokemon/icons/2/186s.png and b/public/images/pokemon/icons/2/186s.png differ diff --git a/public/images/pokemon/icons/2/187.png b/public/images/pokemon/icons/2/187.png index d29fd825037..bae27c398fe 100644 Binary files a/public/images/pokemon/icons/2/187.png and b/public/images/pokemon/icons/2/187.png differ diff --git a/public/images/pokemon/icons/2/187s.png b/public/images/pokemon/icons/2/187s.png index 488571f31fc..76c18c01764 100644 Binary files a/public/images/pokemon/icons/2/187s.png and b/public/images/pokemon/icons/2/187s.png differ diff --git a/public/images/pokemon/icons/2/188.png b/public/images/pokemon/icons/2/188.png index ca937efbf98..e7c0e6bc2d4 100644 Binary files a/public/images/pokemon/icons/2/188.png and b/public/images/pokemon/icons/2/188.png differ diff --git a/public/images/pokemon/icons/2/188s.png b/public/images/pokemon/icons/2/188s.png index cbc920a293d..4c28f1b08e4 100644 Binary files a/public/images/pokemon/icons/2/188s.png and b/public/images/pokemon/icons/2/188s.png differ diff --git a/public/images/pokemon/icons/2/189.png b/public/images/pokemon/icons/2/189.png index 8595243b3a3..d79ce69b5b1 100644 Binary files a/public/images/pokemon/icons/2/189.png and b/public/images/pokemon/icons/2/189.png differ diff --git a/public/images/pokemon/icons/2/189s.png b/public/images/pokemon/icons/2/189s.png index a3beede830d..7a60924cbe9 100644 Binary files a/public/images/pokemon/icons/2/189s.png and b/public/images/pokemon/icons/2/189s.png differ diff --git a/public/images/pokemon/icons/2/190.png b/public/images/pokemon/icons/2/190.png index 1db25331440..68c74992a6a 100644 Binary files a/public/images/pokemon/icons/2/190.png and b/public/images/pokemon/icons/2/190.png differ diff --git a/public/images/pokemon/icons/2/190_1.png b/public/images/pokemon/icons/2/190_1.png index e7de93f7994..583b72f351f 100644 Binary files a/public/images/pokemon/icons/2/190_1.png and b/public/images/pokemon/icons/2/190_1.png differ diff --git a/public/images/pokemon/icons/2/190s.png b/public/images/pokemon/icons/2/190s.png index 87a05d218af..b336e41bf79 100644 Binary files a/public/images/pokemon/icons/2/190s.png and b/public/images/pokemon/icons/2/190s.png differ diff --git a/public/images/pokemon/icons/2/191.png b/public/images/pokemon/icons/2/191.png index 0b2f1b5599e..589bd606340 100644 Binary files a/public/images/pokemon/icons/2/191.png and b/public/images/pokemon/icons/2/191.png differ diff --git a/public/images/pokemon/icons/2/191s.png b/public/images/pokemon/icons/2/191s.png index 59f3d958ac4..38a98db3672 100644 Binary files a/public/images/pokemon/icons/2/191s.png and b/public/images/pokemon/icons/2/191s.png differ diff --git a/public/images/pokemon/icons/2/192.png b/public/images/pokemon/icons/2/192.png index 80a108e05b1..d6177669720 100644 Binary files a/public/images/pokemon/icons/2/192.png and b/public/images/pokemon/icons/2/192.png differ diff --git a/public/images/pokemon/icons/2/192s.png b/public/images/pokemon/icons/2/192s.png index 3677a26c377..ebe0d633669 100644 Binary files a/public/images/pokemon/icons/2/192s.png and b/public/images/pokemon/icons/2/192s.png differ diff --git a/public/images/pokemon/icons/2/193.png b/public/images/pokemon/icons/2/193.png index 798f59f7614..a73c17a90b3 100644 Binary files a/public/images/pokemon/icons/2/193.png and b/public/images/pokemon/icons/2/193.png differ diff --git a/public/images/pokemon/icons/2/193s.png b/public/images/pokemon/icons/2/193s.png index 1c9720d793f..8af19351323 100644 Binary files a/public/images/pokemon/icons/2/193s.png and b/public/images/pokemon/icons/2/193s.png differ diff --git a/public/images/pokemon/icons/2/194.png b/public/images/pokemon/icons/2/194.png index e594731f0ab..7ba80ff5b11 100644 Binary files a/public/images/pokemon/icons/2/194.png and b/public/images/pokemon/icons/2/194.png differ diff --git a/public/images/pokemon/icons/2/194s.png b/public/images/pokemon/icons/2/194s.png index 4cce72da124..476413d336c 100644 Binary files a/public/images/pokemon/icons/2/194s.png and b/public/images/pokemon/icons/2/194s.png differ diff --git a/public/images/pokemon/icons/2/195.png b/public/images/pokemon/icons/2/195.png index 7ae806e61f6..2d7c00d2c44 100644 Binary files a/public/images/pokemon/icons/2/195.png and b/public/images/pokemon/icons/2/195.png differ diff --git a/public/images/pokemon/icons/2/195s.png b/public/images/pokemon/icons/2/195s.png index 4deb2180964..dd26df134f3 100644 Binary files a/public/images/pokemon/icons/2/195s.png and b/public/images/pokemon/icons/2/195s.png differ diff --git a/public/images/pokemon/icons/2/196.png b/public/images/pokemon/icons/2/196.png index c72b704673f..aa971474afc 100644 Binary files a/public/images/pokemon/icons/2/196.png and b/public/images/pokemon/icons/2/196.png differ diff --git a/public/images/pokemon/icons/2/196s.png b/public/images/pokemon/icons/2/196s.png index 68e3b51c380..0f2b241a46e 100644 Binary files a/public/images/pokemon/icons/2/196s.png and b/public/images/pokemon/icons/2/196s.png differ diff --git a/public/images/pokemon/icons/2/197.png b/public/images/pokemon/icons/2/197.png index 33d1ebb6156..c17ea923cad 100644 Binary files a/public/images/pokemon/icons/2/197.png and b/public/images/pokemon/icons/2/197.png differ diff --git a/public/images/pokemon/icons/2/197s.png b/public/images/pokemon/icons/2/197s.png index 74495845134..4a673ab4a7e 100644 Binary files a/public/images/pokemon/icons/2/197s.png and b/public/images/pokemon/icons/2/197s.png differ diff --git a/public/images/pokemon/icons/2/198-f.png b/public/images/pokemon/icons/2/198-f.png index bfc3e9bea4c..47f1eb6c389 100644 Binary files a/public/images/pokemon/icons/2/198-f.png and b/public/images/pokemon/icons/2/198-f.png differ diff --git a/public/images/pokemon/icons/2/198.png b/public/images/pokemon/icons/2/198.png index bfc3e9bea4c..47f1eb6c389 100644 Binary files a/public/images/pokemon/icons/2/198.png and b/public/images/pokemon/icons/2/198.png differ diff --git a/public/images/pokemon/icons/2/198s-f.png b/public/images/pokemon/icons/2/198s-f.png index ccc258cafac..015939f828a 100644 Binary files a/public/images/pokemon/icons/2/198s-f.png and b/public/images/pokemon/icons/2/198s-f.png differ diff --git a/public/images/pokemon/icons/2/198s.png b/public/images/pokemon/icons/2/198s.png index ccc258cafac..015939f828a 100644 Binary files a/public/images/pokemon/icons/2/198s.png and b/public/images/pokemon/icons/2/198s.png differ diff --git a/public/images/pokemon/icons/2/199.png b/public/images/pokemon/icons/2/199.png index 7403389f8e5..b27f141d9a3 100644 Binary files a/public/images/pokemon/icons/2/199.png and b/public/images/pokemon/icons/2/199.png differ diff --git a/public/images/pokemon/icons/2/199s.png b/public/images/pokemon/icons/2/199s.png index a84db4b67e9..77479bb15d2 100644 Binary files a/public/images/pokemon/icons/2/199s.png and b/public/images/pokemon/icons/2/199s.png differ diff --git a/public/images/pokemon/icons/2/200.png b/public/images/pokemon/icons/2/200.png index beb2ec13359..16caaa36ca6 100644 Binary files a/public/images/pokemon/icons/2/200.png and b/public/images/pokemon/icons/2/200.png differ diff --git a/public/images/pokemon/icons/2/200s.png b/public/images/pokemon/icons/2/200s.png index e6fda8f069d..46b26e4f4d9 100644 Binary files a/public/images/pokemon/icons/2/200s.png and b/public/images/pokemon/icons/2/200s.png differ diff --git a/public/images/pokemon/icons/2/201-b.png b/public/images/pokemon/icons/2/201-b.png index 49d90695ee0..505385b72e4 100644 Binary files a/public/images/pokemon/icons/2/201-b.png and b/public/images/pokemon/icons/2/201-b.png differ diff --git a/public/images/pokemon/icons/2/201-c.png b/public/images/pokemon/icons/2/201-c.png index 21aa384318f..2461c2e0229 100644 Binary files a/public/images/pokemon/icons/2/201-c.png and b/public/images/pokemon/icons/2/201-c.png differ diff --git a/public/images/pokemon/icons/2/201-j.png b/public/images/pokemon/icons/2/201-j.png index dc03639582b..a4a96b87430 100644 Binary files a/public/images/pokemon/icons/2/201-j.png and b/public/images/pokemon/icons/2/201-j.png differ diff --git a/public/images/pokemon/icons/2/201-p.png b/public/images/pokemon/icons/2/201-p.png index a3012470eab..c253c9256f3 100644 Binary files a/public/images/pokemon/icons/2/201-p.png and b/public/images/pokemon/icons/2/201-p.png differ diff --git a/public/images/pokemon/icons/2/201-q.png b/public/images/pokemon/icons/2/201-q.png index 6a5637aad85..b4e445aec27 100644 Binary files a/public/images/pokemon/icons/2/201-q.png and b/public/images/pokemon/icons/2/201-q.png differ diff --git a/public/images/pokemon/icons/2/201-u.png b/public/images/pokemon/icons/2/201-u.png index 7b0029dd6b6..2486307af13 100644 Binary files a/public/images/pokemon/icons/2/201-u.png and b/public/images/pokemon/icons/2/201-u.png differ diff --git a/public/images/pokemon/icons/2/201s-a.png b/public/images/pokemon/icons/2/201s-a.png index a14734a6678..29bb2350a72 100644 Binary files a/public/images/pokemon/icons/2/201s-a.png and b/public/images/pokemon/icons/2/201s-a.png differ diff --git a/public/images/pokemon/icons/2/201s-b.png b/public/images/pokemon/icons/2/201s-b.png index cacbeae1779..5d6e9c00d73 100644 Binary files a/public/images/pokemon/icons/2/201s-b.png and b/public/images/pokemon/icons/2/201s-b.png differ diff --git a/public/images/pokemon/icons/2/201s-c.png b/public/images/pokemon/icons/2/201s-c.png index 57d3cd885ac..6fabea55659 100644 Binary files a/public/images/pokemon/icons/2/201s-c.png and b/public/images/pokemon/icons/2/201s-c.png differ diff --git a/public/images/pokemon/icons/2/201s-d.png b/public/images/pokemon/icons/2/201s-d.png index 4f8d0d054ef..482778a715b 100644 Binary files a/public/images/pokemon/icons/2/201s-d.png and b/public/images/pokemon/icons/2/201s-d.png differ diff --git a/public/images/pokemon/icons/2/201s-e.png b/public/images/pokemon/icons/2/201s-e.png index c61351a584e..3b3df571963 100644 Binary files a/public/images/pokemon/icons/2/201s-e.png and b/public/images/pokemon/icons/2/201s-e.png differ diff --git a/public/images/pokemon/icons/2/201s-exclamation.png b/public/images/pokemon/icons/2/201s-exclamation.png index fea8c64084f..b14185c615c 100644 Binary files a/public/images/pokemon/icons/2/201s-exclamation.png and b/public/images/pokemon/icons/2/201s-exclamation.png differ diff --git a/public/images/pokemon/icons/2/201s-f.png b/public/images/pokemon/icons/2/201s-f.png index db154473202..6c883f86106 100644 Binary files a/public/images/pokemon/icons/2/201s-f.png and b/public/images/pokemon/icons/2/201s-f.png differ diff --git a/public/images/pokemon/icons/2/201s-g.png b/public/images/pokemon/icons/2/201s-g.png index 7841cf803ed..0942a8ace37 100644 Binary files a/public/images/pokemon/icons/2/201s-g.png and b/public/images/pokemon/icons/2/201s-g.png differ diff --git a/public/images/pokemon/icons/2/201s-h.png b/public/images/pokemon/icons/2/201s-h.png index 2bd8c93e2ea..fab587ba8ae 100644 Binary files a/public/images/pokemon/icons/2/201s-h.png and b/public/images/pokemon/icons/2/201s-h.png differ diff --git a/public/images/pokemon/icons/2/201s-i.png b/public/images/pokemon/icons/2/201s-i.png index d97dea114c7..fd18952df92 100644 Binary files a/public/images/pokemon/icons/2/201s-i.png and b/public/images/pokemon/icons/2/201s-i.png differ diff --git a/public/images/pokemon/icons/2/201s-j.png b/public/images/pokemon/icons/2/201s-j.png index 20784dda7ea..17446214d0e 100644 Binary files a/public/images/pokemon/icons/2/201s-j.png and b/public/images/pokemon/icons/2/201s-j.png differ diff --git a/public/images/pokemon/icons/2/201s-k.png b/public/images/pokemon/icons/2/201s-k.png index 7e7a64c7ea2..3038412934e 100644 Binary files a/public/images/pokemon/icons/2/201s-k.png and b/public/images/pokemon/icons/2/201s-k.png differ diff --git a/public/images/pokemon/icons/2/201s-l.png b/public/images/pokemon/icons/2/201s-l.png index bbfa18ea0d1..f1f047ad81f 100644 Binary files a/public/images/pokemon/icons/2/201s-l.png and b/public/images/pokemon/icons/2/201s-l.png differ diff --git a/public/images/pokemon/icons/2/201s-m.png b/public/images/pokemon/icons/2/201s-m.png index e296641d3ce..a04f37c9e52 100644 Binary files a/public/images/pokemon/icons/2/201s-m.png and b/public/images/pokemon/icons/2/201s-m.png differ diff --git a/public/images/pokemon/icons/2/201s-n.png b/public/images/pokemon/icons/2/201s-n.png index 039d45e81c0..770afe50432 100644 Binary files a/public/images/pokemon/icons/2/201s-n.png and b/public/images/pokemon/icons/2/201s-n.png differ diff --git a/public/images/pokemon/icons/2/201s-o.png b/public/images/pokemon/icons/2/201s-o.png index 945f5debd77..074a3c5e83f 100644 Binary files a/public/images/pokemon/icons/2/201s-o.png and b/public/images/pokemon/icons/2/201s-o.png differ diff --git a/public/images/pokemon/icons/2/201s-p.png b/public/images/pokemon/icons/2/201s-p.png index 9b0a1e486b8..56bed1d5bb4 100644 Binary files a/public/images/pokemon/icons/2/201s-p.png and b/public/images/pokemon/icons/2/201s-p.png differ diff --git a/public/images/pokemon/icons/2/201s-q.png b/public/images/pokemon/icons/2/201s-q.png index bc2b03fdbb6..fd3b1ac4470 100644 Binary files a/public/images/pokemon/icons/2/201s-q.png and b/public/images/pokemon/icons/2/201s-q.png differ diff --git a/public/images/pokemon/icons/2/201s-question.png b/public/images/pokemon/icons/2/201s-question.png index 30196e52928..0067d2dc2cf 100644 Binary files a/public/images/pokemon/icons/2/201s-question.png and b/public/images/pokemon/icons/2/201s-question.png differ diff --git a/public/images/pokemon/icons/2/201s-r.png b/public/images/pokemon/icons/2/201s-r.png index 68d3e69aabb..a5ba81d972e 100644 Binary files a/public/images/pokemon/icons/2/201s-r.png and b/public/images/pokemon/icons/2/201s-r.png differ diff --git a/public/images/pokemon/icons/2/201s-s.png b/public/images/pokemon/icons/2/201s-s.png index 4c94677fb60..fff1db3b5e1 100644 Binary files a/public/images/pokemon/icons/2/201s-s.png and b/public/images/pokemon/icons/2/201s-s.png differ diff --git a/public/images/pokemon/icons/2/201s-t.png b/public/images/pokemon/icons/2/201s-t.png index 901cc23af18..0c793777320 100644 Binary files a/public/images/pokemon/icons/2/201s-t.png and b/public/images/pokemon/icons/2/201s-t.png differ diff --git a/public/images/pokemon/icons/2/201s-u.png b/public/images/pokemon/icons/2/201s-u.png index 31a126ee83d..80ccdee4dfa 100644 Binary files a/public/images/pokemon/icons/2/201s-u.png and b/public/images/pokemon/icons/2/201s-u.png differ diff --git a/public/images/pokemon/icons/2/201s-v.png b/public/images/pokemon/icons/2/201s-v.png index 159a66d300c..3a2fe3c05f5 100644 Binary files a/public/images/pokemon/icons/2/201s-v.png and b/public/images/pokemon/icons/2/201s-v.png differ diff --git a/public/images/pokemon/icons/2/201s-w.png b/public/images/pokemon/icons/2/201s-w.png index f1e5df5b275..cf832b45b46 100644 Binary files a/public/images/pokemon/icons/2/201s-w.png and b/public/images/pokemon/icons/2/201s-w.png differ diff --git a/public/images/pokemon/icons/2/201s-x.png b/public/images/pokemon/icons/2/201s-x.png index 66076b1f842..0edcdfdbcb9 100644 Binary files a/public/images/pokemon/icons/2/201s-x.png and b/public/images/pokemon/icons/2/201s-x.png differ diff --git a/public/images/pokemon/icons/2/201s-y.png b/public/images/pokemon/icons/2/201s-y.png index 4ef093aa684..39108750739 100644 Binary files a/public/images/pokemon/icons/2/201s-y.png and b/public/images/pokemon/icons/2/201s-y.png differ diff --git a/public/images/pokemon/icons/2/201s-z.png b/public/images/pokemon/icons/2/201s-z.png index 55b20444246..ae417351b54 100644 Binary files a/public/images/pokemon/icons/2/201s-z.png and b/public/images/pokemon/icons/2/201s-z.png differ diff --git a/public/images/pokemon/icons/2/202.png b/public/images/pokemon/icons/2/202.png index e76fbd8e434..4e5063314e2 100644 Binary files a/public/images/pokemon/icons/2/202.png and b/public/images/pokemon/icons/2/202.png differ diff --git a/public/images/pokemon/icons/2/202s.png b/public/images/pokemon/icons/2/202s.png index 646cd31c3be..e5b1244d6bc 100644 Binary files a/public/images/pokemon/icons/2/202s.png and b/public/images/pokemon/icons/2/202s.png differ diff --git a/public/images/pokemon/icons/2/203.png b/public/images/pokemon/icons/2/203.png index 28f419a1553..f5d3bfb8fc0 100644 Binary files a/public/images/pokemon/icons/2/203.png and b/public/images/pokemon/icons/2/203.png differ diff --git a/public/images/pokemon/icons/2/203s.png b/public/images/pokemon/icons/2/203s.png index 47f06e0b995..f4a4243cbe9 100644 Binary files a/public/images/pokemon/icons/2/203s.png and b/public/images/pokemon/icons/2/203s.png differ diff --git a/public/images/pokemon/icons/2/204.png b/public/images/pokemon/icons/2/204.png index f1df8bd2d41..b99c0b58999 100644 Binary files a/public/images/pokemon/icons/2/204.png and b/public/images/pokemon/icons/2/204.png differ diff --git a/public/images/pokemon/icons/2/204s.png b/public/images/pokemon/icons/2/204s.png index ece3ddec1c2..c67763d30bc 100644 Binary files a/public/images/pokemon/icons/2/204s.png and b/public/images/pokemon/icons/2/204s.png differ diff --git a/public/images/pokemon/icons/2/205.png b/public/images/pokemon/icons/2/205.png index 2e5a758c504..ba00d70e9df 100644 Binary files a/public/images/pokemon/icons/2/205.png and b/public/images/pokemon/icons/2/205.png differ diff --git a/public/images/pokemon/icons/2/205s.png b/public/images/pokemon/icons/2/205s.png index 23cd8ce8c55..e5ba44aced3 100644 Binary files a/public/images/pokemon/icons/2/205s.png and b/public/images/pokemon/icons/2/205s.png differ diff --git a/public/images/pokemon/icons/2/206.png b/public/images/pokemon/icons/2/206.png index 6e2fa2fc7dd..929c0f7dcb0 100644 Binary files a/public/images/pokemon/icons/2/206.png and b/public/images/pokemon/icons/2/206.png differ diff --git a/public/images/pokemon/icons/2/206s.png b/public/images/pokemon/icons/2/206s.png index a0443ef3787..1dec8f33998 100644 Binary files a/public/images/pokemon/icons/2/206s.png and b/public/images/pokemon/icons/2/206s.png differ diff --git a/public/images/pokemon/icons/2/207.png b/public/images/pokemon/icons/2/207.png index 4e8d61fdf7e..0fd56cd47ef 100644 Binary files a/public/images/pokemon/icons/2/207.png and b/public/images/pokemon/icons/2/207.png differ diff --git a/public/images/pokemon/icons/2/207s.png b/public/images/pokemon/icons/2/207s.png index d5ef3c60b73..c8692fed802 100644 Binary files a/public/images/pokemon/icons/2/207s.png and b/public/images/pokemon/icons/2/207s.png differ diff --git a/public/images/pokemon/icons/2/208-mega.png b/public/images/pokemon/icons/2/208-mega.png index 0c8a5d4707d..4d6239de171 100644 Binary files a/public/images/pokemon/icons/2/208-mega.png and b/public/images/pokemon/icons/2/208-mega.png differ diff --git a/public/images/pokemon/icons/2/208.png b/public/images/pokemon/icons/2/208.png index cf341732a5d..f758f96409b 100644 Binary files a/public/images/pokemon/icons/2/208.png and b/public/images/pokemon/icons/2/208.png differ diff --git a/public/images/pokemon/icons/2/208s-mega.png b/public/images/pokemon/icons/2/208s-mega.png index cc63c87f52a..45eab71d047 100644 Binary files a/public/images/pokemon/icons/2/208s-mega.png and b/public/images/pokemon/icons/2/208s-mega.png differ diff --git a/public/images/pokemon/icons/2/208s.png b/public/images/pokemon/icons/2/208s.png index c3e03e941c9..72f5b4d9f12 100644 Binary files a/public/images/pokemon/icons/2/208s.png and b/public/images/pokemon/icons/2/208s.png differ diff --git a/public/images/pokemon/icons/2/209.png b/public/images/pokemon/icons/2/209.png index 88ae2e698d9..0c5fc891d73 100644 Binary files a/public/images/pokemon/icons/2/209.png and b/public/images/pokemon/icons/2/209.png differ diff --git a/public/images/pokemon/icons/2/209s.png b/public/images/pokemon/icons/2/209s.png index 8f4dd70382b..dc287efb9ee 100644 Binary files a/public/images/pokemon/icons/2/209s.png and b/public/images/pokemon/icons/2/209s.png differ diff --git a/public/images/pokemon/icons/2/210.png b/public/images/pokemon/icons/2/210.png index 863646ce76a..3b409ffc946 100644 Binary files a/public/images/pokemon/icons/2/210.png and b/public/images/pokemon/icons/2/210.png differ diff --git a/public/images/pokemon/icons/2/210s.png b/public/images/pokemon/icons/2/210s.png index 7bfe6b49746..74403437852 100644 Binary files a/public/images/pokemon/icons/2/210s.png and b/public/images/pokemon/icons/2/210s.png differ diff --git a/public/images/pokemon/icons/2/211.png b/public/images/pokemon/icons/2/211.png index 7a8929e85b6..a67a9a09a25 100644 Binary files a/public/images/pokemon/icons/2/211.png and b/public/images/pokemon/icons/2/211.png differ diff --git a/public/images/pokemon/icons/2/211s.png b/public/images/pokemon/icons/2/211s.png index 65b8c2c5977..fb78f06257a 100644 Binary files a/public/images/pokemon/icons/2/211s.png and b/public/images/pokemon/icons/2/211s.png differ diff --git a/public/images/pokemon/icons/2/212-mega.png b/public/images/pokemon/icons/2/212-mega.png index 4ce22215ac7..d32bd776140 100644 Binary files a/public/images/pokemon/icons/2/212-mega.png and b/public/images/pokemon/icons/2/212-mega.png differ diff --git a/public/images/pokemon/icons/2/212.png b/public/images/pokemon/icons/2/212.png index e208b398c0d..c0f1f149af7 100644 Binary files a/public/images/pokemon/icons/2/212.png and b/public/images/pokemon/icons/2/212.png differ diff --git a/public/images/pokemon/icons/2/212s-mega.png b/public/images/pokemon/icons/2/212s-mega.png index 2e00b8d1f9c..bd8dfa1319f 100644 Binary files a/public/images/pokemon/icons/2/212s-mega.png and b/public/images/pokemon/icons/2/212s-mega.png differ diff --git a/public/images/pokemon/icons/2/212s.png b/public/images/pokemon/icons/2/212s.png index b15bb441807..7b23dbaa4ce 100644 Binary files a/public/images/pokemon/icons/2/212s.png and b/public/images/pokemon/icons/2/212s.png differ diff --git a/public/images/pokemon/icons/2/213.png b/public/images/pokemon/icons/2/213.png index c528c9f88cb..c2d7f8e8f3f 100644 Binary files a/public/images/pokemon/icons/2/213.png and b/public/images/pokemon/icons/2/213.png differ diff --git a/public/images/pokemon/icons/2/213s.png b/public/images/pokemon/icons/2/213s.png index 6c5983b5fe2..8608e87671f 100644 Binary files a/public/images/pokemon/icons/2/213s.png and b/public/images/pokemon/icons/2/213s.png differ diff --git a/public/images/pokemon/icons/2/214-mega.png b/public/images/pokemon/icons/2/214-mega.png index d70e223cfff..8f02c3139ba 100644 Binary files a/public/images/pokemon/icons/2/214-mega.png and b/public/images/pokemon/icons/2/214-mega.png differ diff --git a/public/images/pokemon/icons/2/214.png b/public/images/pokemon/icons/2/214.png index 7bec4239c38..20fa38e9779 100644 Binary files a/public/images/pokemon/icons/2/214.png and b/public/images/pokemon/icons/2/214.png differ diff --git a/public/images/pokemon/icons/2/214s-mega.png b/public/images/pokemon/icons/2/214s-mega.png index d1b9fc200f6..c4daf474312 100644 Binary files a/public/images/pokemon/icons/2/214s-mega.png and b/public/images/pokemon/icons/2/214s-mega.png differ diff --git a/public/images/pokemon/icons/2/214s.png b/public/images/pokemon/icons/2/214s.png index d2093cecd2d..efe944dbb0d 100644 Binary files a/public/images/pokemon/icons/2/214s.png and b/public/images/pokemon/icons/2/214s.png differ diff --git a/public/images/pokemon/icons/2/215.png b/public/images/pokemon/icons/2/215.png index 02131ca1bd9..6067ba093da 100644 Binary files a/public/images/pokemon/icons/2/215.png and b/public/images/pokemon/icons/2/215.png differ diff --git a/public/images/pokemon/icons/2/215s.png b/public/images/pokemon/icons/2/215s.png index 4ef0f41b776..49d4bd21e8c 100644 Binary files a/public/images/pokemon/icons/2/215s.png and b/public/images/pokemon/icons/2/215s.png differ diff --git a/public/images/pokemon/icons/2/216.png b/public/images/pokemon/icons/2/216.png index 6a8d964aaa8..f3e813c8971 100644 Binary files a/public/images/pokemon/icons/2/216.png and b/public/images/pokemon/icons/2/216.png differ diff --git a/public/images/pokemon/icons/2/216s.png b/public/images/pokemon/icons/2/216s.png index 15540eaf76c..1c965eccf04 100644 Binary files a/public/images/pokemon/icons/2/216s.png and b/public/images/pokemon/icons/2/216s.png differ diff --git a/public/images/pokemon/icons/2/217.png b/public/images/pokemon/icons/2/217.png index 08af4451b06..dddf535a4a3 100644 Binary files a/public/images/pokemon/icons/2/217.png and b/public/images/pokemon/icons/2/217.png differ diff --git a/public/images/pokemon/icons/2/217s.png b/public/images/pokemon/icons/2/217s.png index 59d93265ed6..7dc4a1f2b18 100644 Binary files a/public/images/pokemon/icons/2/217s.png and b/public/images/pokemon/icons/2/217s.png differ diff --git a/public/images/pokemon/icons/2/218.png b/public/images/pokemon/icons/2/218.png index 6e5ae790804..1d768ec0831 100644 Binary files a/public/images/pokemon/icons/2/218.png and b/public/images/pokemon/icons/2/218.png differ diff --git a/public/images/pokemon/icons/2/218s.png b/public/images/pokemon/icons/2/218s.png index 2ac73592389..98fac605f40 100644 Binary files a/public/images/pokemon/icons/2/218s.png and b/public/images/pokemon/icons/2/218s.png differ diff --git a/public/images/pokemon/icons/2/219.png b/public/images/pokemon/icons/2/219.png index 7910622236d..181cab0f30e 100644 Binary files a/public/images/pokemon/icons/2/219.png and b/public/images/pokemon/icons/2/219.png differ diff --git a/public/images/pokemon/icons/2/219s.png b/public/images/pokemon/icons/2/219s.png index f3c913e9639..5bebe1c8b5e 100644 Binary files a/public/images/pokemon/icons/2/219s.png and b/public/images/pokemon/icons/2/219s.png differ diff --git a/public/images/pokemon/icons/2/220.png b/public/images/pokemon/icons/2/220.png index 5b5905fbce0..b7d4039e2a9 100644 Binary files a/public/images/pokemon/icons/2/220.png and b/public/images/pokemon/icons/2/220.png differ diff --git a/public/images/pokemon/icons/2/220s.png b/public/images/pokemon/icons/2/220s.png index e03c3023f54..8470a6fcb19 100644 Binary files a/public/images/pokemon/icons/2/220s.png and b/public/images/pokemon/icons/2/220s.png differ diff --git a/public/images/pokemon/icons/2/221.png b/public/images/pokemon/icons/2/221.png index 9d9502f726e..1c1b8feddc1 100644 Binary files a/public/images/pokemon/icons/2/221.png and b/public/images/pokemon/icons/2/221.png differ diff --git a/public/images/pokemon/icons/2/221s.png b/public/images/pokemon/icons/2/221s.png index 9d8fd1ad1e7..e40cccfeed1 100644 Binary files a/public/images/pokemon/icons/2/221s.png and b/public/images/pokemon/icons/2/221s.png differ diff --git a/public/images/pokemon/icons/2/222.png b/public/images/pokemon/icons/2/222.png index 3700a556edd..5bb43dde530 100644 Binary files a/public/images/pokemon/icons/2/222.png and b/public/images/pokemon/icons/2/222.png differ diff --git a/public/images/pokemon/icons/2/222s.png b/public/images/pokemon/icons/2/222s.png index deb72a41724..8fbc56ac372 100644 Binary files a/public/images/pokemon/icons/2/222s.png and b/public/images/pokemon/icons/2/222s.png differ diff --git a/public/images/pokemon/icons/2/223.png b/public/images/pokemon/icons/2/223.png index 9fd5359fbb2..d7e96c4d60a 100644 Binary files a/public/images/pokemon/icons/2/223.png and b/public/images/pokemon/icons/2/223.png differ diff --git a/public/images/pokemon/icons/2/223s.png b/public/images/pokemon/icons/2/223s.png index 50004f5453d..94e917a992d 100644 Binary files a/public/images/pokemon/icons/2/223s.png and b/public/images/pokemon/icons/2/223s.png differ diff --git a/public/images/pokemon/icons/2/224.png b/public/images/pokemon/icons/2/224.png index 2e0bb60b0ef..529c22adaed 100644 Binary files a/public/images/pokemon/icons/2/224.png and b/public/images/pokemon/icons/2/224.png differ diff --git a/public/images/pokemon/icons/2/224s.png b/public/images/pokemon/icons/2/224s.png index 1987ed5159c..9c69c279abf 100644 Binary files a/public/images/pokemon/icons/2/224s.png and b/public/images/pokemon/icons/2/224s.png differ diff --git a/public/images/pokemon/icons/2/225.png b/public/images/pokemon/icons/2/225.png index ff691bcde99..359fad97682 100644 Binary files a/public/images/pokemon/icons/2/225.png and b/public/images/pokemon/icons/2/225.png differ diff --git a/public/images/pokemon/icons/2/225s.png b/public/images/pokemon/icons/2/225s.png index a86eb372907..f83047b62f4 100644 Binary files a/public/images/pokemon/icons/2/225s.png and b/public/images/pokemon/icons/2/225s.png differ diff --git a/public/images/pokemon/icons/2/226.png b/public/images/pokemon/icons/2/226.png index ede45730b96..9351f931ed1 100644 Binary files a/public/images/pokemon/icons/2/226.png and b/public/images/pokemon/icons/2/226.png differ diff --git a/public/images/pokemon/icons/2/226s.png b/public/images/pokemon/icons/2/226s.png index bee114f0a92..fac176ae9bd 100644 Binary files a/public/images/pokemon/icons/2/226s.png and b/public/images/pokemon/icons/2/226s.png differ diff --git a/public/images/pokemon/icons/2/227.png b/public/images/pokemon/icons/2/227.png index c20a3fd62be..7ca3d8e04dc 100644 Binary files a/public/images/pokemon/icons/2/227.png and b/public/images/pokemon/icons/2/227.png differ diff --git a/public/images/pokemon/icons/2/227s.png b/public/images/pokemon/icons/2/227s.png index d4527d379f6..051fa9b3bf0 100644 Binary files a/public/images/pokemon/icons/2/227s.png and b/public/images/pokemon/icons/2/227s.png differ diff --git a/public/images/pokemon/icons/2/228.png b/public/images/pokemon/icons/2/228.png index 841de66d8cf..db3457d04ed 100644 Binary files a/public/images/pokemon/icons/2/228.png and b/public/images/pokemon/icons/2/228.png differ diff --git a/public/images/pokemon/icons/2/228s.png b/public/images/pokemon/icons/2/228s.png index dc19296c7ef..daf7fa72c7f 100644 Binary files a/public/images/pokemon/icons/2/228s.png and b/public/images/pokemon/icons/2/228s.png differ diff --git a/public/images/pokemon/icons/2/229-mega.png b/public/images/pokemon/icons/2/229-mega.png index b5386f0b9f7..122225983a4 100644 Binary files a/public/images/pokemon/icons/2/229-mega.png and b/public/images/pokemon/icons/2/229-mega.png differ diff --git a/public/images/pokemon/icons/2/229.png b/public/images/pokemon/icons/2/229.png index ce3411a7da0..636df7dca96 100644 Binary files a/public/images/pokemon/icons/2/229.png and b/public/images/pokemon/icons/2/229.png differ diff --git a/public/images/pokemon/icons/2/229s-mega.png b/public/images/pokemon/icons/2/229s-mega.png index da015d8767e..917ecbd27ad 100644 Binary files a/public/images/pokemon/icons/2/229s-mega.png and b/public/images/pokemon/icons/2/229s-mega.png differ diff --git a/public/images/pokemon/icons/2/229s.png b/public/images/pokemon/icons/2/229s.png index 09b9d00382c..f79d61fd9c0 100644 Binary files a/public/images/pokemon/icons/2/229s.png and b/public/images/pokemon/icons/2/229s.png differ diff --git a/public/images/pokemon/icons/2/230.png b/public/images/pokemon/icons/2/230.png index d66e734e883..2bfae95c60e 100644 Binary files a/public/images/pokemon/icons/2/230.png and b/public/images/pokemon/icons/2/230.png differ diff --git a/public/images/pokemon/icons/2/230s.png b/public/images/pokemon/icons/2/230s.png index ac56dfb6f97..118eb412077 100644 Binary files a/public/images/pokemon/icons/2/230s.png and b/public/images/pokemon/icons/2/230s.png differ diff --git a/public/images/pokemon/icons/2/231.png b/public/images/pokemon/icons/2/231.png index 1e637d2265b..115575475cf 100644 Binary files a/public/images/pokemon/icons/2/231.png and b/public/images/pokemon/icons/2/231.png differ diff --git a/public/images/pokemon/icons/2/231s.png b/public/images/pokemon/icons/2/231s.png index 806eee9cd33..5eeda24aaa6 100644 Binary files a/public/images/pokemon/icons/2/231s.png and b/public/images/pokemon/icons/2/231s.png differ diff --git a/public/images/pokemon/icons/2/232.png b/public/images/pokemon/icons/2/232.png index 61c5f4f2d50..50a6c46ccf9 100644 Binary files a/public/images/pokemon/icons/2/232.png and b/public/images/pokemon/icons/2/232.png differ diff --git a/public/images/pokemon/icons/2/232s.png b/public/images/pokemon/icons/2/232s.png index 99cd74a01f3..441f76ffdef 100644 Binary files a/public/images/pokemon/icons/2/232s.png and b/public/images/pokemon/icons/2/232s.png differ diff --git a/public/images/pokemon/icons/2/233.png b/public/images/pokemon/icons/2/233.png index 030b8c3a1d2..fa3d5bf2481 100644 Binary files a/public/images/pokemon/icons/2/233.png and b/public/images/pokemon/icons/2/233.png differ diff --git a/public/images/pokemon/icons/2/233s.png b/public/images/pokemon/icons/2/233s.png index e132f17d1b5..0e03470f7a2 100644 Binary files a/public/images/pokemon/icons/2/233s.png and b/public/images/pokemon/icons/2/233s.png differ diff --git a/public/images/pokemon/icons/2/234.png b/public/images/pokemon/icons/2/234.png index bea4492dc06..d4f3d5cf9cd 100644 Binary files a/public/images/pokemon/icons/2/234.png and b/public/images/pokemon/icons/2/234.png differ diff --git a/public/images/pokemon/icons/2/234s.png b/public/images/pokemon/icons/2/234s.png index 761090bfcff..27c9542aa55 100644 Binary files a/public/images/pokemon/icons/2/234s.png and b/public/images/pokemon/icons/2/234s.png differ diff --git a/public/images/pokemon/icons/2/235.png b/public/images/pokemon/icons/2/235.png index 2cbace850f2..a17ef4d0a83 100644 Binary files a/public/images/pokemon/icons/2/235.png and b/public/images/pokemon/icons/2/235.png differ diff --git a/public/images/pokemon/icons/2/235s.png b/public/images/pokemon/icons/2/235s.png index 3653687cd09..373ccfbdb41 100644 Binary files a/public/images/pokemon/icons/2/235s.png and b/public/images/pokemon/icons/2/235s.png differ diff --git a/public/images/pokemon/icons/2/236.png b/public/images/pokemon/icons/2/236.png index e6049619017..b5710f53cdd 100644 Binary files a/public/images/pokemon/icons/2/236.png and b/public/images/pokemon/icons/2/236.png differ diff --git a/public/images/pokemon/icons/2/236s.png b/public/images/pokemon/icons/2/236s.png index 239832403e4..e2366184041 100644 Binary files a/public/images/pokemon/icons/2/236s.png and b/public/images/pokemon/icons/2/236s.png differ diff --git a/public/images/pokemon/icons/2/237.png b/public/images/pokemon/icons/2/237.png index 48da2e6f9b4..be8d70c1edc 100644 Binary files a/public/images/pokemon/icons/2/237.png and b/public/images/pokemon/icons/2/237.png differ diff --git a/public/images/pokemon/icons/2/237s.png b/public/images/pokemon/icons/2/237s.png index bb94db75f52..70ca6ddd696 100644 Binary files a/public/images/pokemon/icons/2/237s.png and b/public/images/pokemon/icons/2/237s.png differ diff --git a/public/images/pokemon/icons/2/238.png b/public/images/pokemon/icons/2/238.png index 9e401e85081..640d5734fe5 100644 Binary files a/public/images/pokemon/icons/2/238.png and b/public/images/pokemon/icons/2/238.png differ diff --git a/public/images/pokemon/icons/2/238s.png b/public/images/pokemon/icons/2/238s.png index 88b4591c712..24e18c4c746 100644 Binary files a/public/images/pokemon/icons/2/238s.png and b/public/images/pokemon/icons/2/238s.png differ diff --git a/public/images/pokemon/icons/2/239.png b/public/images/pokemon/icons/2/239.png index b8dbf5ee778..4a47c8a9da4 100644 Binary files a/public/images/pokemon/icons/2/239.png and b/public/images/pokemon/icons/2/239.png differ diff --git a/public/images/pokemon/icons/2/239s.png b/public/images/pokemon/icons/2/239s.png index da10f18445b..8301f37752b 100644 Binary files a/public/images/pokemon/icons/2/239s.png and b/public/images/pokemon/icons/2/239s.png differ diff --git a/public/images/pokemon/icons/2/240.png b/public/images/pokemon/icons/2/240.png index 478b0e3a804..8b7833a03e6 100644 Binary files a/public/images/pokemon/icons/2/240.png and b/public/images/pokemon/icons/2/240.png differ diff --git a/public/images/pokemon/icons/2/240s.png b/public/images/pokemon/icons/2/240s.png index 33015a7cfc3..06e42bb1f17 100644 Binary files a/public/images/pokemon/icons/2/240s.png and b/public/images/pokemon/icons/2/240s.png differ diff --git a/public/images/pokemon/icons/2/241.png b/public/images/pokemon/icons/2/241.png index ea25d18da75..4bbc54477cf 100644 Binary files a/public/images/pokemon/icons/2/241.png and b/public/images/pokemon/icons/2/241.png differ diff --git a/public/images/pokemon/icons/2/241s.png b/public/images/pokemon/icons/2/241s.png index c07d3175900..f3356fc91ca 100644 Binary files a/public/images/pokemon/icons/2/241s.png and b/public/images/pokemon/icons/2/241s.png differ diff --git a/public/images/pokemon/icons/2/242.png b/public/images/pokemon/icons/2/242.png index b4c330aa378..a189375cc44 100644 Binary files a/public/images/pokemon/icons/2/242.png and b/public/images/pokemon/icons/2/242.png differ diff --git a/public/images/pokemon/icons/2/242s.png b/public/images/pokemon/icons/2/242s.png index f1ecbc3f2a7..bbd9ea2f5dc 100644 Binary files a/public/images/pokemon/icons/2/242s.png and b/public/images/pokemon/icons/2/242s.png differ diff --git a/public/images/pokemon/icons/2/243.png b/public/images/pokemon/icons/2/243.png index 454d335330b..539f9440b3b 100644 Binary files a/public/images/pokemon/icons/2/243.png and b/public/images/pokemon/icons/2/243.png differ diff --git a/public/images/pokemon/icons/2/243s.png b/public/images/pokemon/icons/2/243s.png index 77118a97b66..19ba6c81a90 100644 Binary files a/public/images/pokemon/icons/2/243s.png and b/public/images/pokemon/icons/2/243s.png differ diff --git a/public/images/pokemon/icons/2/244.png b/public/images/pokemon/icons/2/244.png index 52436eec465..4dd6c6b7e0f 100644 Binary files a/public/images/pokemon/icons/2/244.png and b/public/images/pokemon/icons/2/244.png differ diff --git a/public/images/pokemon/icons/2/244s.png b/public/images/pokemon/icons/2/244s.png index 1f248da0ca7..e12a87b5dc0 100644 Binary files a/public/images/pokemon/icons/2/244s.png and b/public/images/pokemon/icons/2/244s.png differ diff --git a/public/images/pokemon/icons/2/245.png b/public/images/pokemon/icons/2/245.png index e323a3b5fff..5031af0bde1 100644 Binary files a/public/images/pokemon/icons/2/245.png and b/public/images/pokemon/icons/2/245.png differ diff --git a/public/images/pokemon/icons/2/245s.png b/public/images/pokemon/icons/2/245s.png index 68f7725198f..9b1cff32263 100644 Binary files a/public/images/pokemon/icons/2/245s.png and b/public/images/pokemon/icons/2/245s.png differ diff --git a/public/images/pokemon/icons/2/246.png b/public/images/pokemon/icons/2/246.png index c58dc009b94..62c394336eb 100644 Binary files a/public/images/pokemon/icons/2/246.png and b/public/images/pokemon/icons/2/246.png differ diff --git a/public/images/pokemon/icons/2/246s.png b/public/images/pokemon/icons/2/246s.png index 7c799508d8d..1ba0a10ec18 100644 Binary files a/public/images/pokemon/icons/2/246s.png and b/public/images/pokemon/icons/2/246s.png differ diff --git a/public/images/pokemon/icons/2/247.png b/public/images/pokemon/icons/2/247.png index 6da481f3691..47c6577c4ed 100644 Binary files a/public/images/pokemon/icons/2/247.png and b/public/images/pokemon/icons/2/247.png differ diff --git a/public/images/pokemon/icons/2/247s.png b/public/images/pokemon/icons/2/247s.png index 1958bc05623..a6da8624e61 100644 Binary files a/public/images/pokemon/icons/2/247s.png and b/public/images/pokemon/icons/2/247s.png differ diff --git a/public/images/pokemon/icons/2/248-mega.png b/public/images/pokemon/icons/2/248-mega.png index fc1b428043b..505677dc42b 100644 Binary files a/public/images/pokemon/icons/2/248-mega.png and b/public/images/pokemon/icons/2/248-mega.png differ diff --git a/public/images/pokemon/icons/2/248.png b/public/images/pokemon/icons/2/248.png index b34a1f8259b..9b602b1f02a 100644 Binary files a/public/images/pokemon/icons/2/248.png and b/public/images/pokemon/icons/2/248.png differ diff --git a/public/images/pokemon/icons/2/248s-mega.png b/public/images/pokemon/icons/2/248s-mega.png index 11b1fe4120d..3706da6c493 100644 Binary files a/public/images/pokemon/icons/2/248s-mega.png and b/public/images/pokemon/icons/2/248s-mega.png differ diff --git a/public/images/pokemon/icons/2/248s.png b/public/images/pokemon/icons/2/248s.png index e5810edf89f..5abe872dc5a 100644 Binary files a/public/images/pokemon/icons/2/248s.png and b/public/images/pokemon/icons/2/248s.png differ diff --git a/public/images/pokemon/icons/2/249.png b/public/images/pokemon/icons/2/249.png index 50670544af9..e625bcaa1ef 100644 Binary files a/public/images/pokemon/icons/2/249.png and b/public/images/pokemon/icons/2/249.png differ diff --git a/public/images/pokemon/icons/2/249s.png b/public/images/pokemon/icons/2/249s.png index ba8f21050dc..516f5f8f17f 100644 Binary files a/public/images/pokemon/icons/2/249s.png and b/public/images/pokemon/icons/2/249s.png differ diff --git a/public/images/pokemon/icons/2/250.png b/public/images/pokemon/icons/2/250.png index e311ed10160..8a34bca0e0f 100644 Binary files a/public/images/pokemon/icons/2/250.png and b/public/images/pokemon/icons/2/250.png differ diff --git a/public/images/pokemon/icons/2/250s.png b/public/images/pokemon/icons/2/250s.png index c89007c7da2..2b408228e03 100644 Binary files a/public/images/pokemon/icons/2/250s.png and b/public/images/pokemon/icons/2/250s.png differ diff --git a/public/images/pokemon/icons/2/251.png b/public/images/pokemon/icons/2/251.png index 6ba16f8c180..5ff8f8bca65 100644 Binary files a/public/images/pokemon/icons/2/251.png and b/public/images/pokemon/icons/2/251.png differ diff --git a/public/images/pokemon/icons/2/251s.png b/public/images/pokemon/icons/2/251s.png index 218f2036814..1bfa596615d 100644 Binary files a/public/images/pokemon/icons/2/251s.png and b/public/images/pokemon/icons/2/251s.png differ diff --git a/public/images/pokemon/icons/3/252.png b/public/images/pokemon/icons/3/252.png index 8bd9bf3d1a1..5124018e491 100644 Binary files a/public/images/pokemon/icons/3/252.png and b/public/images/pokemon/icons/3/252.png differ diff --git a/public/images/pokemon/icons/3/252s.png b/public/images/pokemon/icons/3/252s.png index c039406f093..e4b96523c2a 100644 Binary files a/public/images/pokemon/icons/3/252s.png and b/public/images/pokemon/icons/3/252s.png differ diff --git a/public/images/pokemon/icons/3/253.png b/public/images/pokemon/icons/3/253.png index ce993d0e369..d06da21e34c 100644 Binary files a/public/images/pokemon/icons/3/253.png and b/public/images/pokemon/icons/3/253.png differ diff --git a/public/images/pokemon/icons/3/253s.png b/public/images/pokemon/icons/3/253s.png index 5985d7ea2c3..d94dce19594 100644 Binary files a/public/images/pokemon/icons/3/253s.png and b/public/images/pokemon/icons/3/253s.png differ diff --git a/public/images/pokemon/icons/3/254-mega.png b/public/images/pokemon/icons/3/254-mega.png index bf0de402860..f4226da99c3 100644 Binary files a/public/images/pokemon/icons/3/254-mega.png and b/public/images/pokemon/icons/3/254-mega.png differ diff --git a/public/images/pokemon/icons/3/254.png b/public/images/pokemon/icons/3/254.png index d5197de46c2..5d74ead9216 100644 Binary files a/public/images/pokemon/icons/3/254.png and b/public/images/pokemon/icons/3/254.png differ diff --git a/public/images/pokemon/icons/3/254s-mega.png b/public/images/pokemon/icons/3/254s-mega.png index 255ae124495..b75ba29287d 100644 Binary files a/public/images/pokemon/icons/3/254s-mega.png and b/public/images/pokemon/icons/3/254s-mega.png differ diff --git a/public/images/pokemon/icons/3/254s.png b/public/images/pokemon/icons/3/254s.png index 85d4b70ad90..a0b56e0a151 100644 Binary files a/public/images/pokemon/icons/3/254s.png and b/public/images/pokemon/icons/3/254s.png differ diff --git a/public/images/pokemon/icons/3/255-f.png b/public/images/pokemon/icons/3/255-f.png index bb221be21e7..06879361ad7 100644 Binary files a/public/images/pokemon/icons/3/255-f.png and b/public/images/pokemon/icons/3/255-f.png differ diff --git a/public/images/pokemon/icons/3/255.png b/public/images/pokemon/icons/3/255.png index bb221be21e7..06879361ad7 100644 Binary files a/public/images/pokemon/icons/3/255.png and b/public/images/pokemon/icons/3/255.png differ diff --git a/public/images/pokemon/icons/3/255s-f.png b/public/images/pokemon/icons/3/255s-f.png index 898b17c163c..a058078e878 100644 Binary files a/public/images/pokemon/icons/3/255s-f.png and b/public/images/pokemon/icons/3/255s-f.png differ diff --git a/public/images/pokemon/icons/3/255s.png b/public/images/pokemon/icons/3/255s.png index 898b17c163c..a058078e878 100644 Binary files a/public/images/pokemon/icons/3/255s.png and b/public/images/pokemon/icons/3/255s.png differ diff --git a/public/images/pokemon/icons/3/256-f.png b/public/images/pokemon/icons/3/256-f.png index 72800cc5e25..eb5c0a9e045 100644 Binary files a/public/images/pokemon/icons/3/256-f.png and b/public/images/pokemon/icons/3/256-f.png differ diff --git a/public/images/pokemon/icons/3/256.png b/public/images/pokemon/icons/3/256.png index 72800cc5e25..eb5c0a9e045 100644 Binary files a/public/images/pokemon/icons/3/256.png and b/public/images/pokemon/icons/3/256.png differ diff --git a/public/images/pokemon/icons/3/256s-f.png b/public/images/pokemon/icons/3/256s-f.png index ce6608f7bc5..91dddea6c48 100644 Binary files a/public/images/pokemon/icons/3/256s-f.png and b/public/images/pokemon/icons/3/256s-f.png differ diff --git a/public/images/pokemon/icons/3/256s.png b/public/images/pokemon/icons/3/256s.png index ce6608f7bc5..91dddea6c48 100644 Binary files a/public/images/pokemon/icons/3/256s.png and b/public/images/pokemon/icons/3/256s.png differ diff --git a/public/images/pokemon/icons/3/257-f-mega.png b/public/images/pokemon/icons/3/257-f-mega.png index ed64fe8f41f..f72b739ec9d 100644 Binary files a/public/images/pokemon/icons/3/257-f-mega.png and b/public/images/pokemon/icons/3/257-f-mega.png differ diff --git a/public/images/pokemon/icons/3/257-f.png b/public/images/pokemon/icons/3/257-f.png index ee42a9f75c0..c5da5c0cb21 100644 Binary files a/public/images/pokemon/icons/3/257-f.png and b/public/images/pokemon/icons/3/257-f.png differ diff --git a/public/images/pokemon/icons/3/257-mega.png b/public/images/pokemon/icons/3/257-mega.png index ed64fe8f41f..f72b739ec9d 100644 Binary files a/public/images/pokemon/icons/3/257-mega.png and b/public/images/pokemon/icons/3/257-mega.png differ diff --git a/public/images/pokemon/icons/3/257.png b/public/images/pokemon/icons/3/257.png index ee42a9f75c0..c5da5c0cb21 100644 Binary files a/public/images/pokemon/icons/3/257.png and b/public/images/pokemon/icons/3/257.png differ diff --git a/public/images/pokemon/icons/3/257s-f-mega.png b/public/images/pokemon/icons/3/257s-f-mega.png index faf5e5aa30c..e872658af87 100644 Binary files a/public/images/pokemon/icons/3/257s-f-mega.png and b/public/images/pokemon/icons/3/257s-f-mega.png differ diff --git a/public/images/pokemon/icons/3/257s-f.png b/public/images/pokemon/icons/3/257s-f.png index bf59393972f..6d3d839cde4 100644 Binary files a/public/images/pokemon/icons/3/257s-f.png and b/public/images/pokemon/icons/3/257s-f.png differ diff --git a/public/images/pokemon/icons/3/257s-mega.png b/public/images/pokemon/icons/3/257s-mega.png index faf5e5aa30c..e872658af87 100644 Binary files a/public/images/pokemon/icons/3/257s-mega.png and b/public/images/pokemon/icons/3/257s-mega.png differ diff --git a/public/images/pokemon/icons/3/257s.png b/public/images/pokemon/icons/3/257s.png index bf59393972f..6d3d839cde4 100644 Binary files a/public/images/pokemon/icons/3/257s.png and b/public/images/pokemon/icons/3/257s.png differ diff --git a/public/images/pokemon/icons/3/258.png b/public/images/pokemon/icons/3/258.png index a9d468813f1..d025a58f691 100644 Binary files a/public/images/pokemon/icons/3/258.png and b/public/images/pokemon/icons/3/258.png differ diff --git a/public/images/pokemon/icons/3/258s.png b/public/images/pokemon/icons/3/258s.png index b6132414922..ca399484727 100644 Binary files a/public/images/pokemon/icons/3/258s.png and b/public/images/pokemon/icons/3/258s.png differ diff --git a/public/images/pokemon/icons/3/259.png b/public/images/pokemon/icons/3/259.png index 6ec6acf6823..fe3822ef24d 100644 Binary files a/public/images/pokemon/icons/3/259.png and b/public/images/pokemon/icons/3/259.png differ diff --git a/public/images/pokemon/icons/3/259s.png b/public/images/pokemon/icons/3/259s.png index 9801d235567..0bebb3cfd1a 100644 Binary files a/public/images/pokemon/icons/3/259s.png and b/public/images/pokemon/icons/3/259s.png differ diff --git a/public/images/pokemon/icons/3/260-mega.png b/public/images/pokemon/icons/3/260-mega.png index 87688ff0a70..735e1a502f6 100644 Binary files a/public/images/pokemon/icons/3/260-mega.png and b/public/images/pokemon/icons/3/260-mega.png differ diff --git a/public/images/pokemon/icons/3/260.png b/public/images/pokemon/icons/3/260.png index ffea58ac930..03a68a41dee 100644 Binary files a/public/images/pokemon/icons/3/260.png and b/public/images/pokemon/icons/3/260.png differ diff --git a/public/images/pokemon/icons/3/260s-mega.png b/public/images/pokemon/icons/3/260s-mega.png index 21f4af83b66..9d6cefd83a6 100644 Binary files a/public/images/pokemon/icons/3/260s-mega.png and b/public/images/pokemon/icons/3/260s-mega.png differ diff --git a/public/images/pokemon/icons/3/260s.png b/public/images/pokemon/icons/3/260s.png index 6931e012845..17df12d638a 100644 Binary files a/public/images/pokemon/icons/3/260s.png and b/public/images/pokemon/icons/3/260s.png differ diff --git a/public/images/pokemon/icons/3/261.png b/public/images/pokemon/icons/3/261.png index e8ecd4fbb7d..377efacb458 100644 Binary files a/public/images/pokemon/icons/3/261.png and b/public/images/pokemon/icons/3/261.png differ diff --git a/public/images/pokemon/icons/3/261s.png b/public/images/pokemon/icons/3/261s.png index 32be1b63f6d..22540f18121 100644 Binary files a/public/images/pokemon/icons/3/261s.png and b/public/images/pokemon/icons/3/261s.png differ diff --git a/public/images/pokemon/icons/3/262.png b/public/images/pokemon/icons/3/262.png index e4cca8bd8da..76742be5af5 100644 Binary files a/public/images/pokemon/icons/3/262.png and b/public/images/pokemon/icons/3/262.png differ diff --git a/public/images/pokemon/icons/3/262s.png b/public/images/pokemon/icons/3/262s.png index d31f63fb275..c7f84709d0c 100644 Binary files a/public/images/pokemon/icons/3/262s.png and b/public/images/pokemon/icons/3/262s.png differ diff --git a/public/images/pokemon/icons/3/263.png b/public/images/pokemon/icons/3/263.png index 08cffa6fd0f..f05f537297c 100644 Binary files a/public/images/pokemon/icons/3/263.png and b/public/images/pokemon/icons/3/263.png differ diff --git a/public/images/pokemon/icons/3/263s.png b/public/images/pokemon/icons/3/263s.png index 07f11a315cf..941f3a500d1 100644 Binary files a/public/images/pokemon/icons/3/263s.png and b/public/images/pokemon/icons/3/263s.png differ diff --git a/public/images/pokemon/icons/3/264.png b/public/images/pokemon/icons/3/264.png index 1e60b6c0d25..42fcf6f78e4 100644 Binary files a/public/images/pokemon/icons/3/264.png and b/public/images/pokemon/icons/3/264.png differ diff --git a/public/images/pokemon/icons/3/264s.png b/public/images/pokemon/icons/3/264s.png index e5e4eb01427..6bd32defba7 100644 Binary files a/public/images/pokemon/icons/3/264s.png and b/public/images/pokemon/icons/3/264s.png differ diff --git a/public/images/pokemon/icons/3/265.png b/public/images/pokemon/icons/3/265.png index 6758265c015..d022da5a2b8 100644 Binary files a/public/images/pokemon/icons/3/265.png and b/public/images/pokemon/icons/3/265.png differ diff --git a/public/images/pokemon/icons/3/265s.png b/public/images/pokemon/icons/3/265s.png index fed57800bc6..329f99a843f 100644 Binary files a/public/images/pokemon/icons/3/265s.png and b/public/images/pokemon/icons/3/265s.png differ diff --git a/public/images/pokemon/icons/3/266.png b/public/images/pokemon/icons/3/266.png index c43111a4f39..5d2d8221b5c 100644 Binary files a/public/images/pokemon/icons/3/266.png and b/public/images/pokemon/icons/3/266.png differ diff --git a/public/images/pokemon/icons/3/266s.png b/public/images/pokemon/icons/3/266s.png index 659ecdc9d66..24f1f9bf829 100644 Binary files a/public/images/pokemon/icons/3/266s.png and b/public/images/pokemon/icons/3/266s.png differ diff --git a/public/images/pokemon/icons/3/267.png b/public/images/pokemon/icons/3/267.png index 975507dd006..8cd78769e61 100644 Binary files a/public/images/pokemon/icons/3/267.png and b/public/images/pokemon/icons/3/267.png differ diff --git a/public/images/pokemon/icons/3/267s.png b/public/images/pokemon/icons/3/267s.png index ecfe394ffa7..05bbd062bf6 100644 Binary files a/public/images/pokemon/icons/3/267s.png and b/public/images/pokemon/icons/3/267s.png differ diff --git a/public/images/pokemon/icons/3/268.png b/public/images/pokemon/icons/3/268.png index 7abd8c928bc..8c5ed61e27c 100644 Binary files a/public/images/pokemon/icons/3/268.png and b/public/images/pokemon/icons/3/268.png differ diff --git a/public/images/pokemon/icons/3/268s.png b/public/images/pokemon/icons/3/268s.png index 1d984506033..fa67f7f97f8 100644 Binary files a/public/images/pokemon/icons/3/268s.png and b/public/images/pokemon/icons/3/268s.png differ diff --git a/public/images/pokemon/icons/3/269.png b/public/images/pokemon/icons/3/269.png index 6f7d855dcb2..c8a4ef08ff7 100644 Binary files a/public/images/pokemon/icons/3/269.png and b/public/images/pokemon/icons/3/269.png differ diff --git a/public/images/pokemon/icons/3/269s.png b/public/images/pokemon/icons/3/269s.png index ecfb2695548..74472d93c81 100644 Binary files a/public/images/pokemon/icons/3/269s.png and b/public/images/pokemon/icons/3/269s.png differ diff --git a/public/images/pokemon/icons/3/270.png b/public/images/pokemon/icons/3/270.png index a826603f3ba..6b57a2af361 100644 Binary files a/public/images/pokemon/icons/3/270.png and b/public/images/pokemon/icons/3/270.png differ diff --git a/public/images/pokemon/icons/3/270s.png b/public/images/pokemon/icons/3/270s.png index 5215ca34ba0..3a63da8a940 100644 Binary files a/public/images/pokemon/icons/3/270s.png and b/public/images/pokemon/icons/3/270s.png differ diff --git a/public/images/pokemon/icons/3/271.png b/public/images/pokemon/icons/3/271.png index 5ca9236ed95..86595f93949 100644 Binary files a/public/images/pokemon/icons/3/271.png and b/public/images/pokemon/icons/3/271.png differ diff --git a/public/images/pokemon/icons/3/271s.png b/public/images/pokemon/icons/3/271s.png index 7a43dd895a4..406615d0cf9 100644 Binary files a/public/images/pokemon/icons/3/271s.png and b/public/images/pokemon/icons/3/271s.png differ diff --git a/public/images/pokemon/icons/3/272.png b/public/images/pokemon/icons/3/272.png index ad4fc6aedf4..95605874e4c 100644 Binary files a/public/images/pokemon/icons/3/272.png and b/public/images/pokemon/icons/3/272.png differ diff --git a/public/images/pokemon/icons/3/272s.png b/public/images/pokemon/icons/3/272s.png index 6cf2b6d19e1..92fc18266e3 100644 Binary files a/public/images/pokemon/icons/3/272s.png and b/public/images/pokemon/icons/3/272s.png differ diff --git a/public/images/pokemon/icons/3/273.png b/public/images/pokemon/icons/3/273.png index 2cde3e5b165..6fd30f5ed0d 100644 Binary files a/public/images/pokemon/icons/3/273.png and b/public/images/pokemon/icons/3/273.png differ diff --git a/public/images/pokemon/icons/3/273s.png b/public/images/pokemon/icons/3/273s.png index bbd35e446a3..da12e4bb812 100644 Binary files a/public/images/pokemon/icons/3/273s.png and b/public/images/pokemon/icons/3/273s.png differ diff --git a/public/images/pokemon/icons/3/274.png b/public/images/pokemon/icons/3/274.png index 77d5a21eb32..22c056d8de1 100644 Binary files a/public/images/pokemon/icons/3/274.png and b/public/images/pokemon/icons/3/274.png differ diff --git a/public/images/pokemon/icons/3/274s.png b/public/images/pokemon/icons/3/274s.png index 5f6bab6d41e..b83e2f0ab12 100644 Binary files a/public/images/pokemon/icons/3/274s.png and b/public/images/pokemon/icons/3/274s.png differ diff --git a/public/images/pokemon/icons/3/275.png b/public/images/pokemon/icons/3/275.png index 1fe15289bf1..5385a58d3b9 100644 Binary files a/public/images/pokemon/icons/3/275.png and b/public/images/pokemon/icons/3/275.png differ diff --git a/public/images/pokemon/icons/3/275s.png b/public/images/pokemon/icons/3/275s.png index 626c2ab1fb7..f267bbe7163 100644 Binary files a/public/images/pokemon/icons/3/275s.png and b/public/images/pokemon/icons/3/275s.png differ diff --git a/public/images/pokemon/icons/3/276.png b/public/images/pokemon/icons/3/276.png index bf44bfa30c9..99d653a101d 100644 Binary files a/public/images/pokemon/icons/3/276.png and b/public/images/pokemon/icons/3/276.png differ diff --git a/public/images/pokemon/icons/3/276s.png b/public/images/pokemon/icons/3/276s.png index 6213813a866..a928ce780ea 100644 Binary files a/public/images/pokemon/icons/3/276s.png and b/public/images/pokemon/icons/3/276s.png differ diff --git a/public/images/pokemon/icons/3/277.png b/public/images/pokemon/icons/3/277.png index d938556bebf..90c867c79cb 100644 Binary files a/public/images/pokemon/icons/3/277.png and b/public/images/pokemon/icons/3/277.png differ diff --git a/public/images/pokemon/icons/3/277s.png b/public/images/pokemon/icons/3/277s.png index a940cd54eb7..181009c5b0f 100644 Binary files a/public/images/pokemon/icons/3/277s.png and b/public/images/pokemon/icons/3/277s.png differ diff --git a/public/images/pokemon/icons/3/278.png b/public/images/pokemon/icons/3/278.png index 246b6ef1bbe..0f13a1a1ea2 100644 Binary files a/public/images/pokemon/icons/3/278.png and b/public/images/pokemon/icons/3/278.png differ diff --git a/public/images/pokemon/icons/3/278s.png b/public/images/pokemon/icons/3/278s.png index 7f2e7e0a2ca..6521213e683 100644 Binary files a/public/images/pokemon/icons/3/278s.png and b/public/images/pokemon/icons/3/278s.png differ diff --git a/public/images/pokemon/icons/3/279.png b/public/images/pokemon/icons/3/279.png index e3f6afb9567..055d02b9281 100644 Binary files a/public/images/pokemon/icons/3/279.png and b/public/images/pokemon/icons/3/279.png differ diff --git a/public/images/pokemon/icons/3/279s.png b/public/images/pokemon/icons/3/279s.png index d1401462eac..4965f30e5a6 100644 Binary files a/public/images/pokemon/icons/3/279s.png and b/public/images/pokemon/icons/3/279s.png differ diff --git a/public/images/pokemon/icons/3/280.png b/public/images/pokemon/icons/3/280.png index b5c2ce72c4a..a94ea9fb822 100644 Binary files a/public/images/pokemon/icons/3/280.png and b/public/images/pokemon/icons/3/280.png differ diff --git a/public/images/pokemon/icons/3/280s.png b/public/images/pokemon/icons/3/280s.png index b620b8a0853..688dba3ab7d 100644 Binary files a/public/images/pokemon/icons/3/280s.png and b/public/images/pokemon/icons/3/280s.png differ diff --git a/public/images/pokemon/icons/3/281.png b/public/images/pokemon/icons/3/281.png index f467597c4b9..db4059380c5 100644 Binary files a/public/images/pokemon/icons/3/281.png and b/public/images/pokemon/icons/3/281.png differ diff --git a/public/images/pokemon/icons/3/281s.png b/public/images/pokemon/icons/3/281s.png index 04ee658279c..40d0e9a437e 100644 Binary files a/public/images/pokemon/icons/3/281s.png and b/public/images/pokemon/icons/3/281s.png differ diff --git a/public/images/pokemon/icons/3/282-mega.png b/public/images/pokemon/icons/3/282-mega.png index 3f26b69e5a7..81a59ee6e64 100644 Binary files a/public/images/pokemon/icons/3/282-mega.png and b/public/images/pokemon/icons/3/282-mega.png differ diff --git a/public/images/pokemon/icons/3/282.png b/public/images/pokemon/icons/3/282.png index 9b8964ea1ef..2bd71d194e9 100644 Binary files a/public/images/pokemon/icons/3/282.png and b/public/images/pokemon/icons/3/282.png differ diff --git a/public/images/pokemon/icons/3/282s-mega.png b/public/images/pokemon/icons/3/282s-mega.png index 58af00f9c9f..3ad7ba285ee 100644 Binary files a/public/images/pokemon/icons/3/282s-mega.png and b/public/images/pokemon/icons/3/282s-mega.png differ diff --git a/public/images/pokemon/icons/3/282s.png b/public/images/pokemon/icons/3/282s.png index 95e4fc44234..1a0ec17781e 100644 Binary files a/public/images/pokemon/icons/3/282s.png and b/public/images/pokemon/icons/3/282s.png differ diff --git a/public/images/pokemon/icons/3/283.png b/public/images/pokemon/icons/3/283.png index b63e9b1b86b..395bfdf236c 100644 Binary files a/public/images/pokemon/icons/3/283.png and b/public/images/pokemon/icons/3/283.png differ diff --git a/public/images/pokemon/icons/3/283s.png b/public/images/pokemon/icons/3/283s.png index af7cd594f00..f70e616576b 100644 Binary files a/public/images/pokemon/icons/3/283s.png and b/public/images/pokemon/icons/3/283s.png differ diff --git a/public/images/pokemon/icons/3/284.png b/public/images/pokemon/icons/3/284.png index 2991bec4359..18c07f699fe 100644 Binary files a/public/images/pokemon/icons/3/284.png and b/public/images/pokemon/icons/3/284.png differ diff --git a/public/images/pokemon/icons/3/284s.png b/public/images/pokemon/icons/3/284s.png index 23afb991311..14c0972f30a 100644 Binary files a/public/images/pokemon/icons/3/284s.png and b/public/images/pokemon/icons/3/284s.png differ diff --git a/public/images/pokemon/icons/3/285.png b/public/images/pokemon/icons/3/285.png index 406a9890078..b780c5b97ee 100644 Binary files a/public/images/pokemon/icons/3/285.png and b/public/images/pokemon/icons/3/285.png differ diff --git a/public/images/pokemon/icons/3/285s.png b/public/images/pokemon/icons/3/285s.png index 1d4c7d67d78..1fec5676afb 100644 Binary files a/public/images/pokemon/icons/3/285s.png and b/public/images/pokemon/icons/3/285s.png differ diff --git a/public/images/pokemon/icons/3/286.png b/public/images/pokemon/icons/3/286.png index 0b87760c7a6..d4728fe9666 100644 Binary files a/public/images/pokemon/icons/3/286.png and b/public/images/pokemon/icons/3/286.png differ diff --git a/public/images/pokemon/icons/3/286s.png b/public/images/pokemon/icons/3/286s.png index 4c3626b78f2..cdb3a9981d2 100644 Binary files a/public/images/pokemon/icons/3/286s.png and b/public/images/pokemon/icons/3/286s.png differ diff --git a/public/images/pokemon/icons/3/287.png b/public/images/pokemon/icons/3/287.png index 0790b8b1eda..a5ad0abd0f1 100644 Binary files a/public/images/pokemon/icons/3/287.png and b/public/images/pokemon/icons/3/287.png differ diff --git a/public/images/pokemon/icons/3/287s.png b/public/images/pokemon/icons/3/287s.png index cbfe091237e..39403087f0a 100644 Binary files a/public/images/pokemon/icons/3/287s.png and b/public/images/pokemon/icons/3/287s.png differ diff --git a/public/images/pokemon/icons/3/288.png b/public/images/pokemon/icons/3/288.png index 1788908666c..a3e7cdc961d 100644 Binary files a/public/images/pokemon/icons/3/288.png and b/public/images/pokemon/icons/3/288.png differ diff --git a/public/images/pokemon/icons/3/288s.png b/public/images/pokemon/icons/3/288s.png index 52c1b082a1f..ff3702e8d77 100644 Binary files a/public/images/pokemon/icons/3/288s.png and b/public/images/pokemon/icons/3/288s.png differ diff --git a/public/images/pokemon/icons/3/289.png b/public/images/pokemon/icons/3/289.png index e53f8abbc1a..2b87b0493ee 100644 Binary files a/public/images/pokemon/icons/3/289.png and b/public/images/pokemon/icons/3/289.png differ diff --git a/public/images/pokemon/icons/3/289s.png b/public/images/pokemon/icons/3/289s.png index 2a751ad260d..f0d9b75502d 100644 Binary files a/public/images/pokemon/icons/3/289s.png and b/public/images/pokemon/icons/3/289s.png differ diff --git a/public/images/pokemon/icons/3/290.png b/public/images/pokemon/icons/3/290.png index 61fa544160b..6463f056409 100644 Binary files a/public/images/pokemon/icons/3/290.png and b/public/images/pokemon/icons/3/290.png differ diff --git a/public/images/pokemon/icons/3/290s.png b/public/images/pokemon/icons/3/290s.png index ba1fbefb405..99fc8608ebb 100644 Binary files a/public/images/pokemon/icons/3/290s.png and b/public/images/pokemon/icons/3/290s.png differ diff --git a/public/images/pokemon/icons/3/291.png b/public/images/pokemon/icons/3/291.png index 65e158b70ac..9186a6a14ac 100644 Binary files a/public/images/pokemon/icons/3/291.png and b/public/images/pokemon/icons/3/291.png differ diff --git a/public/images/pokemon/icons/3/291s.png b/public/images/pokemon/icons/3/291s.png index d53bac44009..3ed55bc66da 100644 Binary files a/public/images/pokemon/icons/3/291s.png and b/public/images/pokemon/icons/3/291s.png differ diff --git a/public/images/pokemon/icons/3/292.png b/public/images/pokemon/icons/3/292.png index 288b02f6f42..f3fb7b8d38d 100644 Binary files a/public/images/pokemon/icons/3/292.png and b/public/images/pokemon/icons/3/292.png differ diff --git a/public/images/pokemon/icons/3/292s.png b/public/images/pokemon/icons/3/292s.png index ba8dc4cdd58..c896fea9435 100644 Binary files a/public/images/pokemon/icons/3/292s.png and b/public/images/pokemon/icons/3/292s.png differ diff --git a/public/images/pokemon/icons/3/293.png b/public/images/pokemon/icons/3/293.png index a00eba2f1f8..087cc0a4e6e 100644 Binary files a/public/images/pokemon/icons/3/293.png and b/public/images/pokemon/icons/3/293.png differ diff --git a/public/images/pokemon/icons/3/293s.png b/public/images/pokemon/icons/3/293s.png index 1096c3ff33e..f7c2e9ec1a1 100644 Binary files a/public/images/pokemon/icons/3/293s.png and b/public/images/pokemon/icons/3/293s.png differ diff --git a/public/images/pokemon/icons/3/294.png b/public/images/pokemon/icons/3/294.png index 3147aba933d..74967b5903d 100644 Binary files a/public/images/pokemon/icons/3/294.png and b/public/images/pokemon/icons/3/294.png differ diff --git a/public/images/pokemon/icons/3/294s.png b/public/images/pokemon/icons/3/294s.png index 541186d72f0..321a80402ca 100644 Binary files a/public/images/pokemon/icons/3/294s.png and b/public/images/pokemon/icons/3/294s.png differ diff --git a/public/images/pokemon/icons/3/295.png b/public/images/pokemon/icons/3/295.png index 747f8041b6a..6f703c9ca94 100644 Binary files a/public/images/pokemon/icons/3/295.png and b/public/images/pokemon/icons/3/295.png differ diff --git a/public/images/pokemon/icons/3/295s.png b/public/images/pokemon/icons/3/295s.png index b42270f27a6..7db2fce5afe 100644 Binary files a/public/images/pokemon/icons/3/295s.png and b/public/images/pokemon/icons/3/295s.png differ diff --git a/public/images/pokemon/icons/3/296.png b/public/images/pokemon/icons/3/296.png index 1952ec04eb4..84c23faa5e2 100644 Binary files a/public/images/pokemon/icons/3/296.png and b/public/images/pokemon/icons/3/296.png differ diff --git a/public/images/pokemon/icons/3/296s.png b/public/images/pokemon/icons/3/296s.png index 91ca5b288f5..0ccca6cb826 100644 Binary files a/public/images/pokemon/icons/3/296s.png and b/public/images/pokemon/icons/3/296s.png differ diff --git a/public/images/pokemon/icons/3/297.png b/public/images/pokemon/icons/3/297.png index 381f7ef1975..13b221042bc 100644 Binary files a/public/images/pokemon/icons/3/297.png and b/public/images/pokemon/icons/3/297.png differ diff --git a/public/images/pokemon/icons/3/297s.png b/public/images/pokemon/icons/3/297s.png index 08378df8a2b..171ed0ef160 100644 Binary files a/public/images/pokemon/icons/3/297s.png and b/public/images/pokemon/icons/3/297s.png differ diff --git a/public/images/pokemon/icons/3/298.png b/public/images/pokemon/icons/3/298.png index 3bc0c5d5c35..0de1824c354 100644 Binary files a/public/images/pokemon/icons/3/298.png and b/public/images/pokemon/icons/3/298.png differ diff --git a/public/images/pokemon/icons/3/298s.png b/public/images/pokemon/icons/3/298s.png index 3691c09725d..c310eabeb6c 100644 Binary files a/public/images/pokemon/icons/3/298s.png and b/public/images/pokemon/icons/3/298s.png differ diff --git a/public/images/pokemon/icons/3/299.png b/public/images/pokemon/icons/3/299.png index 71e0a0460f9..e2d008031cf 100644 Binary files a/public/images/pokemon/icons/3/299.png and b/public/images/pokemon/icons/3/299.png differ diff --git a/public/images/pokemon/icons/3/299s.png b/public/images/pokemon/icons/3/299s.png index 5ad13b8fdaa..fdaddd374d2 100644 Binary files a/public/images/pokemon/icons/3/299s.png and b/public/images/pokemon/icons/3/299s.png differ diff --git a/public/images/pokemon/icons/3/300.png b/public/images/pokemon/icons/3/300.png index 20d9ba68f8a..5e1e499e4c8 100644 Binary files a/public/images/pokemon/icons/3/300.png and b/public/images/pokemon/icons/3/300.png differ diff --git a/public/images/pokemon/icons/3/300s.png b/public/images/pokemon/icons/3/300s.png index b4d6618c1eb..8addb5fce66 100644 Binary files a/public/images/pokemon/icons/3/300s.png and b/public/images/pokemon/icons/3/300s.png differ diff --git a/public/images/pokemon/icons/3/301.png b/public/images/pokemon/icons/3/301.png index 2755a04fb61..0eaef015e6e 100644 Binary files a/public/images/pokemon/icons/3/301.png and b/public/images/pokemon/icons/3/301.png differ diff --git a/public/images/pokemon/icons/3/301s.png b/public/images/pokemon/icons/3/301s.png index 8a0b0282b9a..1b6710b571d 100644 Binary files a/public/images/pokemon/icons/3/301s.png and b/public/images/pokemon/icons/3/301s.png differ diff --git a/public/images/pokemon/icons/3/302-mega.png b/public/images/pokemon/icons/3/302-mega.png index 0bd2d86c3fb..05d4d70fafc 100644 Binary files a/public/images/pokemon/icons/3/302-mega.png and b/public/images/pokemon/icons/3/302-mega.png differ diff --git a/public/images/pokemon/icons/3/302.png b/public/images/pokemon/icons/3/302.png index ff107cc6388..2279ebd1d01 100644 Binary files a/public/images/pokemon/icons/3/302.png and b/public/images/pokemon/icons/3/302.png differ diff --git a/public/images/pokemon/icons/3/302s-mega.png b/public/images/pokemon/icons/3/302s-mega.png index b453154e4b8..cc8499099ae 100644 Binary files a/public/images/pokemon/icons/3/302s-mega.png and b/public/images/pokemon/icons/3/302s-mega.png differ diff --git a/public/images/pokemon/icons/3/302s.png b/public/images/pokemon/icons/3/302s.png index cc2d5edd898..298df2df2be 100644 Binary files a/public/images/pokemon/icons/3/302s.png and b/public/images/pokemon/icons/3/302s.png differ diff --git a/public/images/pokemon/icons/3/303-mega.png b/public/images/pokemon/icons/3/303-mega.png index 87cd211bd6a..56fc26bea97 100644 Binary files a/public/images/pokemon/icons/3/303-mega.png and b/public/images/pokemon/icons/3/303-mega.png differ diff --git a/public/images/pokemon/icons/3/303.png b/public/images/pokemon/icons/3/303.png index 4dc87318c2f..c73bfb96502 100644 Binary files a/public/images/pokemon/icons/3/303.png and b/public/images/pokemon/icons/3/303.png differ diff --git a/public/images/pokemon/icons/3/303s-mega.png b/public/images/pokemon/icons/3/303s-mega.png index 7239f678716..0ee1d580865 100644 Binary files a/public/images/pokemon/icons/3/303s-mega.png and b/public/images/pokemon/icons/3/303s-mega.png differ diff --git a/public/images/pokemon/icons/3/303s.png b/public/images/pokemon/icons/3/303s.png index 9f962efa252..a8f32b53a86 100644 Binary files a/public/images/pokemon/icons/3/303s.png and b/public/images/pokemon/icons/3/303s.png differ diff --git a/public/images/pokemon/icons/3/304.png b/public/images/pokemon/icons/3/304.png index 6886264bce9..f144e7ee8fb 100644 Binary files a/public/images/pokemon/icons/3/304.png and b/public/images/pokemon/icons/3/304.png differ diff --git a/public/images/pokemon/icons/3/304s.png b/public/images/pokemon/icons/3/304s.png index 2aa7f1aaabb..f10e9840567 100644 Binary files a/public/images/pokemon/icons/3/304s.png and b/public/images/pokemon/icons/3/304s.png differ diff --git a/public/images/pokemon/icons/3/305.png b/public/images/pokemon/icons/3/305.png index 225cc28c953..ae5c0e8f935 100644 Binary files a/public/images/pokemon/icons/3/305.png and b/public/images/pokemon/icons/3/305.png differ diff --git a/public/images/pokemon/icons/3/305s.png b/public/images/pokemon/icons/3/305s.png index 97158b9435e..dd9b4cac1e9 100644 Binary files a/public/images/pokemon/icons/3/305s.png and b/public/images/pokemon/icons/3/305s.png differ diff --git a/public/images/pokemon/icons/3/306-mega.png b/public/images/pokemon/icons/3/306-mega.png index ca21044b382..a36f0520af4 100644 Binary files a/public/images/pokemon/icons/3/306-mega.png and b/public/images/pokemon/icons/3/306-mega.png differ diff --git a/public/images/pokemon/icons/3/306.png b/public/images/pokemon/icons/3/306.png index 08ec950907c..7437624541a 100644 Binary files a/public/images/pokemon/icons/3/306.png and b/public/images/pokemon/icons/3/306.png differ diff --git a/public/images/pokemon/icons/3/306s-mega.png b/public/images/pokemon/icons/3/306s-mega.png index b98d59f5029..3d7be516da3 100644 Binary files a/public/images/pokemon/icons/3/306s-mega.png and b/public/images/pokemon/icons/3/306s-mega.png differ diff --git a/public/images/pokemon/icons/3/306s.png b/public/images/pokemon/icons/3/306s.png index ca169b00911..2df8d83f890 100644 Binary files a/public/images/pokemon/icons/3/306s.png and b/public/images/pokemon/icons/3/306s.png differ diff --git a/public/images/pokemon/icons/3/307.png b/public/images/pokemon/icons/3/307.png index 7d61793f30d..1961d9f5cdb 100644 Binary files a/public/images/pokemon/icons/3/307.png and b/public/images/pokemon/icons/3/307.png differ diff --git a/public/images/pokemon/icons/3/307s.png b/public/images/pokemon/icons/3/307s.png index da106937280..949046aa9a8 100644 Binary files a/public/images/pokemon/icons/3/307s.png and b/public/images/pokemon/icons/3/307s.png differ diff --git a/public/images/pokemon/icons/3/308-mega.png b/public/images/pokemon/icons/3/308-mega.png index dc126258147..3f64d66b72f 100644 Binary files a/public/images/pokemon/icons/3/308-mega.png and b/public/images/pokemon/icons/3/308-mega.png differ diff --git a/public/images/pokemon/icons/3/308.png b/public/images/pokemon/icons/3/308.png index a94c41d715d..5c641e6fb4a 100644 Binary files a/public/images/pokemon/icons/3/308.png and b/public/images/pokemon/icons/3/308.png differ diff --git a/public/images/pokemon/icons/3/308s-mega.png b/public/images/pokemon/icons/3/308s-mega.png index 5af8d18a5e7..4cd8d7d44fa 100644 Binary files a/public/images/pokemon/icons/3/308s-mega.png and b/public/images/pokemon/icons/3/308s-mega.png differ diff --git a/public/images/pokemon/icons/3/308s.png b/public/images/pokemon/icons/3/308s.png index 845ba555eeb..c003fdeca6f 100644 Binary files a/public/images/pokemon/icons/3/308s.png and b/public/images/pokemon/icons/3/308s.png differ diff --git a/public/images/pokemon/icons/3/309.png b/public/images/pokemon/icons/3/309.png index 44ab0f436d7..d947a68f54a 100644 Binary files a/public/images/pokemon/icons/3/309.png and b/public/images/pokemon/icons/3/309.png differ diff --git a/public/images/pokemon/icons/3/309s.png b/public/images/pokemon/icons/3/309s.png index 960e197f50a..c26d612a0e8 100644 Binary files a/public/images/pokemon/icons/3/309s.png and b/public/images/pokemon/icons/3/309s.png differ diff --git a/public/images/pokemon/icons/3/310-mega.png b/public/images/pokemon/icons/3/310-mega.png index db1e9092e1d..76d97697fef 100644 Binary files a/public/images/pokemon/icons/3/310-mega.png and b/public/images/pokemon/icons/3/310-mega.png differ diff --git a/public/images/pokemon/icons/3/310.png b/public/images/pokemon/icons/3/310.png index 30409840943..983494bf45b 100644 Binary files a/public/images/pokemon/icons/3/310.png and b/public/images/pokemon/icons/3/310.png differ diff --git a/public/images/pokemon/icons/3/310s-mega.png b/public/images/pokemon/icons/3/310s-mega.png index 33186da5454..beb1f088683 100644 Binary files a/public/images/pokemon/icons/3/310s-mega.png and b/public/images/pokemon/icons/3/310s-mega.png differ diff --git a/public/images/pokemon/icons/3/310s.png b/public/images/pokemon/icons/3/310s.png index 5bf1782396b..5d774dca406 100644 Binary files a/public/images/pokemon/icons/3/310s.png and b/public/images/pokemon/icons/3/310s.png differ diff --git a/public/images/pokemon/icons/3/311.png b/public/images/pokemon/icons/3/311.png index 503b477cbf8..a70f1341ab0 100644 Binary files a/public/images/pokemon/icons/3/311.png and b/public/images/pokemon/icons/3/311.png differ diff --git a/public/images/pokemon/icons/3/311s.png b/public/images/pokemon/icons/3/311s.png index 77522f02a4f..873353fbccd 100644 Binary files a/public/images/pokemon/icons/3/311s.png and b/public/images/pokemon/icons/3/311s.png differ diff --git a/public/images/pokemon/icons/3/312.png b/public/images/pokemon/icons/3/312.png index b90efb3b527..a477d4c225a 100644 Binary files a/public/images/pokemon/icons/3/312.png and b/public/images/pokemon/icons/3/312.png differ diff --git a/public/images/pokemon/icons/3/312s.png b/public/images/pokemon/icons/3/312s.png index 9a427b8b383..f9adc6cdba6 100644 Binary files a/public/images/pokemon/icons/3/312s.png and b/public/images/pokemon/icons/3/312s.png differ diff --git a/public/images/pokemon/icons/3/313.png b/public/images/pokemon/icons/3/313.png index 9254f2c4c68..a687a9f5531 100644 Binary files a/public/images/pokemon/icons/3/313.png and b/public/images/pokemon/icons/3/313.png differ diff --git a/public/images/pokemon/icons/3/313s.png b/public/images/pokemon/icons/3/313s.png index b91d836e5c5..af9311d25b2 100644 Binary files a/public/images/pokemon/icons/3/313s.png and b/public/images/pokemon/icons/3/313s.png differ diff --git a/public/images/pokemon/icons/3/314.png b/public/images/pokemon/icons/3/314.png index 22e4d9b76f4..d60d4dee520 100644 Binary files a/public/images/pokemon/icons/3/314.png and b/public/images/pokemon/icons/3/314.png differ diff --git a/public/images/pokemon/icons/3/314s.png b/public/images/pokemon/icons/3/314s.png index 24ca632ebdb..2e72d3fd3e8 100644 Binary files a/public/images/pokemon/icons/3/314s.png and b/public/images/pokemon/icons/3/314s.png differ diff --git a/public/images/pokemon/icons/3/315.png b/public/images/pokemon/icons/3/315.png index 48a4e3a0118..143cd8a5802 100644 Binary files a/public/images/pokemon/icons/3/315.png and b/public/images/pokemon/icons/3/315.png differ diff --git a/public/images/pokemon/icons/3/315s.png b/public/images/pokemon/icons/3/315s.png index a304b860d04..ef8b0520444 100644 Binary files a/public/images/pokemon/icons/3/315s.png and b/public/images/pokemon/icons/3/315s.png differ diff --git a/public/images/pokemon/icons/3/316.png b/public/images/pokemon/icons/3/316.png index dbafef616ec..083693e0019 100644 Binary files a/public/images/pokemon/icons/3/316.png and b/public/images/pokemon/icons/3/316.png differ diff --git a/public/images/pokemon/icons/3/316s.png b/public/images/pokemon/icons/3/316s.png index 4c71dd88eff..a5d601bed09 100644 Binary files a/public/images/pokemon/icons/3/316s.png and b/public/images/pokemon/icons/3/316s.png differ diff --git a/public/images/pokemon/icons/3/317.png b/public/images/pokemon/icons/3/317.png index c8fda8313ab..395b90dc510 100644 Binary files a/public/images/pokemon/icons/3/317.png and b/public/images/pokemon/icons/3/317.png differ diff --git a/public/images/pokemon/icons/3/317s.png b/public/images/pokemon/icons/3/317s.png index 691091ac013..22ea872bb57 100644 Binary files a/public/images/pokemon/icons/3/317s.png and b/public/images/pokemon/icons/3/317s.png differ diff --git a/public/images/pokemon/icons/3/318.png b/public/images/pokemon/icons/3/318.png index baa74adb7ba..d39a4e6faf3 100644 Binary files a/public/images/pokemon/icons/3/318.png and b/public/images/pokemon/icons/3/318.png differ diff --git a/public/images/pokemon/icons/3/318s.png b/public/images/pokemon/icons/3/318s.png index 79e348d8292..1f4f9beb739 100644 Binary files a/public/images/pokemon/icons/3/318s.png and b/public/images/pokemon/icons/3/318s.png differ diff --git a/public/images/pokemon/icons/3/319-mega.png b/public/images/pokemon/icons/3/319-mega.png index 44910aab31f..c00f59fe805 100644 Binary files a/public/images/pokemon/icons/3/319-mega.png and b/public/images/pokemon/icons/3/319-mega.png differ diff --git a/public/images/pokemon/icons/3/319.png b/public/images/pokemon/icons/3/319.png index 095535b9436..d46541708d8 100644 Binary files a/public/images/pokemon/icons/3/319.png and b/public/images/pokemon/icons/3/319.png differ diff --git a/public/images/pokemon/icons/3/319s-mega.png b/public/images/pokemon/icons/3/319s-mega.png index af507bdd047..5b30702dca5 100644 Binary files a/public/images/pokemon/icons/3/319s-mega.png and b/public/images/pokemon/icons/3/319s-mega.png differ diff --git a/public/images/pokemon/icons/3/319s.png b/public/images/pokemon/icons/3/319s.png index e20478533c7..1fbaa2c1b82 100644 Binary files a/public/images/pokemon/icons/3/319s.png and b/public/images/pokemon/icons/3/319s.png differ diff --git a/public/images/pokemon/icons/3/320.png b/public/images/pokemon/icons/3/320.png index 9b67cd62ff7..e9f1688e20d 100644 Binary files a/public/images/pokemon/icons/3/320.png and b/public/images/pokemon/icons/3/320.png differ diff --git a/public/images/pokemon/icons/3/320s.png b/public/images/pokemon/icons/3/320s.png index 25b20445536..65c0bee737e 100644 Binary files a/public/images/pokemon/icons/3/320s.png and b/public/images/pokemon/icons/3/320s.png differ diff --git a/public/images/pokemon/icons/3/321.png b/public/images/pokemon/icons/3/321.png index 6e9e9ce874b..3d5d9d8b1ac 100644 Binary files a/public/images/pokemon/icons/3/321.png and b/public/images/pokemon/icons/3/321.png differ diff --git a/public/images/pokemon/icons/3/321s.png b/public/images/pokemon/icons/3/321s.png index 44d003790c5..a3b83e5cdfb 100644 Binary files a/public/images/pokemon/icons/3/321s.png and b/public/images/pokemon/icons/3/321s.png differ diff --git a/public/images/pokemon/icons/3/322.png b/public/images/pokemon/icons/3/322.png index 620acede7b0..567d2c295e5 100644 Binary files a/public/images/pokemon/icons/3/322.png and b/public/images/pokemon/icons/3/322.png differ diff --git a/public/images/pokemon/icons/3/322s.png b/public/images/pokemon/icons/3/322s.png index da420f73469..f09a168ce2e 100644 Binary files a/public/images/pokemon/icons/3/322s.png and b/public/images/pokemon/icons/3/322s.png differ diff --git a/public/images/pokemon/icons/3/323-mega.png b/public/images/pokemon/icons/3/323-mega.png index 8d50405ed0e..d538c5b6175 100644 Binary files a/public/images/pokemon/icons/3/323-mega.png and b/public/images/pokemon/icons/3/323-mega.png differ diff --git a/public/images/pokemon/icons/3/323.png b/public/images/pokemon/icons/3/323.png index a6bb481cf19..ad4565a13b6 100644 Binary files a/public/images/pokemon/icons/3/323.png and b/public/images/pokemon/icons/3/323.png differ diff --git a/public/images/pokemon/icons/3/323s-mega.png b/public/images/pokemon/icons/3/323s-mega.png index 45f5bf46d6e..e0930a3991f 100644 Binary files a/public/images/pokemon/icons/3/323s-mega.png and b/public/images/pokemon/icons/3/323s-mega.png differ diff --git a/public/images/pokemon/icons/3/323s.png b/public/images/pokemon/icons/3/323s.png index 2f2f0204ef4..bc23cd28692 100644 Binary files a/public/images/pokemon/icons/3/323s.png and b/public/images/pokemon/icons/3/323s.png differ diff --git a/public/images/pokemon/icons/3/324.png b/public/images/pokemon/icons/3/324.png index 2781fea76fa..da1059f3fd7 100644 Binary files a/public/images/pokemon/icons/3/324.png and b/public/images/pokemon/icons/3/324.png differ diff --git a/public/images/pokemon/icons/3/324s.png b/public/images/pokemon/icons/3/324s.png index 12345391c1c..a624a058817 100644 Binary files a/public/images/pokemon/icons/3/324s.png and b/public/images/pokemon/icons/3/324s.png differ diff --git a/public/images/pokemon/icons/3/325.png b/public/images/pokemon/icons/3/325.png index ae717e2a15b..2460d793ee4 100644 Binary files a/public/images/pokemon/icons/3/325.png and b/public/images/pokemon/icons/3/325.png differ diff --git a/public/images/pokemon/icons/3/325s.png b/public/images/pokemon/icons/3/325s.png index 2111e23b99c..0e890695506 100644 Binary files a/public/images/pokemon/icons/3/325s.png and b/public/images/pokemon/icons/3/325s.png differ diff --git a/public/images/pokemon/icons/3/326.png b/public/images/pokemon/icons/3/326.png index b28989939ff..19051a4abcc 100644 Binary files a/public/images/pokemon/icons/3/326.png and b/public/images/pokemon/icons/3/326.png differ diff --git a/public/images/pokemon/icons/3/326s.png b/public/images/pokemon/icons/3/326s.png index e7b6ff77e4f..f61d6abb0f8 100644 Binary files a/public/images/pokemon/icons/3/326s.png and b/public/images/pokemon/icons/3/326s.png differ diff --git a/public/images/pokemon/icons/3/327.png b/public/images/pokemon/icons/3/327.png index d3ddd7f6f86..9213abce175 100644 Binary files a/public/images/pokemon/icons/3/327.png and b/public/images/pokemon/icons/3/327.png differ diff --git a/public/images/pokemon/icons/3/327s.png b/public/images/pokemon/icons/3/327s.png index 6e4e716e135..d9ee8059198 100644 Binary files a/public/images/pokemon/icons/3/327s.png and b/public/images/pokemon/icons/3/327s.png differ diff --git a/public/images/pokemon/icons/3/328.png b/public/images/pokemon/icons/3/328.png index 6e03293d2da..83456fd5b90 100644 Binary files a/public/images/pokemon/icons/3/328.png and b/public/images/pokemon/icons/3/328.png differ diff --git a/public/images/pokemon/icons/3/328s.png b/public/images/pokemon/icons/3/328s.png index afa9393d80a..406810e25cc 100644 Binary files a/public/images/pokemon/icons/3/328s.png and b/public/images/pokemon/icons/3/328s.png differ diff --git a/public/images/pokemon/icons/3/329.png b/public/images/pokemon/icons/3/329.png index f7f7ca5bd68..b812eff3de2 100644 Binary files a/public/images/pokemon/icons/3/329.png and b/public/images/pokemon/icons/3/329.png differ diff --git a/public/images/pokemon/icons/3/329s.png b/public/images/pokemon/icons/3/329s.png index 6b3dd18cdf6..a2e8eda39ea 100644 Binary files a/public/images/pokemon/icons/3/329s.png and b/public/images/pokemon/icons/3/329s.png differ diff --git a/public/images/pokemon/icons/3/330.png b/public/images/pokemon/icons/3/330.png index 133f76dc2fb..499c6b794e9 100644 Binary files a/public/images/pokemon/icons/3/330.png and b/public/images/pokemon/icons/3/330.png differ diff --git a/public/images/pokemon/icons/3/330s.png b/public/images/pokemon/icons/3/330s.png index ac302f0b69e..fb026a7c3aa 100644 Binary files a/public/images/pokemon/icons/3/330s.png and b/public/images/pokemon/icons/3/330s.png differ diff --git a/public/images/pokemon/icons/3/331.png b/public/images/pokemon/icons/3/331.png index a94bb5022d1..983244f83f1 100644 Binary files a/public/images/pokemon/icons/3/331.png and b/public/images/pokemon/icons/3/331.png differ diff --git a/public/images/pokemon/icons/3/331s.png b/public/images/pokemon/icons/3/331s.png index eb534f4af84..310818f0a04 100644 Binary files a/public/images/pokemon/icons/3/331s.png and b/public/images/pokemon/icons/3/331s.png differ diff --git a/public/images/pokemon/icons/3/332.png b/public/images/pokemon/icons/3/332.png index 630ac340134..fa043c0b9c6 100644 Binary files a/public/images/pokemon/icons/3/332.png and b/public/images/pokemon/icons/3/332.png differ diff --git a/public/images/pokemon/icons/3/332s.png b/public/images/pokemon/icons/3/332s.png index c85fc5df15c..b854c2d477c 100644 Binary files a/public/images/pokemon/icons/3/332s.png and b/public/images/pokemon/icons/3/332s.png differ diff --git a/public/images/pokemon/icons/3/333.png b/public/images/pokemon/icons/3/333.png index e22ac453e53..5b4f8ece115 100644 Binary files a/public/images/pokemon/icons/3/333.png and b/public/images/pokemon/icons/3/333.png differ diff --git a/public/images/pokemon/icons/3/333s.png b/public/images/pokemon/icons/3/333s.png index a7de969d5dc..a8708add4b8 100644 Binary files a/public/images/pokemon/icons/3/333s.png and b/public/images/pokemon/icons/3/333s.png differ diff --git a/public/images/pokemon/icons/3/334-mega.png b/public/images/pokemon/icons/3/334-mega.png index 14204b56296..7330e32f6fc 100644 Binary files a/public/images/pokemon/icons/3/334-mega.png and b/public/images/pokemon/icons/3/334-mega.png differ diff --git a/public/images/pokemon/icons/3/334.png b/public/images/pokemon/icons/3/334.png index 82a073d416d..4fc02f84015 100644 Binary files a/public/images/pokemon/icons/3/334.png and b/public/images/pokemon/icons/3/334.png differ diff --git a/public/images/pokemon/icons/3/334s-mega.png b/public/images/pokemon/icons/3/334s-mega.png index 8371d20fd7d..81eeafab7b1 100644 Binary files a/public/images/pokemon/icons/3/334s-mega.png and b/public/images/pokemon/icons/3/334s-mega.png differ diff --git a/public/images/pokemon/icons/3/334s.png b/public/images/pokemon/icons/3/334s.png index e13c7d23f40..7611b4bd2c3 100644 Binary files a/public/images/pokemon/icons/3/334s.png and b/public/images/pokemon/icons/3/334s.png differ diff --git a/public/images/pokemon/icons/3/335.png b/public/images/pokemon/icons/3/335.png index c7112ace818..f002e9142cc 100644 Binary files a/public/images/pokemon/icons/3/335.png and b/public/images/pokemon/icons/3/335.png differ diff --git a/public/images/pokemon/icons/3/335s.png b/public/images/pokemon/icons/3/335s.png index e8a4c044437..010dfc3feaa 100644 Binary files a/public/images/pokemon/icons/3/335s.png and b/public/images/pokemon/icons/3/335s.png differ diff --git a/public/images/pokemon/icons/3/336.png b/public/images/pokemon/icons/3/336.png index 6b474169039..1b3781ec28c 100644 Binary files a/public/images/pokemon/icons/3/336.png and b/public/images/pokemon/icons/3/336.png differ diff --git a/public/images/pokemon/icons/3/336s.png b/public/images/pokemon/icons/3/336s.png index 53ae395a205..daf9e167220 100644 Binary files a/public/images/pokemon/icons/3/336s.png and b/public/images/pokemon/icons/3/336s.png differ diff --git a/public/images/pokemon/icons/3/337.png b/public/images/pokemon/icons/3/337.png index 6ef5dddd581..73abe0f7287 100644 Binary files a/public/images/pokemon/icons/3/337.png and b/public/images/pokemon/icons/3/337.png differ diff --git a/public/images/pokemon/icons/3/337s.png b/public/images/pokemon/icons/3/337s.png index 21587280c7c..3090afc9dcd 100644 Binary files a/public/images/pokemon/icons/3/337s.png and b/public/images/pokemon/icons/3/337s.png differ diff --git a/public/images/pokemon/icons/3/338.png b/public/images/pokemon/icons/3/338.png index 78083bbbb4a..5ade91b3aa8 100644 Binary files a/public/images/pokemon/icons/3/338.png and b/public/images/pokemon/icons/3/338.png differ diff --git a/public/images/pokemon/icons/3/338s.png b/public/images/pokemon/icons/3/338s.png index 57bc536d813..d42bb1bbe6a 100644 Binary files a/public/images/pokemon/icons/3/338s.png and b/public/images/pokemon/icons/3/338s.png differ diff --git a/public/images/pokemon/icons/3/339.png b/public/images/pokemon/icons/3/339.png index 9c5c13d2a8e..5594ded1a3d 100644 Binary files a/public/images/pokemon/icons/3/339.png and b/public/images/pokemon/icons/3/339.png differ diff --git a/public/images/pokemon/icons/3/339s.png b/public/images/pokemon/icons/3/339s.png index 09c2df02fed..2a8ebd9bf44 100644 Binary files a/public/images/pokemon/icons/3/339s.png and b/public/images/pokemon/icons/3/339s.png differ diff --git a/public/images/pokemon/icons/3/340.png b/public/images/pokemon/icons/3/340.png index ba77725feab..8674874a18c 100644 Binary files a/public/images/pokemon/icons/3/340.png and b/public/images/pokemon/icons/3/340.png differ diff --git a/public/images/pokemon/icons/3/340s.png b/public/images/pokemon/icons/3/340s.png index 142e06e48d1..b84fb757f6b 100644 Binary files a/public/images/pokemon/icons/3/340s.png and b/public/images/pokemon/icons/3/340s.png differ diff --git a/public/images/pokemon/icons/3/341.png b/public/images/pokemon/icons/3/341.png index 0f8259365b7..3381d8b4804 100644 Binary files a/public/images/pokemon/icons/3/341.png and b/public/images/pokemon/icons/3/341.png differ diff --git a/public/images/pokemon/icons/3/341s.png b/public/images/pokemon/icons/3/341s.png index 545863fab32..54ac87af221 100644 Binary files a/public/images/pokemon/icons/3/341s.png and b/public/images/pokemon/icons/3/341s.png differ diff --git a/public/images/pokemon/icons/3/342.png b/public/images/pokemon/icons/3/342.png index 49de1691cd0..d600003cfac 100644 Binary files a/public/images/pokemon/icons/3/342.png and b/public/images/pokemon/icons/3/342.png differ diff --git a/public/images/pokemon/icons/3/342s.png b/public/images/pokemon/icons/3/342s.png index 9e07961b032..b1a925ccb7c 100644 Binary files a/public/images/pokemon/icons/3/342s.png and b/public/images/pokemon/icons/3/342s.png differ diff --git a/public/images/pokemon/icons/3/343.png b/public/images/pokemon/icons/3/343.png index 1d1ac2c014d..feb6a98aadf 100644 Binary files a/public/images/pokemon/icons/3/343.png and b/public/images/pokemon/icons/3/343.png differ diff --git a/public/images/pokemon/icons/3/343s.png b/public/images/pokemon/icons/3/343s.png index ce1e48ba07b..4844b0234cc 100644 Binary files a/public/images/pokemon/icons/3/343s.png and b/public/images/pokemon/icons/3/343s.png differ diff --git a/public/images/pokemon/icons/3/344.png b/public/images/pokemon/icons/3/344.png index 2bc129000c2..9f62ccff7bb 100644 Binary files a/public/images/pokemon/icons/3/344.png and b/public/images/pokemon/icons/3/344.png differ diff --git a/public/images/pokemon/icons/3/344s.png b/public/images/pokemon/icons/3/344s.png index a2f770cb4b7..54354e921fe 100644 Binary files a/public/images/pokemon/icons/3/344s.png and b/public/images/pokemon/icons/3/344s.png differ diff --git a/public/images/pokemon/icons/3/345.png b/public/images/pokemon/icons/3/345.png index 9baf94e9586..1ee3386741d 100644 Binary files a/public/images/pokemon/icons/3/345.png and b/public/images/pokemon/icons/3/345.png differ diff --git a/public/images/pokemon/icons/3/345s.png b/public/images/pokemon/icons/3/345s.png index 47c05f3259c..4d6f95eee5a 100644 Binary files a/public/images/pokemon/icons/3/345s.png and b/public/images/pokemon/icons/3/345s.png differ diff --git a/public/images/pokemon/icons/3/346.png b/public/images/pokemon/icons/3/346.png index 21636de79ce..7dabe2a7d3e 100644 Binary files a/public/images/pokemon/icons/3/346.png and b/public/images/pokemon/icons/3/346.png differ diff --git a/public/images/pokemon/icons/3/346s.png b/public/images/pokemon/icons/3/346s.png index 218e13cc45b..14eff3d67b0 100644 Binary files a/public/images/pokemon/icons/3/346s.png and b/public/images/pokemon/icons/3/346s.png differ diff --git a/public/images/pokemon/icons/3/347.png b/public/images/pokemon/icons/3/347.png index 1be8f32923a..d8734c068ed 100644 Binary files a/public/images/pokemon/icons/3/347.png and b/public/images/pokemon/icons/3/347.png differ diff --git a/public/images/pokemon/icons/3/347s.png b/public/images/pokemon/icons/3/347s.png index 90a1dda5351..e0900331e32 100644 Binary files a/public/images/pokemon/icons/3/347s.png and b/public/images/pokemon/icons/3/347s.png differ diff --git a/public/images/pokemon/icons/3/348.png b/public/images/pokemon/icons/3/348.png index 9ea692f93dc..23524707ddd 100644 Binary files a/public/images/pokemon/icons/3/348.png and b/public/images/pokemon/icons/3/348.png differ diff --git a/public/images/pokemon/icons/3/348s.png b/public/images/pokemon/icons/3/348s.png index 24fd4fcdf0c..c25f0a3973e 100644 Binary files a/public/images/pokemon/icons/3/348s.png and b/public/images/pokemon/icons/3/348s.png differ diff --git a/public/images/pokemon/icons/3/349.png b/public/images/pokemon/icons/3/349.png index 4330ed5534b..c7a131831ab 100644 Binary files a/public/images/pokemon/icons/3/349.png and b/public/images/pokemon/icons/3/349.png differ diff --git a/public/images/pokemon/icons/3/349s.png b/public/images/pokemon/icons/3/349s.png index 4697bc55c64..74daf81b3a5 100644 Binary files a/public/images/pokemon/icons/3/349s.png and b/public/images/pokemon/icons/3/349s.png differ diff --git a/public/images/pokemon/icons/3/350.png b/public/images/pokemon/icons/3/350.png index 988ff877dc5..def7781f1c3 100644 Binary files a/public/images/pokemon/icons/3/350.png and b/public/images/pokemon/icons/3/350.png differ diff --git a/public/images/pokemon/icons/3/350s.png b/public/images/pokemon/icons/3/350s.png index 4f5de9f5d57..7d3e58f9c70 100644 Binary files a/public/images/pokemon/icons/3/350s.png and b/public/images/pokemon/icons/3/350s.png differ diff --git a/public/images/pokemon/icons/3/351-rainy.png b/public/images/pokemon/icons/3/351-rainy.png index 83cb2affec4..ab3848ef73d 100644 Binary files a/public/images/pokemon/icons/3/351-rainy.png and b/public/images/pokemon/icons/3/351-rainy.png differ diff --git a/public/images/pokemon/icons/3/351-snowy.png b/public/images/pokemon/icons/3/351-snowy.png index 77a558d58e9..b2d08ea83cf 100644 Binary files a/public/images/pokemon/icons/3/351-snowy.png and b/public/images/pokemon/icons/3/351-snowy.png differ diff --git a/public/images/pokemon/icons/3/351-sunny.png b/public/images/pokemon/icons/3/351-sunny.png index a27385519fa..4babe5d3b14 100644 Binary files a/public/images/pokemon/icons/3/351-sunny.png and b/public/images/pokemon/icons/3/351-sunny.png differ diff --git a/public/images/pokemon/icons/3/351.png b/public/images/pokemon/icons/3/351.png index 26c3bc83b7c..03b315cde95 100644 Binary files a/public/images/pokemon/icons/3/351.png and b/public/images/pokemon/icons/3/351.png differ diff --git a/public/images/pokemon/icons/3/351s-rainy.png b/public/images/pokemon/icons/3/351s-rainy.png index 3fa83b790de..73d202c2e06 100644 Binary files a/public/images/pokemon/icons/3/351s-rainy.png and b/public/images/pokemon/icons/3/351s-rainy.png differ diff --git a/public/images/pokemon/icons/3/351s-snowy.png b/public/images/pokemon/icons/3/351s-snowy.png index 87bf16d24f2..7606d320b8b 100644 Binary files a/public/images/pokemon/icons/3/351s-snowy.png and b/public/images/pokemon/icons/3/351s-snowy.png differ diff --git a/public/images/pokemon/icons/3/351s-sunny.png b/public/images/pokemon/icons/3/351s-sunny.png index c0a1a176228..fb79310ff48 100644 Binary files a/public/images/pokemon/icons/3/351s-sunny.png and b/public/images/pokemon/icons/3/351s-sunny.png differ diff --git a/public/images/pokemon/icons/3/351s.png b/public/images/pokemon/icons/3/351s.png index 109a0479a0c..12ccb55f6ae 100644 Binary files a/public/images/pokemon/icons/3/351s.png and b/public/images/pokemon/icons/3/351s.png differ diff --git a/public/images/pokemon/icons/3/352.png b/public/images/pokemon/icons/3/352.png index 3beff5a35b9..62357c24546 100644 Binary files a/public/images/pokemon/icons/3/352.png and b/public/images/pokemon/icons/3/352.png differ diff --git a/public/images/pokemon/icons/3/352s.png b/public/images/pokemon/icons/3/352s.png index 5bf1a7a3594..e4bb0d0d278 100644 Binary files a/public/images/pokemon/icons/3/352s.png and b/public/images/pokemon/icons/3/352s.png differ diff --git a/public/images/pokemon/icons/3/353.png b/public/images/pokemon/icons/3/353.png index dc26945f1c4..f4b0a1328e5 100644 Binary files a/public/images/pokemon/icons/3/353.png and b/public/images/pokemon/icons/3/353.png differ diff --git a/public/images/pokemon/icons/3/353s.png b/public/images/pokemon/icons/3/353s.png index 83eff1dcb0e..083a8ad679e 100644 Binary files a/public/images/pokemon/icons/3/353s.png and b/public/images/pokemon/icons/3/353s.png differ diff --git a/public/images/pokemon/icons/3/354-mega.png b/public/images/pokemon/icons/3/354-mega.png index 048af586a5d..98a910e3bdb 100644 Binary files a/public/images/pokemon/icons/3/354-mega.png and b/public/images/pokemon/icons/3/354-mega.png differ diff --git a/public/images/pokemon/icons/3/354.png b/public/images/pokemon/icons/3/354.png index e9cc91f41b3..944b254f532 100644 Binary files a/public/images/pokemon/icons/3/354.png and b/public/images/pokemon/icons/3/354.png differ diff --git a/public/images/pokemon/icons/3/354s-mega.png b/public/images/pokemon/icons/3/354s-mega.png index 9dc66f686c6..95da36bbc46 100644 Binary files a/public/images/pokemon/icons/3/354s-mega.png and b/public/images/pokemon/icons/3/354s-mega.png differ diff --git a/public/images/pokemon/icons/3/354s.png b/public/images/pokemon/icons/3/354s.png index 6c54a2099a8..e8548edb9c0 100644 Binary files a/public/images/pokemon/icons/3/354s.png and b/public/images/pokemon/icons/3/354s.png differ diff --git a/public/images/pokemon/icons/3/355.png b/public/images/pokemon/icons/3/355.png index d7fab45e0e7..c7e8adcbd22 100644 Binary files a/public/images/pokemon/icons/3/355.png and b/public/images/pokemon/icons/3/355.png differ diff --git a/public/images/pokemon/icons/3/355s.png b/public/images/pokemon/icons/3/355s.png index fe315edcc5c..b66d90c53d8 100644 Binary files a/public/images/pokemon/icons/3/355s.png and b/public/images/pokemon/icons/3/355s.png differ diff --git a/public/images/pokemon/icons/3/356.png b/public/images/pokemon/icons/3/356.png index 0239424734d..0e237117f60 100644 Binary files a/public/images/pokemon/icons/3/356.png and b/public/images/pokemon/icons/3/356.png differ diff --git a/public/images/pokemon/icons/3/356s.png b/public/images/pokemon/icons/3/356s.png index 3533a894069..bb89670484e 100644 Binary files a/public/images/pokemon/icons/3/356s.png and b/public/images/pokemon/icons/3/356s.png differ diff --git a/public/images/pokemon/icons/3/357.png b/public/images/pokemon/icons/3/357.png index 983ec2d7788..6d742b57206 100644 Binary files a/public/images/pokemon/icons/3/357.png and b/public/images/pokemon/icons/3/357.png differ diff --git a/public/images/pokemon/icons/3/357s.png b/public/images/pokemon/icons/3/357s.png index f694fbfc27d..ceb08c863c1 100644 Binary files a/public/images/pokemon/icons/3/357s.png and b/public/images/pokemon/icons/3/357s.png differ diff --git a/public/images/pokemon/icons/3/358.png b/public/images/pokemon/icons/3/358.png index 7bd697f5719..61bdfadf5eb 100644 Binary files a/public/images/pokemon/icons/3/358.png and b/public/images/pokemon/icons/3/358.png differ diff --git a/public/images/pokemon/icons/3/358s.png b/public/images/pokemon/icons/3/358s.png index b9e0da2e582..0ea64b16da3 100644 Binary files a/public/images/pokemon/icons/3/358s.png and b/public/images/pokemon/icons/3/358s.png differ diff --git a/public/images/pokemon/icons/3/359-mega.png b/public/images/pokemon/icons/3/359-mega.png index 64ac779cdd5..5c40f916a09 100644 Binary files a/public/images/pokemon/icons/3/359-mega.png and b/public/images/pokemon/icons/3/359-mega.png differ diff --git a/public/images/pokemon/icons/3/359.png b/public/images/pokemon/icons/3/359.png index 60793f0e5a0..23613afddc2 100644 Binary files a/public/images/pokemon/icons/3/359.png and b/public/images/pokemon/icons/3/359.png differ diff --git a/public/images/pokemon/icons/3/359s-mega.png b/public/images/pokemon/icons/3/359s-mega.png index 20d5a4f2fee..4fa53ee4947 100644 Binary files a/public/images/pokemon/icons/3/359s-mega.png and b/public/images/pokemon/icons/3/359s-mega.png differ diff --git a/public/images/pokemon/icons/3/359s.png b/public/images/pokemon/icons/3/359s.png index 18648a82203..c7b19a6ae79 100644 Binary files a/public/images/pokemon/icons/3/359s.png and b/public/images/pokemon/icons/3/359s.png differ diff --git a/public/images/pokemon/icons/3/360.png b/public/images/pokemon/icons/3/360.png index 88d8a1d84e0..d7610852382 100644 Binary files a/public/images/pokemon/icons/3/360.png and b/public/images/pokemon/icons/3/360.png differ diff --git a/public/images/pokemon/icons/3/360s.png b/public/images/pokemon/icons/3/360s.png index 39ebabca5fd..d08af49efc9 100644 Binary files a/public/images/pokemon/icons/3/360s.png and b/public/images/pokemon/icons/3/360s.png differ diff --git a/public/images/pokemon/icons/3/361.png b/public/images/pokemon/icons/3/361.png index 10e5f626014..adc77d05f3e 100644 Binary files a/public/images/pokemon/icons/3/361.png and b/public/images/pokemon/icons/3/361.png differ diff --git a/public/images/pokemon/icons/3/361s.png b/public/images/pokemon/icons/3/361s.png index 990dde9d05c..d4ecbb6fb59 100644 Binary files a/public/images/pokemon/icons/3/361s.png and b/public/images/pokemon/icons/3/361s.png differ diff --git a/public/images/pokemon/icons/3/362-mega.png b/public/images/pokemon/icons/3/362-mega.png index 74c9bc15aa3..49c3b689602 100644 Binary files a/public/images/pokemon/icons/3/362-mega.png and b/public/images/pokemon/icons/3/362-mega.png differ diff --git a/public/images/pokemon/icons/3/362.png b/public/images/pokemon/icons/3/362.png index fc01d95b638..556f2d3c8b1 100644 Binary files a/public/images/pokemon/icons/3/362.png and b/public/images/pokemon/icons/3/362.png differ diff --git a/public/images/pokemon/icons/3/362s-mega.png b/public/images/pokemon/icons/3/362s-mega.png index 69df67c24e6..8084448e63e 100644 Binary files a/public/images/pokemon/icons/3/362s-mega.png and b/public/images/pokemon/icons/3/362s-mega.png differ diff --git a/public/images/pokemon/icons/3/362s.png b/public/images/pokemon/icons/3/362s.png index 0e278fe8615..30d52c39e85 100644 Binary files a/public/images/pokemon/icons/3/362s.png and b/public/images/pokemon/icons/3/362s.png differ diff --git a/public/images/pokemon/icons/3/363.png b/public/images/pokemon/icons/3/363.png index 59d742494eb..2b4a313737b 100644 Binary files a/public/images/pokemon/icons/3/363.png and b/public/images/pokemon/icons/3/363.png differ diff --git a/public/images/pokemon/icons/3/363s.png b/public/images/pokemon/icons/3/363s.png index 3bd51aa8bb5..b2b546c9cb5 100644 Binary files a/public/images/pokemon/icons/3/363s.png and b/public/images/pokemon/icons/3/363s.png differ diff --git a/public/images/pokemon/icons/3/364.png b/public/images/pokemon/icons/3/364.png index d6ca1e3ab77..2e850da74fd 100644 Binary files a/public/images/pokemon/icons/3/364.png and b/public/images/pokemon/icons/3/364.png differ diff --git a/public/images/pokemon/icons/3/364s.png b/public/images/pokemon/icons/3/364s.png index 790200f3c80..b8a7a715613 100644 Binary files a/public/images/pokemon/icons/3/364s.png and b/public/images/pokemon/icons/3/364s.png differ diff --git a/public/images/pokemon/icons/3/365.png b/public/images/pokemon/icons/3/365.png index bc3dd9eb3ea..e39cf654d84 100644 Binary files a/public/images/pokemon/icons/3/365.png and b/public/images/pokemon/icons/3/365.png differ diff --git a/public/images/pokemon/icons/3/365s.png b/public/images/pokemon/icons/3/365s.png index d36ad0603d1..70838530dab 100644 Binary files a/public/images/pokemon/icons/3/365s.png and b/public/images/pokemon/icons/3/365s.png differ diff --git a/public/images/pokemon/icons/3/366.png b/public/images/pokemon/icons/3/366.png index 29133d00719..b07ec0f433a 100644 Binary files a/public/images/pokemon/icons/3/366.png and b/public/images/pokemon/icons/3/366.png differ diff --git a/public/images/pokemon/icons/3/366s.png b/public/images/pokemon/icons/3/366s.png index bc4f51b4ff6..ff965e706bf 100644 Binary files a/public/images/pokemon/icons/3/366s.png and b/public/images/pokemon/icons/3/366s.png differ diff --git a/public/images/pokemon/icons/3/367.png b/public/images/pokemon/icons/3/367.png index d20031ccb81..772e89a3400 100644 Binary files a/public/images/pokemon/icons/3/367.png and b/public/images/pokemon/icons/3/367.png differ diff --git a/public/images/pokemon/icons/3/367s.png b/public/images/pokemon/icons/3/367s.png index bb0af9fc7aa..4800da43bc6 100644 Binary files a/public/images/pokemon/icons/3/367s.png and b/public/images/pokemon/icons/3/367s.png differ diff --git a/public/images/pokemon/icons/3/368.png b/public/images/pokemon/icons/3/368.png index b3b4ea2593a..2f66105aa30 100644 Binary files a/public/images/pokemon/icons/3/368.png and b/public/images/pokemon/icons/3/368.png differ diff --git a/public/images/pokemon/icons/3/368s.png b/public/images/pokemon/icons/3/368s.png index ee9a2b25eef..a120d8a339a 100644 Binary files a/public/images/pokemon/icons/3/368s.png and b/public/images/pokemon/icons/3/368s.png differ diff --git a/public/images/pokemon/icons/3/369.png b/public/images/pokemon/icons/3/369.png index 6fd8e4cd230..175e63c00c0 100644 Binary files a/public/images/pokemon/icons/3/369.png and b/public/images/pokemon/icons/3/369.png differ diff --git a/public/images/pokemon/icons/3/369s.png b/public/images/pokemon/icons/3/369s.png index b4e328850d1..8ffaaf56a39 100644 Binary files a/public/images/pokemon/icons/3/369s.png and b/public/images/pokemon/icons/3/369s.png differ diff --git a/public/images/pokemon/icons/3/370.png b/public/images/pokemon/icons/3/370.png index f7ccf9f0265..9ee5463b928 100644 Binary files a/public/images/pokemon/icons/3/370.png and b/public/images/pokemon/icons/3/370.png differ diff --git a/public/images/pokemon/icons/3/370s.png b/public/images/pokemon/icons/3/370s.png index 48a3ae9684b..a96427f8901 100644 Binary files a/public/images/pokemon/icons/3/370s.png and b/public/images/pokemon/icons/3/370s.png differ diff --git a/public/images/pokemon/icons/3/371.png b/public/images/pokemon/icons/3/371.png index 6e08219e312..5d6ce467431 100644 Binary files a/public/images/pokemon/icons/3/371.png and b/public/images/pokemon/icons/3/371.png differ diff --git a/public/images/pokemon/icons/3/371s.png b/public/images/pokemon/icons/3/371s.png index 3ef53563f5d..83354100805 100644 Binary files a/public/images/pokemon/icons/3/371s.png and b/public/images/pokemon/icons/3/371s.png differ diff --git a/public/images/pokemon/icons/3/372.png b/public/images/pokemon/icons/3/372.png index a71b2a1481d..4cd99e070ed 100644 Binary files a/public/images/pokemon/icons/3/372.png and b/public/images/pokemon/icons/3/372.png differ diff --git a/public/images/pokemon/icons/3/372s.png b/public/images/pokemon/icons/3/372s.png index 8b4beef06fd..7e72130d86b 100644 Binary files a/public/images/pokemon/icons/3/372s.png and b/public/images/pokemon/icons/3/372s.png differ diff --git a/public/images/pokemon/icons/3/373-mega.png b/public/images/pokemon/icons/3/373-mega.png index 00a13c428e5..5bba15eb40b 100644 Binary files a/public/images/pokemon/icons/3/373-mega.png and b/public/images/pokemon/icons/3/373-mega.png differ diff --git a/public/images/pokemon/icons/3/373.png b/public/images/pokemon/icons/3/373.png index 9c9e88a01ae..50fa90dd833 100644 Binary files a/public/images/pokemon/icons/3/373.png and b/public/images/pokemon/icons/3/373.png differ diff --git a/public/images/pokemon/icons/3/373s-mega.png b/public/images/pokemon/icons/3/373s-mega.png index 4a86ac11629..888c48fafbf 100644 Binary files a/public/images/pokemon/icons/3/373s-mega.png and b/public/images/pokemon/icons/3/373s-mega.png differ diff --git a/public/images/pokemon/icons/3/373s.png b/public/images/pokemon/icons/3/373s.png index 399668479a0..623415b9e2b 100644 Binary files a/public/images/pokemon/icons/3/373s.png and b/public/images/pokemon/icons/3/373s.png differ diff --git a/public/images/pokemon/icons/3/374.png b/public/images/pokemon/icons/3/374.png index 0d325236439..115f8d51355 100644 Binary files a/public/images/pokemon/icons/3/374.png and b/public/images/pokemon/icons/3/374.png differ diff --git a/public/images/pokemon/icons/3/374s.png b/public/images/pokemon/icons/3/374s.png index 357fe53c278..1a21b053d12 100644 Binary files a/public/images/pokemon/icons/3/374s.png and b/public/images/pokemon/icons/3/374s.png differ diff --git a/public/images/pokemon/icons/3/375.png b/public/images/pokemon/icons/3/375.png index 3fb9acf2696..0eacec5e368 100644 Binary files a/public/images/pokemon/icons/3/375.png and b/public/images/pokemon/icons/3/375.png differ diff --git a/public/images/pokemon/icons/3/375s.png b/public/images/pokemon/icons/3/375s.png index 63952f64244..543507ef8b1 100644 Binary files a/public/images/pokemon/icons/3/375s.png and b/public/images/pokemon/icons/3/375s.png differ diff --git a/public/images/pokemon/icons/3/376-mega.png b/public/images/pokemon/icons/3/376-mega.png index 459f1fb74ac..dd816328d80 100644 Binary files a/public/images/pokemon/icons/3/376-mega.png and b/public/images/pokemon/icons/3/376-mega.png differ diff --git a/public/images/pokemon/icons/3/376.png b/public/images/pokemon/icons/3/376.png index 7a7548c398d..ccae6804e23 100644 Binary files a/public/images/pokemon/icons/3/376.png and b/public/images/pokemon/icons/3/376.png differ diff --git a/public/images/pokemon/icons/3/376s-mega.png b/public/images/pokemon/icons/3/376s-mega.png index 0a843930331..cb79c247235 100644 Binary files a/public/images/pokemon/icons/3/376s-mega.png and b/public/images/pokemon/icons/3/376s-mega.png differ diff --git a/public/images/pokemon/icons/3/376s.png b/public/images/pokemon/icons/3/376s.png index 4b94bf8f2fb..6fc50d8cb1d 100644 Binary files a/public/images/pokemon/icons/3/376s.png and b/public/images/pokemon/icons/3/376s.png differ diff --git a/public/images/pokemon/icons/3/377.png b/public/images/pokemon/icons/3/377.png index 316ccee7afe..a8644fd5273 100644 Binary files a/public/images/pokemon/icons/3/377.png and b/public/images/pokemon/icons/3/377.png differ diff --git a/public/images/pokemon/icons/3/377s.png b/public/images/pokemon/icons/3/377s.png index 755f7512243..2d774d00cf1 100644 Binary files a/public/images/pokemon/icons/3/377s.png and b/public/images/pokemon/icons/3/377s.png differ diff --git a/public/images/pokemon/icons/3/378.png b/public/images/pokemon/icons/3/378.png index 0f33c98cffd..302464930ff 100644 Binary files a/public/images/pokemon/icons/3/378.png and b/public/images/pokemon/icons/3/378.png differ diff --git a/public/images/pokemon/icons/3/378s.png b/public/images/pokemon/icons/3/378s.png index b52709493e7..b136bb5d5e3 100644 Binary files a/public/images/pokemon/icons/3/378s.png and b/public/images/pokemon/icons/3/378s.png differ diff --git a/public/images/pokemon/icons/3/379.png b/public/images/pokemon/icons/3/379.png index 169bb141641..2fe6783ceb0 100644 Binary files a/public/images/pokemon/icons/3/379.png and b/public/images/pokemon/icons/3/379.png differ diff --git a/public/images/pokemon/icons/3/379s.png b/public/images/pokemon/icons/3/379s.png index 0063c401e47..33d717a5027 100644 Binary files a/public/images/pokemon/icons/3/379s.png and b/public/images/pokemon/icons/3/379s.png differ diff --git a/public/images/pokemon/icons/3/380-mega.png b/public/images/pokemon/icons/3/380-mega.png index b9c3426a7bb..9c22d1ca83a 100644 Binary files a/public/images/pokemon/icons/3/380-mega.png and b/public/images/pokemon/icons/3/380-mega.png differ diff --git a/public/images/pokemon/icons/3/380.png b/public/images/pokemon/icons/3/380.png index 026236b6bd7..76296048ee6 100644 Binary files a/public/images/pokemon/icons/3/380.png and b/public/images/pokemon/icons/3/380.png differ diff --git a/public/images/pokemon/icons/3/380s-mega.png b/public/images/pokemon/icons/3/380s-mega.png index 4227c9b432a..753b0e6c8c0 100644 Binary files a/public/images/pokemon/icons/3/380s-mega.png and b/public/images/pokemon/icons/3/380s-mega.png differ diff --git a/public/images/pokemon/icons/3/380s.png b/public/images/pokemon/icons/3/380s.png index 9969dd628df..4bf07b5ea34 100644 Binary files a/public/images/pokemon/icons/3/380s.png and b/public/images/pokemon/icons/3/380s.png differ diff --git a/public/images/pokemon/icons/3/381-mega.png b/public/images/pokemon/icons/3/381-mega.png index cbc08f726f5..a33cbceab14 100644 Binary files a/public/images/pokemon/icons/3/381-mega.png and b/public/images/pokemon/icons/3/381-mega.png differ diff --git a/public/images/pokemon/icons/3/381.png b/public/images/pokemon/icons/3/381.png index 64915eb86d8..830a43339ef 100644 Binary files a/public/images/pokemon/icons/3/381.png and b/public/images/pokemon/icons/3/381.png differ diff --git a/public/images/pokemon/icons/3/381s-mega.png b/public/images/pokemon/icons/3/381s-mega.png index 7abdbb2f685..3b89abeaa8b 100644 Binary files a/public/images/pokemon/icons/3/381s-mega.png and b/public/images/pokemon/icons/3/381s-mega.png differ diff --git a/public/images/pokemon/icons/3/381s.png b/public/images/pokemon/icons/3/381s.png index b3b87c19b4f..b4f8cc4976d 100644 Binary files a/public/images/pokemon/icons/3/381s.png and b/public/images/pokemon/icons/3/381s.png differ diff --git a/public/images/pokemon/icons/3/382-primal.png b/public/images/pokemon/icons/3/382-primal.png index 9a9dfefd0ef..1931fe6c14f 100644 Binary files a/public/images/pokemon/icons/3/382-primal.png and b/public/images/pokemon/icons/3/382-primal.png differ diff --git a/public/images/pokemon/icons/3/382.png b/public/images/pokemon/icons/3/382.png index 9d1e6019d33..ad22107ddd3 100644 Binary files a/public/images/pokemon/icons/3/382.png and b/public/images/pokemon/icons/3/382.png differ diff --git a/public/images/pokemon/icons/3/382s-primal.png b/public/images/pokemon/icons/3/382s-primal.png index 140ba569ae0..3b3d5ba2644 100644 Binary files a/public/images/pokemon/icons/3/382s-primal.png and b/public/images/pokemon/icons/3/382s-primal.png differ diff --git a/public/images/pokemon/icons/3/382s.png b/public/images/pokemon/icons/3/382s.png index 60e460293e1..34a65797773 100644 Binary files a/public/images/pokemon/icons/3/382s.png and b/public/images/pokemon/icons/3/382s.png differ diff --git a/public/images/pokemon/icons/3/383-primal.png b/public/images/pokemon/icons/3/383-primal.png index 56a451aaebb..be03372d983 100644 Binary files a/public/images/pokemon/icons/3/383-primal.png and b/public/images/pokemon/icons/3/383-primal.png differ diff --git a/public/images/pokemon/icons/3/383.png b/public/images/pokemon/icons/3/383.png index 1e42c44ca01..f1fb0aab2c4 100644 Binary files a/public/images/pokemon/icons/3/383.png and b/public/images/pokemon/icons/3/383.png differ diff --git a/public/images/pokemon/icons/3/383s-primal.png b/public/images/pokemon/icons/3/383s-primal.png index d93e2858c23..fb50d9a654c 100644 Binary files a/public/images/pokemon/icons/3/383s-primal.png and b/public/images/pokemon/icons/3/383s-primal.png differ diff --git a/public/images/pokemon/icons/3/383s.png b/public/images/pokemon/icons/3/383s.png index 981055bcbaa..ddd0e0bc093 100644 Binary files a/public/images/pokemon/icons/3/383s.png and b/public/images/pokemon/icons/3/383s.png differ diff --git a/public/images/pokemon/icons/3/384-mega.png b/public/images/pokemon/icons/3/384-mega.png index 923e3ac2a78..dfbf1d35352 100644 Binary files a/public/images/pokemon/icons/3/384-mega.png and b/public/images/pokemon/icons/3/384-mega.png differ diff --git a/public/images/pokemon/icons/3/384.png b/public/images/pokemon/icons/3/384.png index 61a1bd278ca..92ce5449583 100644 Binary files a/public/images/pokemon/icons/3/384.png and b/public/images/pokemon/icons/3/384.png differ diff --git a/public/images/pokemon/icons/3/384s-mega.png b/public/images/pokemon/icons/3/384s-mega.png index b200f8b204f..9df98b29640 100644 Binary files a/public/images/pokemon/icons/3/384s-mega.png and b/public/images/pokemon/icons/3/384s-mega.png differ diff --git a/public/images/pokemon/icons/3/384s.png b/public/images/pokemon/icons/3/384s.png index 0017280add4..e9d1bd70073 100644 Binary files a/public/images/pokemon/icons/3/384s.png and b/public/images/pokemon/icons/3/384s.png differ diff --git a/public/images/pokemon/icons/3/385.png b/public/images/pokemon/icons/3/385.png index 633340ed28e..4c13fb0df97 100644 Binary files a/public/images/pokemon/icons/3/385.png and b/public/images/pokemon/icons/3/385.png differ diff --git a/public/images/pokemon/icons/3/385s.png b/public/images/pokemon/icons/3/385s.png index e5a630889f7..2ea67d0b158 100644 Binary files a/public/images/pokemon/icons/3/385s.png and b/public/images/pokemon/icons/3/385s.png differ diff --git a/public/images/pokemon/icons/3/386-attack.png b/public/images/pokemon/icons/3/386-attack.png index 94b688c2b1b..e605f09d02d 100644 Binary files a/public/images/pokemon/icons/3/386-attack.png and b/public/images/pokemon/icons/3/386-attack.png differ diff --git a/public/images/pokemon/icons/3/386-defense.png b/public/images/pokemon/icons/3/386-defense.png index 456dd5d0dc4..2fabc6f716e 100644 Binary files a/public/images/pokemon/icons/3/386-defense.png and b/public/images/pokemon/icons/3/386-defense.png differ diff --git a/public/images/pokemon/icons/3/386-speed.png b/public/images/pokemon/icons/3/386-speed.png index c650c143312..4468b5fa64a 100644 Binary files a/public/images/pokemon/icons/3/386-speed.png and b/public/images/pokemon/icons/3/386-speed.png differ diff --git a/public/images/pokemon/icons/3/386.png b/public/images/pokemon/icons/3/386.png index 96ce6e65738..4ab7cf48747 100644 Binary files a/public/images/pokemon/icons/3/386.png and b/public/images/pokemon/icons/3/386.png differ diff --git a/public/images/pokemon/icons/3/386s-attack.png b/public/images/pokemon/icons/3/386s-attack.png index 4e11303acc1..d7bec672de0 100644 Binary files a/public/images/pokemon/icons/3/386s-attack.png and b/public/images/pokemon/icons/3/386s-attack.png differ diff --git a/public/images/pokemon/icons/3/386s-defense.png b/public/images/pokemon/icons/3/386s-defense.png index 1bb3b8410a2..ab55c783a27 100644 Binary files a/public/images/pokemon/icons/3/386s-defense.png and b/public/images/pokemon/icons/3/386s-defense.png differ diff --git a/public/images/pokemon/icons/3/386s-speed.png b/public/images/pokemon/icons/3/386s-speed.png index 29e3877ffeb..a1cadff301d 100644 Binary files a/public/images/pokemon/icons/3/386s-speed.png and b/public/images/pokemon/icons/3/386s-speed.png differ diff --git a/public/images/pokemon/icons/3/386s.png b/public/images/pokemon/icons/3/386s.png index d847937c327..57fbc09ad62 100644 Binary files a/public/images/pokemon/icons/3/386s.png and b/public/images/pokemon/icons/3/386s.png differ diff --git a/public/images/pokemon/icons/4/387.png b/public/images/pokemon/icons/4/387.png index be5f0769799..02e30cc60ce 100644 Binary files a/public/images/pokemon/icons/4/387.png and b/public/images/pokemon/icons/4/387.png differ diff --git a/public/images/pokemon/icons/4/387s.png b/public/images/pokemon/icons/4/387s.png index 77a02747f83..475f3e84da1 100644 Binary files a/public/images/pokemon/icons/4/387s.png and b/public/images/pokemon/icons/4/387s.png differ diff --git a/public/images/pokemon/icons/4/388.png b/public/images/pokemon/icons/4/388.png index c9f6f327ff7..ae33d5218e4 100644 Binary files a/public/images/pokemon/icons/4/388.png and b/public/images/pokemon/icons/4/388.png differ diff --git a/public/images/pokemon/icons/4/388s.png b/public/images/pokemon/icons/4/388s.png index b73ed3adf72..bfed24cafd1 100644 Binary files a/public/images/pokemon/icons/4/388s.png and b/public/images/pokemon/icons/4/388s.png differ diff --git a/public/images/pokemon/icons/4/389.png b/public/images/pokemon/icons/4/389.png index d4f9d29df5e..a8caef94cb1 100644 Binary files a/public/images/pokemon/icons/4/389.png and b/public/images/pokemon/icons/4/389.png differ diff --git a/public/images/pokemon/icons/4/389s.png b/public/images/pokemon/icons/4/389s.png index ad1c9657057..253291fd576 100644 Binary files a/public/images/pokemon/icons/4/389s.png and b/public/images/pokemon/icons/4/389s.png differ diff --git a/public/images/pokemon/icons/4/390.png b/public/images/pokemon/icons/4/390.png index 0f8c57632a7..f14a5839e33 100644 Binary files a/public/images/pokemon/icons/4/390.png and b/public/images/pokemon/icons/4/390.png differ diff --git a/public/images/pokemon/icons/4/390s.png b/public/images/pokemon/icons/4/390s.png index 686dadf170e..f765335db33 100644 Binary files a/public/images/pokemon/icons/4/390s.png and b/public/images/pokemon/icons/4/390s.png differ diff --git a/public/images/pokemon/icons/4/391.png b/public/images/pokemon/icons/4/391.png index 04b9c23bbb2..aa6f76f06c5 100644 Binary files a/public/images/pokemon/icons/4/391.png and b/public/images/pokemon/icons/4/391.png differ diff --git a/public/images/pokemon/icons/4/391s.png b/public/images/pokemon/icons/4/391s.png index 1b1bf8ecb7c..27b36b57bdb 100644 Binary files a/public/images/pokemon/icons/4/391s.png and b/public/images/pokemon/icons/4/391s.png differ diff --git a/public/images/pokemon/icons/4/392.png b/public/images/pokemon/icons/4/392.png index b0944787f3f..814b86a6004 100644 Binary files a/public/images/pokemon/icons/4/392.png and b/public/images/pokemon/icons/4/392.png differ diff --git a/public/images/pokemon/icons/4/392s.png b/public/images/pokemon/icons/4/392s.png index 2ca763c1ac2..46526edb8a1 100644 Binary files a/public/images/pokemon/icons/4/392s.png and b/public/images/pokemon/icons/4/392s.png differ diff --git a/public/images/pokemon/icons/4/393.png b/public/images/pokemon/icons/4/393.png index 8c52f7cda83..9b784be0db4 100644 Binary files a/public/images/pokemon/icons/4/393.png and b/public/images/pokemon/icons/4/393.png differ diff --git a/public/images/pokemon/icons/4/393s.png b/public/images/pokemon/icons/4/393s.png index 508aa6a76a2..5cc381da895 100644 Binary files a/public/images/pokemon/icons/4/393s.png and b/public/images/pokemon/icons/4/393s.png differ diff --git a/public/images/pokemon/icons/4/394.png b/public/images/pokemon/icons/4/394.png index 62f1fba8eb7..0ab58a1642f 100644 Binary files a/public/images/pokemon/icons/4/394.png and b/public/images/pokemon/icons/4/394.png differ diff --git a/public/images/pokemon/icons/4/394s.png b/public/images/pokemon/icons/4/394s.png index 5c7744f3ec4..c5337140188 100644 Binary files a/public/images/pokemon/icons/4/394s.png and b/public/images/pokemon/icons/4/394s.png differ diff --git a/public/images/pokemon/icons/4/395.png b/public/images/pokemon/icons/4/395.png index a067e0a765b..dbebe5ffd0c 100644 Binary files a/public/images/pokemon/icons/4/395.png and b/public/images/pokemon/icons/4/395.png differ diff --git a/public/images/pokemon/icons/4/395s.png b/public/images/pokemon/icons/4/395s.png index 7e9f3cdbec7..f6d75d8dbdc 100644 Binary files a/public/images/pokemon/icons/4/395s.png and b/public/images/pokemon/icons/4/395s.png differ diff --git a/public/images/pokemon/icons/4/396.png b/public/images/pokemon/icons/4/396.png index 6345464cd82..991f8ebaa93 100644 Binary files a/public/images/pokemon/icons/4/396.png and b/public/images/pokemon/icons/4/396.png differ diff --git a/public/images/pokemon/icons/4/396s.png b/public/images/pokemon/icons/4/396s.png index 244976a8bf4..6baa5f2c114 100644 Binary files a/public/images/pokemon/icons/4/396s.png and b/public/images/pokemon/icons/4/396s.png differ diff --git a/public/images/pokemon/icons/4/397.png b/public/images/pokemon/icons/4/397.png index 37a66079c3f..ee57b416a79 100644 Binary files a/public/images/pokemon/icons/4/397.png and b/public/images/pokemon/icons/4/397.png differ diff --git a/public/images/pokemon/icons/4/397s.png b/public/images/pokemon/icons/4/397s.png index 66b8ed4df25..0777fdc9165 100644 Binary files a/public/images/pokemon/icons/4/397s.png and b/public/images/pokemon/icons/4/397s.png differ diff --git a/public/images/pokemon/icons/4/398.png b/public/images/pokemon/icons/4/398.png index d52852477bb..aa89d7d04a3 100644 Binary files a/public/images/pokemon/icons/4/398.png and b/public/images/pokemon/icons/4/398.png differ diff --git a/public/images/pokemon/icons/4/398s.png b/public/images/pokemon/icons/4/398s.png index b2d74cd98be..8cedb857745 100644 Binary files a/public/images/pokemon/icons/4/398s.png and b/public/images/pokemon/icons/4/398s.png differ diff --git a/public/images/pokemon/icons/4/399.png b/public/images/pokemon/icons/4/399.png index a51111bc39c..d9407ce2166 100644 Binary files a/public/images/pokemon/icons/4/399.png and b/public/images/pokemon/icons/4/399.png differ diff --git a/public/images/pokemon/icons/4/399s.png b/public/images/pokemon/icons/4/399s.png index 9a435eddc96..6fee68801b1 100644 Binary files a/public/images/pokemon/icons/4/399s.png and b/public/images/pokemon/icons/4/399s.png differ diff --git a/public/images/pokemon/icons/4/400.png b/public/images/pokemon/icons/4/400.png index f5188bfe533..9b979fa69fc 100644 Binary files a/public/images/pokemon/icons/4/400.png and b/public/images/pokemon/icons/4/400.png differ diff --git a/public/images/pokemon/icons/4/400s.png b/public/images/pokemon/icons/4/400s.png index 7fedaf75977..6159abe6dd5 100644 Binary files a/public/images/pokemon/icons/4/400s.png and b/public/images/pokemon/icons/4/400s.png differ diff --git a/public/images/pokemon/icons/4/401.png b/public/images/pokemon/icons/4/401.png index 6db9fbdf2c0..f33558ed402 100644 Binary files a/public/images/pokemon/icons/4/401.png and b/public/images/pokemon/icons/4/401.png differ diff --git a/public/images/pokemon/icons/4/401s.png b/public/images/pokemon/icons/4/401s.png index 0fb8232d95c..45d4b0d24f0 100644 Binary files a/public/images/pokemon/icons/4/401s.png and b/public/images/pokemon/icons/4/401s.png differ diff --git a/public/images/pokemon/icons/4/402.png b/public/images/pokemon/icons/4/402.png index f39ff8cd450..4a682c9814e 100644 Binary files a/public/images/pokemon/icons/4/402.png and b/public/images/pokemon/icons/4/402.png differ diff --git a/public/images/pokemon/icons/4/402s.png b/public/images/pokemon/icons/4/402s.png index 31c15f3ab6f..60845665322 100644 Binary files a/public/images/pokemon/icons/4/402s.png and b/public/images/pokemon/icons/4/402s.png differ diff --git a/public/images/pokemon/icons/4/403.png b/public/images/pokemon/icons/4/403.png index 45ddd5bcc2c..b1f9cdde5a6 100644 Binary files a/public/images/pokemon/icons/4/403.png and b/public/images/pokemon/icons/4/403.png differ diff --git a/public/images/pokemon/icons/4/403s.png b/public/images/pokemon/icons/4/403s.png index 662526e0a8e..b561d2a62f4 100644 Binary files a/public/images/pokemon/icons/4/403s.png and b/public/images/pokemon/icons/4/403s.png differ diff --git a/public/images/pokemon/icons/4/404.png b/public/images/pokemon/icons/4/404.png index 405669e671f..d81e75a7a90 100644 Binary files a/public/images/pokemon/icons/4/404.png and b/public/images/pokemon/icons/4/404.png differ diff --git a/public/images/pokemon/icons/4/404s.png b/public/images/pokemon/icons/4/404s.png index 9a8f06baf2e..6ea11989de8 100644 Binary files a/public/images/pokemon/icons/4/404s.png and b/public/images/pokemon/icons/4/404s.png differ diff --git a/public/images/pokemon/icons/4/405.png b/public/images/pokemon/icons/4/405.png index 1fb9310b128..d76a0df678b 100644 Binary files a/public/images/pokemon/icons/4/405.png and b/public/images/pokemon/icons/4/405.png differ diff --git a/public/images/pokemon/icons/4/405s.png b/public/images/pokemon/icons/4/405s.png index 5f69d36b61b..7f82fc808ba 100644 Binary files a/public/images/pokemon/icons/4/405s.png and b/public/images/pokemon/icons/4/405s.png differ diff --git a/public/images/pokemon/icons/4/406.png b/public/images/pokemon/icons/4/406.png index e075cf78b45..77c214ab8cb 100644 Binary files a/public/images/pokemon/icons/4/406.png and b/public/images/pokemon/icons/4/406.png differ diff --git a/public/images/pokemon/icons/4/406s.png b/public/images/pokemon/icons/4/406s.png index b67dd043bd7..4933142e063 100644 Binary files a/public/images/pokemon/icons/4/406s.png and b/public/images/pokemon/icons/4/406s.png differ diff --git a/public/images/pokemon/icons/4/407.png b/public/images/pokemon/icons/4/407.png index cd318925cea..ac2880125bb 100644 Binary files a/public/images/pokemon/icons/4/407.png and b/public/images/pokemon/icons/4/407.png differ diff --git a/public/images/pokemon/icons/4/407s.png b/public/images/pokemon/icons/4/407s.png index af4021055d0..1eab2e2259c 100644 Binary files a/public/images/pokemon/icons/4/407s.png and b/public/images/pokemon/icons/4/407s.png differ diff --git a/public/images/pokemon/icons/4/408.png b/public/images/pokemon/icons/4/408.png index f85d38b68a9..f80f0341fb7 100644 Binary files a/public/images/pokemon/icons/4/408.png and b/public/images/pokemon/icons/4/408.png differ diff --git a/public/images/pokemon/icons/4/408s.png b/public/images/pokemon/icons/4/408s.png index 06a9fa3b0ad..1346ee50a8e 100644 Binary files a/public/images/pokemon/icons/4/408s.png and b/public/images/pokemon/icons/4/408s.png differ diff --git a/public/images/pokemon/icons/4/409.png b/public/images/pokemon/icons/4/409.png index bc976b78cdc..8f473d79048 100644 Binary files a/public/images/pokemon/icons/4/409.png and b/public/images/pokemon/icons/4/409.png differ diff --git a/public/images/pokemon/icons/4/409s.png b/public/images/pokemon/icons/4/409s.png index 3454b8750f4..4f8acb33638 100644 Binary files a/public/images/pokemon/icons/4/409s.png and b/public/images/pokemon/icons/4/409s.png differ diff --git a/public/images/pokemon/icons/4/410.png b/public/images/pokemon/icons/4/410.png index 1b1d57eb6fa..54f98e5b24f 100644 Binary files a/public/images/pokemon/icons/4/410.png and b/public/images/pokemon/icons/4/410.png differ diff --git a/public/images/pokemon/icons/4/410s.png b/public/images/pokemon/icons/4/410s.png index 5ef7518f6c0..aa951567a60 100644 Binary files a/public/images/pokemon/icons/4/410s.png and b/public/images/pokemon/icons/4/410s.png differ diff --git a/public/images/pokemon/icons/4/411.png b/public/images/pokemon/icons/4/411.png index 79b263e82c4..f0c394abd53 100644 Binary files a/public/images/pokemon/icons/4/411.png and b/public/images/pokemon/icons/4/411.png differ diff --git a/public/images/pokemon/icons/4/411s.png b/public/images/pokemon/icons/4/411s.png index 9d23ef123e3..b2e98fb1c13 100644 Binary files a/public/images/pokemon/icons/4/411s.png and b/public/images/pokemon/icons/4/411s.png differ diff --git a/public/images/pokemon/icons/4/412-plant.png b/public/images/pokemon/icons/4/412-plant.png index 047a267f4f4..7c943cc8195 100644 Binary files a/public/images/pokemon/icons/4/412-plant.png and b/public/images/pokemon/icons/4/412-plant.png differ diff --git a/public/images/pokemon/icons/4/412-sandy.png b/public/images/pokemon/icons/4/412-sandy.png index 93408cd6909..bc5bb2ac47d 100644 Binary files a/public/images/pokemon/icons/4/412-sandy.png and b/public/images/pokemon/icons/4/412-sandy.png differ diff --git a/public/images/pokemon/icons/4/412-trash.png b/public/images/pokemon/icons/4/412-trash.png index 1057c619a0b..3341cbe45e5 100644 Binary files a/public/images/pokemon/icons/4/412-trash.png and b/public/images/pokemon/icons/4/412-trash.png differ diff --git a/public/images/pokemon/icons/4/412s-plant.png b/public/images/pokemon/icons/4/412s-plant.png index adb92aa12c5..a491622ea8b 100644 Binary files a/public/images/pokemon/icons/4/412s-plant.png and b/public/images/pokemon/icons/4/412s-plant.png differ diff --git a/public/images/pokemon/icons/4/412s-sandy.png b/public/images/pokemon/icons/4/412s-sandy.png index 19882859c25..000a032c1ca 100644 Binary files a/public/images/pokemon/icons/4/412s-sandy.png and b/public/images/pokemon/icons/4/412s-sandy.png differ diff --git a/public/images/pokemon/icons/4/412s-trash.png b/public/images/pokemon/icons/4/412s-trash.png index 40cdb8cb080..a27d443fbcf 100644 Binary files a/public/images/pokemon/icons/4/412s-trash.png and b/public/images/pokemon/icons/4/412s-trash.png differ diff --git a/public/images/pokemon/icons/4/413-plant.png b/public/images/pokemon/icons/4/413-plant.png index 5a264984104..bbec8a12995 100644 Binary files a/public/images/pokemon/icons/4/413-plant.png and b/public/images/pokemon/icons/4/413-plant.png differ diff --git a/public/images/pokemon/icons/4/413-sandy.png b/public/images/pokemon/icons/4/413-sandy.png index 0c6dd3c001e..0e611185815 100644 Binary files a/public/images/pokemon/icons/4/413-sandy.png and b/public/images/pokemon/icons/4/413-sandy.png differ diff --git a/public/images/pokemon/icons/4/413-trash.png b/public/images/pokemon/icons/4/413-trash.png index e3e3446fe68..a87f4e431b0 100644 Binary files a/public/images/pokemon/icons/4/413-trash.png and b/public/images/pokemon/icons/4/413-trash.png differ diff --git a/public/images/pokemon/icons/4/413s-plant.png b/public/images/pokemon/icons/4/413s-plant.png index 4f9e514e7f3..12d9e1f2c05 100644 Binary files a/public/images/pokemon/icons/4/413s-plant.png and b/public/images/pokemon/icons/4/413s-plant.png differ diff --git a/public/images/pokemon/icons/4/413s-sandy.png b/public/images/pokemon/icons/4/413s-sandy.png index a06b06f248a..b1ae33e594f 100644 Binary files a/public/images/pokemon/icons/4/413s-sandy.png and b/public/images/pokemon/icons/4/413s-sandy.png differ diff --git a/public/images/pokemon/icons/4/413s-trash.png b/public/images/pokemon/icons/4/413s-trash.png index 8f303325fef..bcddeec3f2b 100644 Binary files a/public/images/pokemon/icons/4/413s-trash.png and b/public/images/pokemon/icons/4/413s-trash.png differ diff --git a/public/images/pokemon/icons/4/414.png b/public/images/pokemon/icons/4/414.png index 81a6866b910..1834f008fb8 100644 Binary files a/public/images/pokemon/icons/4/414.png and b/public/images/pokemon/icons/4/414.png differ diff --git a/public/images/pokemon/icons/4/414s.png b/public/images/pokemon/icons/4/414s.png index 19b0d7117b0..675698cdee2 100644 Binary files a/public/images/pokemon/icons/4/414s.png and b/public/images/pokemon/icons/4/414s.png differ diff --git a/public/images/pokemon/icons/4/415.png b/public/images/pokemon/icons/4/415.png index ae4f7577a5a..06834df4c6a 100644 Binary files a/public/images/pokemon/icons/4/415.png and b/public/images/pokemon/icons/4/415.png differ diff --git a/public/images/pokemon/icons/4/415s.png b/public/images/pokemon/icons/4/415s.png index 5b075da3137..56dd2decd6f 100644 Binary files a/public/images/pokemon/icons/4/415s.png and b/public/images/pokemon/icons/4/415s.png differ diff --git a/public/images/pokemon/icons/4/416.png b/public/images/pokemon/icons/4/416.png index af132e30f21..b2b00768372 100644 Binary files a/public/images/pokemon/icons/4/416.png and b/public/images/pokemon/icons/4/416.png differ diff --git a/public/images/pokemon/icons/4/416s.png b/public/images/pokemon/icons/4/416s.png index 6bc6961326f..216ba1af598 100644 Binary files a/public/images/pokemon/icons/4/416s.png and b/public/images/pokemon/icons/4/416s.png differ diff --git a/public/images/pokemon/icons/4/417.png b/public/images/pokemon/icons/4/417.png index e8de6d0da59..ce9a3c65159 100644 Binary files a/public/images/pokemon/icons/4/417.png and b/public/images/pokemon/icons/4/417.png differ diff --git a/public/images/pokemon/icons/4/417s.png b/public/images/pokemon/icons/4/417s.png index e1d18788ba7..69a58487154 100644 Binary files a/public/images/pokemon/icons/4/417s.png and b/public/images/pokemon/icons/4/417s.png differ diff --git a/public/images/pokemon/icons/4/418.png b/public/images/pokemon/icons/4/418.png index fbff0bf8f00..366a08124fc 100644 Binary files a/public/images/pokemon/icons/4/418.png and b/public/images/pokemon/icons/4/418.png differ diff --git a/public/images/pokemon/icons/4/418s.png b/public/images/pokemon/icons/4/418s.png index 16e05fee067..833b18eaaf7 100644 Binary files a/public/images/pokemon/icons/4/418s.png and b/public/images/pokemon/icons/4/418s.png differ diff --git a/public/images/pokemon/icons/4/419.png b/public/images/pokemon/icons/4/419.png index fd86b5b2ad0..c10db30e021 100644 Binary files a/public/images/pokemon/icons/4/419.png and b/public/images/pokemon/icons/4/419.png differ diff --git a/public/images/pokemon/icons/4/419s.png b/public/images/pokemon/icons/4/419s.png index 50cbafe2098..ae4f4ac1aa0 100644 Binary files a/public/images/pokemon/icons/4/419s.png and b/public/images/pokemon/icons/4/419s.png differ diff --git a/public/images/pokemon/icons/4/420.png b/public/images/pokemon/icons/4/420.png index a83b3380090..57a20fd12d7 100644 Binary files a/public/images/pokemon/icons/4/420.png and b/public/images/pokemon/icons/4/420.png differ diff --git a/public/images/pokemon/icons/4/420s.png b/public/images/pokemon/icons/4/420s.png index e71d9bd188f..ab7b6d2cced 100644 Binary files a/public/images/pokemon/icons/4/420s.png and b/public/images/pokemon/icons/4/420s.png differ diff --git a/public/images/pokemon/icons/4/421-overcast.png b/public/images/pokemon/icons/4/421-overcast.png index 4dee7388d63..32f912f9187 100644 Binary files a/public/images/pokemon/icons/4/421-overcast.png and b/public/images/pokemon/icons/4/421-overcast.png differ diff --git a/public/images/pokemon/icons/4/421-sunshine.png b/public/images/pokemon/icons/4/421-sunshine.png index a9050ccccb6..98c726c677e 100644 Binary files a/public/images/pokemon/icons/4/421-sunshine.png and b/public/images/pokemon/icons/4/421-sunshine.png differ diff --git a/public/images/pokemon/icons/4/421s-overcast.png b/public/images/pokemon/icons/4/421s-overcast.png index 232ecdeb5e9..e510c60525a 100644 Binary files a/public/images/pokemon/icons/4/421s-overcast.png and b/public/images/pokemon/icons/4/421s-overcast.png differ diff --git a/public/images/pokemon/icons/4/421s-sunshine.png b/public/images/pokemon/icons/4/421s-sunshine.png index f6935f93ee9..adaeb014cca 100644 Binary files a/public/images/pokemon/icons/4/421s-sunshine.png and b/public/images/pokemon/icons/4/421s-sunshine.png differ diff --git a/public/images/pokemon/icons/4/422-east.png b/public/images/pokemon/icons/4/422-east.png index b90d1c41169..7c3d6506ce9 100644 Binary files a/public/images/pokemon/icons/4/422-east.png and b/public/images/pokemon/icons/4/422-east.png differ diff --git a/public/images/pokemon/icons/4/422-west.png b/public/images/pokemon/icons/4/422-west.png index b1aed4fd7cf..d6388da3b75 100644 Binary files a/public/images/pokemon/icons/4/422-west.png and b/public/images/pokemon/icons/4/422-west.png differ diff --git a/public/images/pokemon/icons/4/422s-east.png b/public/images/pokemon/icons/4/422s-east.png index 66902da7e8f..9a1e7ef6e50 100644 Binary files a/public/images/pokemon/icons/4/422s-east.png and b/public/images/pokemon/icons/4/422s-east.png differ diff --git a/public/images/pokemon/icons/4/422s-west.png b/public/images/pokemon/icons/4/422s-west.png index 28ef74ed0ef..7f99470b786 100644 Binary files a/public/images/pokemon/icons/4/422s-west.png and b/public/images/pokemon/icons/4/422s-west.png differ diff --git a/public/images/pokemon/icons/4/423-east.png b/public/images/pokemon/icons/4/423-east.png index e9dd7f837dd..fea0d1a30bf 100644 Binary files a/public/images/pokemon/icons/4/423-east.png and b/public/images/pokemon/icons/4/423-east.png differ diff --git a/public/images/pokemon/icons/4/423-west.png b/public/images/pokemon/icons/4/423-west.png index be45c499ded..18f6a90cdb3 100644 Binary files a/public/images/pokemon/icons/4/423-west.png and b/public/images/pokemon/icons/4/423-west.png differ diff --git a/public/images/pokemon/icons/4/423s-east.png b/public/images/pokemon/icons/4/423s-east.png index f927e7144ae..8dbaad33b59 100644 Binary files a/public/images/pokemon/icons/4/423s-east.png and b/public/images/pokemon/icons/4/423s-east.png differ diff --git a/public/images/pokemon/icons/4/423s-west.png b/public/images/pokemon/icons/4/423s-west.png index 43896106aba..c4dda0ffddc 100644 Binary files a/public/images/pokemon/icons/4/423s-west.png and b/public/images/pokemon/icons/4/423s-west.png differ diff --git a/public/images/pokemon/icons/4/424.png b/public/images/pokemon/icons/4/424.png index fbcf2b8bd25..9609defeb03 100644 Binary files a/public/images/pokemon/icons/4/424.png and b/public/images/pokemon/icons/4/424.png differ diff --git a/public/images/pokemon/icons/4/424_1.png b/public/images/pokemon/icons/4/424_1.png index f21bb7c64ea..56f2ea3210a 100644 Binary files a/public/images/pokemon/icons/4/424_1.png and b/public/images/pokemon/icons/4/424_1.png differ diff --git a/public/images/pokemon/icons/4/424s.png b/public/images/pokemon/icons/4/424s.png index 1a5a30fd14f..56f2ea3210a 100644 Binary files a/public/images/pokemon/icons/4/424s.png and b/public/images/pokemon/icons/4/424s.png differ diff --git a/public/images/pokemon/icons/4/425.png b/public/images/pokemon/icons/4/425.png index 5d7fb9b60f6..8c637bb595a 100644 Binary files a/public/images/pokemon/icons/4/425.png and b/public/images/pokemon/icons/4/425.png differ diff --git a/public/images/pokemon/icons/4/425s.png b/public/images/pokemon/icons/4/425s.png index f3e6df40492..765abc2a785 100644 Binary files a/public/images/pokemon/icons/4/425s.png and b/public/images/pokemon/icons/4/425s.png differ diff --git a/public/images/pokemon/icons/4/426.png b/public/images/pokemon/icons/4/426.png index 6ed51bdce32..7869aa90b5e 100644 Binary files a/public/images/pokemon/icons/4/426.png and b/public/images/pokemon/icons/4/426.png differ diff --git a/public/images/pokemon/icons/4/426s.png b/public/images/pokemon/icons/4/426s.png index 75b1bd51f29..ef836c1353e 100644 Binary files a/public/images/pokemon/icons/4/426s.png and b/public/images/pokemon/icons/4/426s.png differ diff --git a/public/images/pokemon/icons/4/427.png b/public/images/pokemon/icons/4/427.png index 9fc1941fced..9cef7b3d685 100644 Binary files a/public/images/pokemon/icons/4/427.png and b/public/images/pokemon/icons/4/427.png differ diff --git a/public/images/pokemon/icons/4/427s.png b/public/images/pokemon/icons/4/427s.png index 19a20859ca1..f43cc80be37 100644 Binary files a/public/images/pokemon/icons/4/427s.png and b/public/images/pokemon/icons/4/427s.png differ diff --git a/public/images/pokemon/icons/4/428-mega.png b/public/images/pokemon/icons/4/428-mega.png index 628e556dfcb..b063c05c291 100644 Binary files a/public/images/pokemon/icons/4/428-mega.png and b/public/images/pokemon/icons/4/428-mega.png differ diff --git a/public/images/pokemon/icons/4/428.png b/public/images/pokemon/icons/4/428.png index 4d2f00ccd5a..4a1b9e55a06 100644 Binary files a/public/images/pokemon/icons/4/428.png and b/public/images/pokemon/icons/4/428.png differ diff --git a/public/images/pokemon/icons/4/428s-mega.png b/public/images/pokemon/icons/4/428s-mega.png index 7702d58551a..399ec54696a 100644 Binary files a/public/images/pokemon/icons/4/428s-mega.png and b/public/images/pokemon/icons/4/428s-mega.png differ diff --git a/public/images/pokemon/icons/4/428s.png b/public/images/pokemon/icons/4/428s.png index f05a930f9f9..e21f4beccb5 100644 Binary files a/public/images/pokemon/icons/4/428s.png and b/public/images/pokemon/icons/4/428s.png differ diff --git a/public/images/pokemon/icons/4/429.png b/public/images/pokemon/icons/4/429.png index cc682ff940a..e1801f1df55 100644 Binary files a/public/images/pokemon/icons/4/429.png and b/public/images/pokemon/icons/4/429.png differ diff --git a/public/images/pokemon/icons/4/429s.png b/public/images/pokemon/icons/4/429s.png index 8fae5f2e0b7..105ab2396b5 100644 Binary files a/public/images/pokemon/icons/4/429s.png and b/public/images/pokemon/icons/4/429s.png differ diff --git a/public/images/pokemon/icons/4/430.png b/public/images/pokemon/icons/4/430.png index 442b9fd5558..8930dd0857c 100644 Binary files a/public/images/pokemon/icons/4/430.png and b/public/images/pokemon/icons/4/430.png differ diff --git a/public/images/pokemon/icons/4/430s.png b/public/images/pokemon/icons/4/430s.png index 58212ab7a7a..17b6b9868fd 100644 Binary files a/public/images/pokemon/icons/4/430s.png and b/public/images/pokemon/icons/4/430s.png differ diff --git a/public/images/pokemon/icons/4/431.png b/public/images/pokemon/icons/4/431.png index 4ebaab645fa..f772a198740 100644 Binary files a/public/images/pokemon/icons/4/431.png and b/public/images/pokemon/icons/4/431.png differ diff --git a/public/images/pokemon/icons/4/431s.png b/public/images/pokemon/icons/4/431s.png index a767a835972..64706f305ac 100644 Binary files a/public/images/pokemon/icons/4/431s.png and b/public/images/pokemon/icons/4/431s.png differ diff --git a/public/images/pokemon/icons/4/432.png b/public/images/pokemon/icons/4/432.png index 0b6be326c77..df153af2a25 100644 Binary files a/public/images/pokemon/icons/4/432.png and b/public/images/pokemon/icons/4/432.png differ diff --git a/public/images/pokemon/icons/4/432s.png b/public/images/pokemon/icons/4/432s.png index 86aec047cc3..fb31cad099d 100644 Binary files a/public/images/pokemon/icons/4/432s.png and b/public/images/pokemon/icons/4/432s.png differ diff --git a/public/images/pokemon/icons/4/433.png b/public/images/pokemon/icons/4/433.png index f7462c6598c..1dba1088d37 100644 Binary files a/public/images/pokemon/icons/4/433.png and b/public/images/pokemon/icons/4/433.png differ diff --git a/public/images/pokemon/icons/4/433s.png b/public/images/pokemon/icons/4/433s.png index 5b7ad6e696e..b4c36e6e3d7 100644 Binary files a/public/images/pokemon/icons/4/433s.png and b/public/images/pokemon/icons/4/433s.png differ diff --git a/public/images/pokemon/icons/4/434.png b/public/images/pokemon/icons/4/434.png index b0d98548452..d28627467b6 100644 Binary files a/public/images/pokemon/icons/4/434.png and b/public/images/pokemon/icons/4/434.png differ diff --git a/public/images/pokemon/icons/4/434s.png b/public/images/pokemon/icons/4/434s.png index fafa4212489..82f18e9b86f 100644 Binary files a/public/images/pokemon/icons/4/434s.png and b/public/images/pokemon/icons/4/434s.png differ diff --git a/public/images/pokemon/icons/4/435.png b/public/images/pokemon/icons/4/435.png index 6ee9651b5b0..09deef9b10f 100644 Binary files a/public/images/pokemon/icons/4/435.png and b/public/images/pokemon/icons/4/435.png differ diff --git a/public/images/pokemon/icons/4/435s.png b/public/images/pokemon/icons/4/435s.png index b55559f9321..b17b3f0de8f 100644 Binary files a/public/images/pokemon/icons/4/435s.png and b/public/images/pokemon/icons/4/435s.png differ diff --git a/public/images/pokemon/icons/4/436.png b/public/images/pokemon/icons/4/436.png index 5fa49331019..2a9b5962515 100644 Binary files a/public/images/pokemon/icons/4/436.png and b/public/images/pokemon/icons/4/436.png differ diff --git a/public/images/pokemon/icons/4/436s.png b/public/images/pokemon/icons/4/436s.png index dc6c33af201..1ec63ea50e0 100644 Binary files a/public/images/pokemon/icons/4/436s.png and b/public/images/pokemon/icons/4/436s.png differ diff --git a/public/images/pokemon/icons/4/437.png b/public/images/pokemon/icons/4/437.png index cd17f0fe431..5e8a3a0c9e2 100644 Binary files a/public/images/pokemon/icons/4/437.png and b/public/images/pokemon/icons/4/437.png differ diff --git a/public/images/pokemon/icons/4/437s.png b/public/images/pokemon/icons/4/437s.png index d1a31eed60f..3f7030ce726 100644 Binary files a/public/images/pokemon/icons/4/437s.png and b/public/images/pokemon/icons/4/437s.png differ diff --git a/public/images/pokemon/icons/4/438.png b/public/images/pokemon/icons/4/438.png index c02bb53f0a7..c3ad5a352d3 100644 Binary files a/public/images/pokemon/icons/4/438.png and b/public/images/pokemon/icons/4/438.png differ diff --git a/public/images/pokemon/icons/4/438s.png b/public/images/pokemon/icons/4/438s.png index 4f6c2351e69..1744d89557e 100644 Binary files a/public/images/pokemon/icons/4/438s.png and b/public/images/pokemon/icons/4/438s.png differ diff --git a/public/images/pokemon/icons/4/439.png b/public/images/pokemon/icons/4/439.png index 6ce631fa82d..40e5548aff7 100644 Binary files a/public/images/pokemon/icons/4/439.png and b/public/images/pokemon/icons/4/439.png differ diff --git a/public/images/pokemon/icons/4/439s.png b/public/images/pokemon/icons/4/439s.png index 5a51b871a7b..93ec33eaa6f 100644 Binary files a/public/images/pokemon/icons/4/439s.png and b/public/images/pokemon/icons/4/439s.png differ diff --git a/public/images/pokemon/icons/4/440.png b/public/images/pokemon/icons/4/440.png index cb6803cb930..455afd8746e 100644 Binary files a/public/images/pokemon/icons/4/440.png and b/public/images/pokemon/icons/4/440.png differ diff --git a/public/images/pokemon/icons/4/440s.png b/public/images/pokemon/icons/4/440s.png index 7de964cfd91..4c214a11531 100644 Binary files a/public/images/pokemon/icons/4/440s.png and b/public/images/pokemon/icons/4/440s.png differ diff --git a/public/images/pokemon/icons/4/441.png b/public/images/pokemon/icons/4/441.png index 08280502e1f..4f6d07d09ba 100644 Binary files a/public/images/pokemon/icons/4/441.png and b/public/images/pokemon/icons/4/441.png differ diff --git a/public/images/pokemon/icons/4/441s.png b/public/images/pokemon/icons/4/441s.png index dc8e1736920..414edcc1192 100644 Binary files a/public/images/pokemon/icons/4/441s.png and b/public/images/pokemon/icons/4/441s.png differ diff --git a/public/images/pokemon/icons/4/442.png b/public/images/pokemon/icons/4/442.png index 47a3f429032..77ecb1f4865 100644 Binary files a/public/images/pokemon/icons/4/442.png and b/public/images/pokemon/icons/4/442.png differ diff --git a/public/images/pokemon/icons/4/442s.png b/public/images/pokemon/icons/4/442s.png index 519982ed61c..cec39b63ed4 100644 Binary files a/public/images/pokemon/icons/4/442s.png and b/public/images/pokemon/icons/4/442s.png differ diff --git a/public/images/pokemon/icons/4/443.png b/public/images/pokemon/icons/4/443.png index 52e75de8170..9c8d89901b0 100644 Binary files a/public/images/pokemon/icons/4/443.png and b/public/images/pokemon/icons/4/443.png differ diff --git a/public/images/pokemon/icons/4/443s.png b/public/images/pokemon/icons/4/443s.png index b44143b6dc3..49d9f1c50dc 100644 Binary files a/public/images/pokemon/icons/4/443s.png and b/public/images/pokemon/icons/4/443s.png differ diff --git a/public/images/pokemon/icons/4/444.png b/public/images/pokemon/icons/4/444.png index d6e6e132067..04623fd95f9 100644 Binary files a/public/images/pokemon/icons/4/444.png and b/public/images/pokemon/icons/4/444.png differ diff --git a/public/images/pokemon/icons/4/444s.png b/public/images/pokemon/icons/4/444s.png index a8dc63516ce..b86e50e5cf2 100644 Binary files a/public/images/pokemon/icons/4/444s.png and b/public/images/pokemon/icons/4/444s.png differ diff --git a/public/images/pokemon/icons/4/445-mega.png b/public/images/pokemon/icons/4/445-mega.png index 342e4877ac1..3b533dc767f 100644 Binary files a/public/images/pokemon/icons/4/445-mega.png and b/public/images/pokemon/icons/4/445-mega.png differ diff --git a/public/images/pokemon/icons/4/445.png b/public/images/pokemon/icons/4/445.png index 16c13fabcfa..401626450d8 100644 Binary files a/public/images/pokemon/icons/4/445.png and b/public/images/pokemon/icons/4/445.png differ diff --git a/public/images/pokemon/icons/4/445s-mega.png b/public/images/pokemon/icons/4/445s-mega.png index 5a1a0b89d36..ddaf19bab25 100644 Binary files a/public/images/pokemon/icons/4/445s-mega.png and b/public/images/pokemon/icons/4/445s-mega.png differ diff --git a/public/images/pokemon/icons/4/445s.png b/public/images/pokemon/icons/4/445s.png index 3ded68fda5a..b472fbeb8f2 100644 Binary files a/public/images/pokemon/icons/4/445s.png and b/public/images/pokemon/icons/4/445s.png differ diff --git a/public/images/pokemon/icons/4/446.png b/public/images/pokemon/icons/4/446.png index e15552c9d09..235aafc3c63 100644 Binary files a/public/images/pokemon/icons/4/446.png and b/public/images/pokemon/icons/4/446.png differ diff --git a/public/images/pokemon/icons/4/446s.png b/public/images/pokemon/icons/4/446s.png index f18d69f87a0..1c872c64c15 100644 Binary files a/public/images/pokemon/icons/4/446s.png and b/public/images/pokemon/icons/4/446s.png differ diff --git a/public/images/pokemon/icons/4/447.png b/public/images/pokemon/icons/4/447.png index 589558f4cd4..96af4f5c02c 100644 Binary files a/public/images/pokemon/icons/4/447.png and b/public/images/pokemon/icons/4/447.png differ diff --git a/public/images/pokemon/icons/4/447s.png b/public/images/pokemon/icons/4/447s.png index e045fda6796..2bd29eeb69b 100644 Binary files a/public/images/pokemon/icons/4/447s.png and b/public/images/pokemon/icons/4/447s.png differ diff --git a/public/images/pokemon/icons/4/448-mega.png b/public/images/pokemon/icons/4/448-mega.png index bfdd5838d32..88e5ba1f8df 100644 Binary files a/public/images/pokemon/icons/4/448-mega.png and b/public/images/pokemon/icons/4/448-mega.png differ diff --git a/public/images/pokemon/icons/4/448.png b/public/images/pokemon/icons/4/448.png index 3bc76f31e20..e6df02b7980 100644 Binary files a/public/images/pokemon/icons/4/448.png and b/public/images/pokemon/icons/4/448.png differ diff --git a/public/images/pokemon/icons/4/448s-mega.png b/public/images/pokemon/icons/4/448s-mega.png index e7cdbce13e6..1e876727f39 100644 Binary files a/public/images/pokemon/icons/4/448s-mega.png and b/public/images/pokemon/icons/4/448s-mega.png differ diff --git a/public/images/pokemon/icons/4/448s.png b/public/images/pokemon/icons/4/448s.png index 390175c13ec..9551f596fc7 100644 Binary files a/public/images/pokemon/icons/4/448s.png and b/public/images/pokemon/icons/4/448s.png differ diff --git a/public/images/pokemon/icons/4/449-f.png b/public/images/pokemon/icons/4/449-f.png index 13c575f2708..7291b67c185 100644 Binary files a/public/images/pokemon/icons/4/449-f.png and b/public/images/pokemon/icons/4/449-f.png differ diff --git a/public/images/pokemon/icons/4/449.png b/public/images/pokemon/icons/4/449.png index a1894ee2e40..ecc42af32b9 100644 Binary files a/public/images/pokemon/icons/4/449.png and b/public/images/pokemon/icons/4/449.png differ diff --git a/public/images/pokemon/icons/4/449s-f.png b/public/images/pokemon/icons/4/449s-f.png index 5fc15988f03..8a0a1ca7da4 100644 Binary files a/public/images/pokemon/icons/4/449s-f.png and b/public/images/pokemon/icons/4/449s-f.png differ diff --git a/public/images/pokemon/icons/4/449s.png b/public/images/pokemon/icons/4/449s.png index 1918c7ae8da..5c5cffd0de5 100644 Binary files a/public/images/pokemon/icons/4/449s.png and b/public/images/pokemon/icons/4/449s.png differ diff --git a/public/images/pokemon/icons/4/450-f.png b/public/images/pokemon/icons/4/450-f.png index 7b707adf11c..ead760befd9 100644 Binary files a/public/images/pokemon/icons/4/450-f.png and b/public/images/pokemon/icons/4/450-f.png differ diff --git a/public/images/pokemon/icons/4/450.png b/public/images/pokemon/icons/4/450.png index 052b27d7ee3..9f0e448f320 100644 Binary files a/public/images/pokemon/icons/4/450.png and b/public/images/pokemon/icons/4/450.png differ diff --git a/public/images/pokemon/icons/4/450s-f.png b/public/images/pokemon/icons/4/450s-f.png index 6297024ffcb..1aeee853cc0 100644 Binary files a/public/images/pokemon/icons/4/450s-f.png and b/public/images/pokemon/icons/4/450s-f.png differ diff --git a/public/images/pokemon/icons/4/450s.png b/public/images/pokemon/icons/4/450s.png index 7e5d93ee26f..801f2f110b9 100644 Binary files a/public/images/pokemon/icons/4/450s.png and b/public/images/pokemon/icons/4/450s.png differ diff --git a/public/images/pokemon/icons/4/451.png b/public/images/pokemon/icons/4/451.png index ae358875099..53ca4c8fe2f 100644 Binary files a/public/images/pokemon/icons/4/451.png and b/public/images/pokemon/icons/4/451.png differ diff --git a/public/images/pokemon/icons/4/451s.png b/public/images/pokemon/icons/4/451s.png index d98010e1ebe..c40ef5c9a8d 100644 Binary files a/public/images/pokemon/icons/4/451s.png and b/public/images/pokemon/icons/4/451s.png differ diff --git a/public/images/pokemon/icons/4/452.png b/public/images/pokemon/icons/4/452.png index dcc605ca3f3..673f646360c 100644 Binary files a/public/images/pokemon/icons/4/452.png and b/public/images/pokemon/icons/4/452.png differ diff --git a/public/images/pokemon/icons/4/452s.png b/public/images/pokemon/icons/4/452s.png index 48210cee305..76b03dabb8f 100644 Binary files a/public/images/pokemon/icons/4/452s.png and b/public/images/pokemon/icons/4/452s.png differ diff --git a/public/images/pokemon/icons/4/453.png b/public/images/pokemon/icons/4/453.png index a89b1e0c566..3a95589b7b2 100644 Binary files a/public/images/pokemon/icons/4/453.png and b/public/images/pokemon/icons/4/453.png differ diff --git a/public/images/pokemon/icons/4/453s.png b/public/images/pokemon/icons/4/453s.png index 883132c0f4f..162bc0cf2c9 100644 Binary files a/public/images/pokemon/icons/4/453s.png and b/public/images/pokemon/icons/4/453s.png differ diff --git a/public/images/pokemon/icons/4/454.png b/public/images/pokemon/icons/4/454.png index 16925ea9a7d..3b53f4f7fbb 100644 Binary files a/public/images/pokemon/icons/4/454.png and b/public/images/pokemon/icons/4/454.png differ diff --git a/public/images/pokemon/icons/4/454s.png b/public/images/pokemon/icons/4/454s.png index 27acdc1ed83..a1993e8c8c7 100644 Binary files a/public/images/pokemon/icons/4/454s.png and b/public/images/pokemon/icons/4/454s.png differ diff --git a/public/images/pokemon/icons/4/455.png b/public/images/pokemon/icons/4/455.png index df5225c25ee..072d90577e1 100644 Binary files a/public/images/pokemon/icons/4/455.png and b/public/images/pokemon/icons/4/455.png differ diff --git a/public/images/pokemon/icons/4/455s.png b/public/images/pokemon/icons/4/455s.png index 3b85c8bc00e..d76a60dbeb5 100644 Binary files a/public/images/pokemon/icons/4/455s.png and b/public/images/pokemon/icons/4/455s.png differ diff --git a/public/images/pokemon/icons/4/456.png b/public/images/pokemon/icons/4/456.png index ae5e99243e6..3fe256e209e 100644 Binary files a/public/images/pokemon/icons/4/456.png and b/public/images/pokemon/icons/4/456.png differ diff --git a/public/images/pokemon/icons/4/456s.png b/public/images/pokemon/icons/4/456s.png index 6361202dc71..88829590955 100644 Binary files a/public/images/pokemon/icons/4/456s.png and b/public/images/pokemon/icons/4/456s.png differ diff --git a/public/images/pokemon/icons/4/457.png b/public/images/pokemon/icons/4/457.png index 060259ca5cb..f96796c3544 100644 Binary files a/public/images/pokemon/icons/4/457.png and b/public/images/pokemon/icons/4/457.png differ diff --git a/public/images/pokemon/icons/4/457s.png b/public/images/pokemon/icons/4/457s.png index d36d76e579b..d3ce28e1dd5 100644 Binary files a/public/images/pokemon/icons/4/457s.png and b/public/images/pokemon/icons/4/457s.png differ diff --git a/public/images/pokemon/icons/4/458.png b/public/images/pokemon/icons/4/458.png index 4afad27df09..b6497c3dbfc 100644 Binary files a/public/images/pokemon/icons/4/458.png and b/public/images/pokemon/icons/4/458.png differ diff --git a/public/images/pokemon/icons/4/458s.png b/public/images/pokemon/icons/4/458s.png index e8542036d39..6d06f808b79 100644 Binary files a/public/images/pokemon/icons/4/458s.png and b/public/images/pokemon/icons/4/458s.png differ diff --git a/public/images/pokemon/icons/4/459.png b/public/images/pokemon/icons/4/459.png index 5c880c1bdee..7a1a863f4d1 100644 Binary files a/public/images/pokemon/icons/4/459.png and b/public/images/pokemon/icons/4/459.png differ diff --git a/public/images/pokemon/icons/4/459s.png b/public/images/pokemon/icons/4/459s.png index ce483ddcb83..9a5393876e3 100644 Binary files a/public/images/pokemon/icons/4/459s.png and b/public/images/pokemon/icons/4/459s.png differ diff --git a/public/images/pokemon/icons/4/460-mega.png b/public/images/pokemon/icons/4/460-mega.png index 0018bec606e..f05e0bd2608 100644 Binary files a/public/images/pokemon/icons/4/460-mega.png and b/public/images/pokemon/icons/4/460-mega.png differ diff --git a/public/images/pokemon/icons/4/460.png b/public/images/pokemon/icons/4/460.png index 6904f8a1287..3097364888b 100644 Binary files a/public/images/pokemon/icons/4/460.png and b/public/images/pokemon/icons/4/460.png differ diff --git a/public/images/pokemon/icons/4/460s-mega.png b/public/images/pokemon/icons/4/460s-mega.png index 56f8927d876..23e65ce14f0 100644 Binary files a/public/images/pokemon/icons/4/460s-mega.png and b/public/images/pokemon/icons/4/460s-mega.png differ diff --git a/public/images/pokemon/icons/4/460s.png b/public/images/pokemon/icons/4/460s.png index 4a2da821e67..24e4894e71a 100644 Binary files a/public/images/pokemon/icons/4/460s.png and b/public/images/pokemon/icons/4/460s.png differ diff --git a/public/images/pokemon/icons/4/461.png b/public/images/pokemon/icons/4/461.png index 13998d27040..67e95b40b43 100644 Binary files a/public/images/pokemon/icons/4/461.png and b/public/images/pokemon/icons/4/461.png differ diff --git a/public/images/pokemon/icons/4/461s.png b/public/images/pokemon/icons/4/461s.png index a78564f8798..422ffbc830f 100644 Binary files a/public/images/pokemon/icons/4/461s.png and b/public/images/pokemon/icons/4/461s.png differ diff --git a/public/images/pokemon/icons/4/462.png b/public/images/pokemon/icons/4/462.png index 04137019fda..0ce99fc124b 100644 Binary files a/public/images/pokemon/icons/4/462.png and b/public/images/pokemon/icons/4/462.png differ diff --git a/public/images/pokemon/icons/4/462s.png b/public/images/pokemon/icons/4/462s.png index cd92d3a6123..eac355fe226 100644 Binary files a/public/images/pokemon/icons/4/462s.png and b/public/images/pokemon/icons/4/462s.png differ diff --git a/public/images/pokemon/icons/4/463.png b/public/images/pokemon/icons/4/463.png index 8871c1435f8..0f3a1237b36 100644 Binary files a/public/images/pokemon/icons/4/463.png and b/public/images/pokemon/icons/4/463.png differ diff --git a/public/images/pokemon/icons/4/463s.png b/public/images/pokemon/icons/4/463s.png index 2b73e548065..478e84164d0 100644 Binary files a/public/images/pokemon/icons/4/463s.png and b/public/images/pokemon/icons/4/463s.png differ diff --git a/public/images/pokemon/icons/4/464.png b/public/images/pokemon/icons/4/464.png index 5b5978ae0d1..e6970835ec6 100644 Binary files a/public/images/pokemon/icons/4/464.png and b/public/images/pokemon/icons/4/464.png differ diff --git a/public/images/pokemon/icons/4/464s.png b/public/images/pokemon/icons/4/464s.png index 9bfe647ee32..5be7d25505d 100644 Binary files a/public/images/pokemon/icons/4/464s.png and b/public/images/pokemon/icons/4/464s.png differ diff --git a/public/images/pokemon/icons/4/465.png b/public/images/pokemon/icons/4/465.png index 54e022b36a4..1435d6e68cb 100644 Binary files a/public/images/pokemon/icons/4/465.png and b/public/images/pokemon/icons/4/465.png differ diff --git a/public/images/pokemon/icons/4/465s.png b/public/images/pokemon/icons/4/465s.png index d491c763757..fa224a2c4a5 100644 Binary files a/public/images/pokemon/icons/4/465s.png and b/public/images/pokemon/icons/4/465s.png differ diff --git a/public/images/pokemon/icons/4/466.png b/public/images/pokemon/icons/4/466.png index 62f6df66edd..8b687a0522f 100644 Binary files a/public/images/pokemon/icons/4/466.png and b/public/images/pokemon/icons/4/466.png differ diff --git a/public/images/pokemon/icons/4/466s.png b/public/images/pokemon/icons/4/466s.png index aa9068187fd..c75e6cac86c 100644 Binary files a/public/images/pokemon/icons/4/466s.png and b/public/images/pokemon/icons/4/466s.png differ diff --git a/public/images/pokemon/icons/4/467.png b/public/images/pokemon/icons/4/467.png index 279ff943b3b..4e101c92b25 100644 Binary files a/public/images/pokemon/icons/4/467.png and b/public/images/pokemon/icons/4/467.png differ diff --git a/public/images/pokemon/icons/4/467s.png b/public/images/pokemon/icons/4/467s.png index 4a050baddf1..f22508b42a4 100644 Binary files a/public/images/pokemon/icons/4/467s.png and b/public/images/pokemon/icons/4/467s.png differ diff --git a/public/images/pokemon/icons/4/468.png b/public/images/pokemon/icons/4/468.png index fe9bcddc0ca..092741e4126 100644 Binary files a/public/images/pokemon/icons/4/468.png and b/public/images/pokemon/icons/4/468.png differ diff --git a/public/images/pokemon/icons/4/468s.png b/public/images/pokemon/icons/4/468s.png index 22ec1348113..a8312d6ec10 100644 Binary files a/public/images/pokemon/icons/4/468s.png and b/public/images/pokemon/icons/4/468s.png differ diff --git a/public/images/pokemon/icons/4/469.png b/public/images/pokemon/icons/4/469.png index 48268764537..cfe0576ce65 100644 Binary files a/public/images/pokemon/icons/4/469.png and b/public/images/pokemon/icons/4/469.png differ diff --git a/public/images/pokemon/icons/4/469s.png b/public/images/pokemon/icons/4/469s.png index 31c2a635a49..4f756da17ff 100644 Binary files a/public/images/pokemon/icons/4/469s.png and b/public/images/pokemon/icons/4/469s.png differ diff --git a/public/images/pokemon/icons/4/470.png b/public/images/pokemon/icons/4/470.png index 7b105fa8f18..6b96608fc32 100644 Binary files a/public/images/pokemon/icons/4/470.png and b/public/images/pokemon/icons/4/470.png differ diff --git a/public/images/pokemon/icons/4/470s.png b/public/images/pokemon/icons/4/470s.png index 71fb710b76c..f415316ce06 100644 Binary files a/public/images/pokemon/icons/4/470s.png and b/public/images/pokemon/icons/4/470s.png differ diff --git a/public/images/pokemon/icons/4/471.png b/public/images/pokemon/icons/4/471.png index 59e00c9d1a8..a5370934073 100644 Binary files a/public/images/pokemon/icons/4/471.png and b/public/images/pokemon/icons/4/471.png differ diff --git a/public/images/pokemon/icons/4/471s.png b/public/images/pokemon/icons/4/471s.png index 14a822b28d6..0204955282b 100644 Binary files a/public/images/pokemon/icons/4/471s.png and b/public/images/pokemon/icons/4/471s.png differ diff --git a/public/images/pokemon/icons/4/472.png b/public/images/pokemon/icons/4/472.png index 29c13310604..91371b06726 100644 Binary files a/public/images/pokemon/icons/4/472.png and b/public/images/pokemon/icons/4/472.png differ diff --git a/public/images/pokemon/icons/4/472s.png b/public/images/pokemon/icons/4/472s.png index fe794bd3ca6..a3c7bd6d806 100644 Binary files a/public/images/pokemon/icons/4/472s.png and b/public/images/pokemon/icons/4/472s.png differ diff --git a/public/images/pokemon/icons/4/473.png b/public/images/pokemon/icons/4/473.png index 9ff1ba1a510..eae9bd03caf 100644 Binary files a/public/images/pokemon/icons/4/473.png and b/public/images/pokemon/icons/4/473.png differ diff --git a/public/images/pokemon/icons/4/473s.png b/public/images/pokemon/icons/4/473s.png index f5c387a5cc0..b3de94db50e 100644 Binary files a/public/images/pokemon/icons/4/473s.png and b/public/images/pokemon/icons/4/473s.png differ diff --git a/public/images/pokemon/icons/4/474.png b/public/images/pokemon/icons/4/474.png index 27936dfe6c5..a2a1fbe61c7 100644 Binary files a/public/images/pokemon/icons/4/474.png and b/public/images/pokemon/icons/4/474.png differ diff --git a/public/images/pokemon/icons/4/474s.png b/public/images/pokemon/icons/4/474s.png index 204a4b02b45..9190983c6c2 100644 Binary files a/public/images/pokemon/icons/4/474s.png and b/public/images/pokemon/icons/4/474s.png differ diff --git a/public/images/pokemon/icons/4/475-mega.png b/public/images/pokemon/icons/4/475-mega.png index bad2cc99e33..8d55057731b 100644 Binary files a/public/images/pokemon/icons/4/475-mega.png and b/public/images/pokemon/icons/4/475-mega.png differ diff --git a/public/images/pokemon/icons/4/475.png b/public/images/pokemon/icons/4/475.png index a6770a89a94..87a38295d88 100644 Binary files a/public/images/pokemon/icons/4/475.png and b/public/images/pokemon/icons/4/475.png differ diff --git a/public/images/pokemon/icons/4/475s-mega.png b/public/images/pokemon/icons/4/475s-mega.png index 0bf7489c464..438233d353f 100644 Binary files a/public/images/pokemon/icons/4/475s-mega.png and b/public/images/pokemon/icons/4/475s-mega.png differ diff --git a/public/images/pokemon/icons/4/475s.png b/public/images/pokemon/icons/4/475s.png index e63de6e547e..9711263e355 100644 Binary files a/public/images/pokemon/icons/4/475s.png and b/public/images/pokemon/icons/4/475s.png differ diff --git a/public/images/pokemon/icons/4/476.png b/public/images/pokemon/icons/4/476.png index 9cf6eebc6aa..6075413ef37 100644 Binary files a/public/images/pokemon/icons/4/476.png and b/public/images/pokemon/icons/4/476.png differ diff --git a/public/images/pokemon/icons/4/476s.png b/public/images/pokemon/icons/4/476s.png index 97269198180..34be4b01360 100644 Binary files a/public/images/pokemon/icons/4/476s.png and b/public/images/pokemon/icons/4/476s.png differ diff --git a/public/images/pokemon/icons/4/477.png b/public/images/pokemon/icons/4/477.png index 5450e0e79b3..9d387f01676 100644 Binary files a/public/images/pokemon/icons/4/477.png and b/public/images/pokemon/icons/4/477.png differ diff --git a/public/images/pokemon/icons/4/477s.png b/public/images/pokemon/icons/4/477s.png index bd1ec075168..53b3c8a7d96 100644 Binary files a/public/images/pokemon/icons/4/477s.png and b/public/images/pokemon/icons/4/477s.png differ diff --git a/public/images/pokemon/icons/4/478.png b/public/images/pokemon/icons/4/478.png index 78d9d5b8f57..59225f0368c 100644 Binary files a/public/images/pokemon/icons/4/478.png and b/public/images/pokemon/icons/4/478.png differ diff --git a/public/images/pokemon/icons/4/478s.png b/public/images/pokemon/icons/4/478s.png index 4d0a58327cd..9b04cd3ba5d 100644 Binary files a/public/images/pokemon/icons/4/478s.png and b/public/images/pokemon/icons/4/478s.png differ diff --git a/public/images/pokemon/icons/4/479-fan.png b/public/images/pokemon/icons/4/479-fan.png index 3e4de842754..593ab3daa56 100644 Binary files a/public/images/pokemon/icons/4/479-fan.png and b/public/images/pokemon/icons/4/479-fan.png differ diff --git a/public/images/pokemon/icons/4/479-frost.png b/public/images/pokemon/icons/4/479-frost.png index f6bd05f9a28..428e3be03e2 100644 Binary files a/public/images/pokemon/icons/4/479-frost.png and b/public/images/pokemon/icons/4/479-frost.png differ diff --git a/public/images/pokemon/icons/4/479-heat.png b/public/images/pokemon/icons/4/479-heat.png index 36501c8e310..e73bdd129a9 100644 Binary files a/public/images/pokemon/icons/4/479-heat.png and b/public/images/pokemon/icons/4/479-heat.png differ diff --git a/public/images/pokemon/icons/4/479-mow.png b/public/images/pokemon/icons/4/479-mow.png index 68bb699675c..8044c3d3225 100644 Binary files a/public/images/pokemon/icons/4/479-mow.png and b/public/images/pokemon/icons/4/479-mow.png differ diff --git a/public/images/pokemon/icons/4/479-wash.png b/public/images/pokemon/icons/4/479-wash.png index 110fcae923c..dc7992c88a8 100644 Binary files a/public/images/pokemon/icons/4/479-wash.png and b/public/images/pokemon/icons/4/479-wash.png differ diff --git a/public/images/pokemon/icons/4/479.png b/public/images/pokemon/icons/4/479.png index ccacd3960ce..699189f9424 100644 Binary files a/public/images/pokemon/icons/4/479.png and b/public/images/pokemon/icons/4/479.png differ diff --git a/public/images/pokemon/icons/4/479s-fan.png b/public/images/pokemon/icons/4/479s-fan.png index fa8e31a603b..f7483543652 100644 Binary files a/public/images/pokemon/icons/4/479s-fan.png and b/public/images/pokemon/icons/4/479s-fan.png differ diff --git a/public/images/pokemon/icons/4/479s-frost.png b/public/images/pokemon/icons/4/479s-frost.png index 170e7774852..87488b29393 100644 Binary files a/public/images/pokemon/icons/4/479s-frost.png and b/public/images/pokemon/icons/4/479s-frost.png differ diff --git a/public/images/pokemon/icons/4/479s-heat.png b/public/images/pokemon/icons/4/479s-heat.png index 24659bf6fbe..c0ad94df727 100644 Binary files a/public/images/pokemon/icons/4/479s-heat.png and b/public/images/pokemon/icons/4/479s-heat.png differ diff --git a/public/images/pokemon/icons/4/479s-mow.png b/public/images/pokemon/icons/4/479s-mow.png index 4397189da04..4f043a5decc 100644 Binary files a/public/images/pokemon/icons/4/479s-mow.png and b/public/images/pokemon/icons/4/479s-mow.png differ diff --git a/public/images/pokemon/icons/4/479s-wash.png b/public/images/pokemon/icons/4/479s-wash.png index 793b86b3249..977500a9f23 100644 Binary files a/public/images/pokemon/icons/4/479s-wash.png and b/public/images/pokemon/icons/4/479s-wash.png differ diff --git a/public/images/pokemon/icons/4/479s.png b/public/images/pokemon/icons/4/479s.png index f4bc59bdde6..defab4bcb9d 100644 Binary files a/public/images/pokemon/icons/4/479s.png and b/public/images/pokemon/icons/4/479s.png differ diff --git a/public/images/pokemon/icons/4/480.png b/public/images/pokemon/icons/4/480.png index 4ff9df20b88..9d45351cae3 100644 Binary files a/public/images/pokemon/icons/4/480.png and b/public/images/pokemon/icons/4/480.png differ diff --git a/public/images/pokemon/icons/4/480s.png b/public/images/pokemon/icons/4/480s.png index a5522b0edf5..0a4212ff5a7 100644 Binary files a/public/images/pokemon/icons/4/480s.png and b/public/images/pokemon/icons/4/480s.png differ diff --git a/public/images/pokemon/icons/4/481.png b/public/images/pokemon/icons/4/481.png index 4f2ebe45028..e30219b65c3 100644 Binary files a/public/images/pokemon/icons/4/481.png and b/public/images/pokemon/icons/4/481.png differ diff --git a/public/images/pokemon/icons/4/481s.png b/public/images/pokemon/icons/4/481s.png index a95e2427e39..d2e9fa1f07a 100644 Binary files a/public/images/pokemon/icons/4/481s.png and b/public/images/pokemon/icons/4/481s.png differ diff --git a/public/images/pokemon/icons/4/482.png b/public/images/pokemon/icons/4/482.png index bb1f0def462..ee04d750cd4 100644 Binary files a/public/images/pokemon/icons/4/482.png and b/public/images/pokemon/icons/4/482.png differ diff --git a/public/images/pokemon/icons/4/482s.png b/public/images/pokemon/icons/4/482s.png index b37f21c381b..4344c2b24ec 100644 Binary files a/public/images/pokemon/icons/4/482s.png and b/public/images/pokemon/icons/4/482s.png differ diff --git a/public/images/pokemon/icons/4/483-origin.png b/public/images/pokemon/icons/4/483-origin.png index 97497a2a1fa..19747dc243d 100644 Binary files a/public/images/pokemon/icons/4/483-origin.png and b/public/images/pokemon/icons/4/483-origin.png differ diff --git a/public/images/pokemon/icons/4/483.png b/public/images/pokemon/icons/4/483.png index 7cbe721dc11..25f4db93d59 100644 Binary files a/public/images/pokemon/icons/4/483.png and b/public/images/pokemon/icons/4/483.png differ diff --git a/public/images/pokemon/icons/4/483s-origin.png b/public/images/pokemon/icons/4/483s-origin.png index 798cddaa364..d2db73f363e 100644 Binary files a/public/images/pokemon/icons/4/483s-origin.png and b/public/images/pokemon/icons/4/483s-origin.png differ diff --git a/public/images/pokemon/icons/4/483s.png b/public/images/pokemon/icons/4/483s.png index ab5fa651cc7..513b5c4bf56 100644 Binary files a/public/images/pokemon/icons/4/483s.png and b/public/images/pokemon/icons/4/483s.png differ diff --git a/public/images/pokemon/icons/4/484-origin.png b/public/images/pokemon/icons/4/484-origin.png index df26f0b2260..8ed9cf0a780 100644 Binary files a/public/images/pokemon/icons/4/484-origin.png and b/public/images/pokemon/icons/4/484-origin.png differ diff --git a/public/images/pokemon/icons/4/484.png b/public/images/pokemon/icons/4/484.png index 22159eb420a..4d83962c8f1 100644 Binary files a/public/images/pokemon/icons/4/484.png and b/public/images/pokemon/icons/4/484.png differ diff --git a/public/images/pokemon/icons/4/484s-origin.png b/public/images/pokemon/icons/4/484s-origin.png index 7031e40b780..b711dfbd3bc 100644 Binary files a/public/images/pokemon/icons/4/484s-origin.png and b/public/images/pokemon/icons/4/484s-origin.png differ diff --git a/public/images/pokemon/icons/4/484s.png b/public/images/pokemon/icons/4/484s.png index e01ef2d9d25..6b3db514b78 100644 Binary files a/public/images/pokemon/icons/4/484s.png and b/public/images/pokemon/icons/4/484s.png differ diff --git a/public/images/pokemon/icons/4/485.png b/public/images/pokemon/icons/4/485.png index 8e95752ab3c..a5d24b5acf3 100644 Binary files a/public/images/pokemon/icons/4/485.png and b/public/images/pokemon/icons/4/485.png differ diff --git a/public/images/pokemon/icons/4/485s.png b/public/images/pokemon/icons/4/485s.png index 4b4a1159070..0751e3d2fb5 100644 Binary files a/public/images/pokemon/icons/4/485s.png and b/public/images/pokemon/icons/4/485s.png differ diff --git a/public/images/pokemon/icons/4/486.png b/public/images/pokemon/icons/4/486.png index 9eee8ce1458..e405fc1abda 100644 Binary files a/public/images/pokemon/icons/4/486.png and b/public/images/pokemon/icons/4/486.png differ diff --git a/public/images/pokemon/icons/4/486s.png b/public/images/pokemon/icons/4/486s.png index afc5ca12907..e77affbb914 100644 Binary files a/public/images/pokemon/icons/4/486s.png and b/public/images/pokemon/icons/4/486s.png differ diff --git a/public/images/pokemon/icons/4/487-altered.png b/public/images/pokemon/icons/4/487-altered.png index 4b69e547938..a186f41bb9b 100644 Binary files a/public/images/pokemon/icons/4/487-altered.png and b/public/images/pokemon/icons/4/487-altered.png differ diff --git a/public/images/pokemon/icons/4/487-origin.png b/public/images/pokemon/icons/4/487-origin.png index 9f732be58a8..838c75d5529 100644 Binary files a/public/images/pokemon/icons/4/487-origin.png and b/public/images/pokemon/icons/4/487-origin.png differ diff --git a/public/images/pokemon/icons/4/487s-altered.png b/public/images/pokemon/icons/4/487s-altered.png index 841aa58f4bb..ab1fde33029 100644 Binary files a/public/images/pokemon/icons/4/487s-altered.png and b/public/images/pokemon/icons/4/487s-altered.png differ diff --git a/public/images/pokemon/icons/4/487s-origin.png b/public/images/pokemon/icons/4/487s-origin.png index ca723f3759c..56f305ccc40 100644 Binary files a/public/images/pokemon/icons/4/487s-origin.png and b/public/images/pokemon/icons/4/487s-origin.png differ diff --git a/public/images/pokemon/icons/4/488.png b/public/images/pokemon/icons/4/488.png index f4751191e2a..60d82da5183 100644 Binary files a/public/images/pokemon/icons/4/488.png and b/public/images/pokemon/icons/4/488.png differ diff --git a/public/images/pokemon/icons/4/488s.png b/public/images/pokemon/icons/4/488s.png index ab9819d374b..7041c816e4a 100644 Binary files a/public/images/pokemon/icons/4/488s.png and b/public/images/pokemon/icons/4/488s.png differ diff --git a/public/images/pokemon/icons/4/489.png b/public/images/pokemon/icons/4/489.png index 881c8cac434..586da2ab58e 100644 Binary files a/public/images/pokemon/icons/4/489.png and b/public/images/pokemon/icons/4/489.png differ diff --git a/public/images/pokemon/icons/4/489s.png b/public/images/pokemon/icons/4/489s.png index c40225fb1ba..4125ecefc8a 100644 Binary files a/public/images/pokemon/icons/4/489s.png and b/public/images/pokemon/icons/4/489s.png differ diff --git a/public/images/pokemon/icons/4/490.png b/public/images/pokemon/icons/4/490.png index 3bdb511c67b..e769ebef3ef 100644 Binary files a/public/images/pokemon/icons/4/490.png and b/public/images/pokemon/icons/4/490.png differ diff --git a/public/images/pokemon/icons/4/490s.png b/public/images/pokemon/icons/4/490s.png index 0f3d0d0db8f..0242d20faa4 100644 Binary files a/public/images/pokemon/icons/4/490s.png and b/public/images/pokemon/icons/4/490s.png differ diff --git a/public/images/pokemon/icons/4/491.png b/public/images/pokemon/icons/4/491.png index c3924ccaab1..db908b20a25 100644 Binary files a/public/images/pokemon/icons/4/491.png and b/public/images/pokemon/icons/4/491.png differ diff --git a/public/images/pokemon/icons/4/491s.png b/public/images/pokemon/icons/4/491s.png index e9323c053fe..229e2594588 100644 Binary files a/public/images/pokemon/icons/4/491s.png and b/public/images/pokemon/icons/4/491s.png differ diff --git a/public/images/pokemon/icons/4/492-land.png b/public/images/pokemon/icons/4/492-land.png index 71312542b20..1d1d330d726 100644 Binary files a/public/images/pokemon/icons/4/492-land.png and b/public/images/pokemon/icons/4/492-land.png differ diff --git a/public/images/pokemon/icons/4/492-sky.png b/public/images/pokemon/icons/4/492-sky.png index 8950e7f3ffb..d60d5042267 100644 Binary files a/public/images/pokemon/icons/4/492-sky.png and b/public/images/pokemon/icons/4/492-sky.png differ diff --git a/public/images/pokemon/icons/4/492s-land.png b/public/images/pokemon/icons/4/492s-land.png index 7ca256333c9..c7a80bc095f 100644 Binary files a/public/images/pokemon/icons/4/492s-land.png and b/public/images/pokemon/icons/4/492s-land.png differ diff --git a/public/images/pokemon/icons/4/492s-sky.png b/public/images/pokemon/icons/4/492s-sky.png index 3c085a270cc..ab6c155d020 100644 Binary files a/public/images/pokemon/icons/4/492s-sky.png and b/public/images/pokemon/icons/4/492s-sky.png differ diff --git a/public/images/pokemon/icons/4/493-bug.png b/public/images/pokemon/icons/4/493-bug.png index 49932a5a758..b925b64b80c 100644 Binary files a/public/images/pokemon/icons/4/493-bug.png and b/public/images/pokemon/icons/4/493-bug.png differ diff --git a/public/images/pokemon/icons/4/493-dark.png b/public/images/pokemon/icons/4/493-dark.png index 4747d6517fa..7c533bdfa41 100644 Binary files a/public/images/pokemon/icons/4/493-dark.png and b/public/images/pokemon/icons/4/493-dark.png differ diff --git a/public/images/pokemon/icons/4/493-dragon.png b/public/images/pokemon/icons/4/493-dragon.png index ec923b8b408..c7b232d68ba 100644 Binary files a/public/images/pokemon/icons/4/493-dragon.png and b/public/images/pokemon/icons/4/493-dragon.png differ diff --git a/public/images/pokemon/icons/4/493-electric.png b/public/images/pokemon/icons/4/493-electric.png index 3f7dfa570b9..7d66546231e 100644 Binary files a/public/images/pokemon/icons/4/493-electric.png and b/public/images/pokemon/icons/4/493-electric.png differ diff --git a/public/images/pokemon/icons/4/493-fairy.png b/public/images/pokemon/icons/4/493-fairy.png index 8e82930697c..0b70702e35f 100644 Binary files a/public/images/pokemon/icons/4/493-fairy.png and b/public/images/pokemon/icons/4/493-fairy.png differ diff --git a/public/images/pokemon/icons/4/493-fighting.png b/public/images/pokemon/icons/4/493-fighting.png index 315987b8967..253a814774c 100644 Binary files a/public/images/pokemon/icons/4/493-fighting.png and b/public/images/pokemon/icons/4/493-fighting.png differ diff --git a/public/images/pokemon/icons/4/493-fire.png b/public/images/pokemon/icons/4/493-fire.png index f96fb97d759..7266f632bbd 100644 Binary files a/public/images/pokemon/icons/4/493-fire.png and b/public/images/pokemon/icons/4/493-fire.png differ diff --git a/public/images/pokemon/icons/4/493-flying.png b/public/images/pokemon/icons/4/493-flying.png index af4e5ed37dc..7c23d0a8667 100644 Binary files a/public/images/pokemon/icons/4/493-flying.png and b/public/images/pokemon/icons/4/493-flying.png differ diff --git a/public/images/pokemon/icons/4/493-ghost.png b/public/images/pokemon/icons/4/493-ghost.png index bfe99b74b4e..06e4e8234e0 100644 Binary files a/public/images/pokemon/icons/4/493-ghost.png and b/public/images/pokemon/icons/4/493-ghost.png differ diff --git a/public/images/pokemon/icons/4/493-grass.png b/public/images/pokemon/icons/4/493-grass.png index e2a2ff9aff7..052ce41a6e4 100644 Binary files a/public/images/pokemon/icons/4/493-grass.png and b/public/images/pokemon/icons/4/493-grass.png differ diff --git a/public/images/pokemon/icons/4/493-ground.png b/public/images/pokemon/icons/4/493-ground.png index eb2f4fc6f5e..39b511ef9da 100644 Binary files a/public/images/pokemon/icons/4/493-ground.png and b/public/images/pokemon/icons/4/493-ground.png differ diff --git a/public/images/pokemon/icons/4/493-ice.png b/public/images/pokemon/icons/4/493-ice.png index 95c9007cef1..7197c0a4c17 100644 Binary files a/public/images/pokemon/icons/4/493-ice.png and b/public/images/pokemon/icons/4/493-ice.png differ diff --git a/public/images/pokemon/icons/4/493-normal.png b/public/images/pokemon/icons/4/493-normal.png index 32170f58cc9..91a8e9dc1b0 100644 Binary files a/public/images/pokemon/icons/4/493-normal.png and b/public/images/pokemon/icons/4/493-normal.png differ diff --git a/public/images/pokemon/icons/4/493-poison.png b/public/images/pokemon/icons/4/493-poison.png index 52ef2fe3e05..23d1832eb2c 100644 Binary files a/public/images/pokemon/icons/4/493-poison.png and b/public/images/pokemon/icons/4/493-poison.png differ diff --git a/public/images/pokemon/icons/4/493-psychic.png b/public/images/pokemon/icons/4/493-psychic.png index ba305c04b39..52cb6686362 100644 Binary files a/public/images/pokemon/icons/4/493-psychic.png and b/public/images/pokemon/icons/4/493-psychic.png differ diff --git a/public/images/pokemon/icons/4/493-rock.png b/public/images/pokemon/icons/4/493-rock.png index a1d9c711cbf..6da6946562b 100644 Binary files a/public/images/pokemon/icons/4/493-rock.png and b/public/images/pokemon/icons/4/493-rock.png differ diff --git a/public/images/pokemon/icons/4/493-steel.png b/public/images/pokemon/icons/4/493-steel.png index c1630faa1fc..017fe397920 100644 Binary files a/public/images/pokemon/icons/4/493-steel.png and b/public/images/pokemon/icons/4/493-steel.png differ diff --git a/public/images/pokemon/icons/4/493-unknown.png b/public/images/pokemon/icons/4/493-unknown.png index 97c6aff195c..5f58e4dd1ff 100644 Binary files a/public/images/pokemon/icons/4/493-unknown.png and b/public/images/pokemon/icons/4/493-unknown.png differ diff --git a/public/images/pokemon/icons/4/493-water.png b/public/images/pokemon/icons/4/493-water.png index ad7b75f28b2..1acb2a3c068 100644 Binary files a/public/images/pokemon/icons/4/493-water.png and b/public/images/pokemon/icons/4/493-water.png differ diff --git a/public/images/pokemon/icons/4/493s-bug.png b/public/images/pokemon/icons/4/493s-bug.png index 9077c82366a..dc24ac0db34 100644 Binary files a/public/images/pokemon/icons/4/493s-bug.png and b/public/images/pokemon/icons/4/493s-bug.png differ diff --git a/public/images/pokemon/icons/4/493s-dark.png b/public/images/pokemon/icons/4/493s-dark.png index df2e8587331..824779f0a07 100644 Binary files a/public/images/pokemon/icons/4/493s-dark.png and b/public/images/pokemon/icons/4/493s-dark.png differ diff --git a/public/images/pokemon/icons/4/493s-dragon.png b/public/images/pokemon/icons/4/493s-dragon.png index c4500168bf3..f5ca7ef53f8 100644 Binary files a/public/images/pokemon/icons/4/493s-dragon.png and b/public/images/pokemon/icons/4/493s-dragon.png differ diff --git a/public/images/pokemon/icons/4/493s-electric.png b/public/images/pokemon/icons/4/493s-electric.png index 8d5de94161e..b8f22201c8e 100644 Binary files a/public/images/pokemon/icons/4/493s-electric.png and b/public/images/pokemon/icons/4/493s-electric.png differ diff --git a/public/images/pokemon/icons/4/493s-fairy.png b/public/images/pokemon/icons/4/493s-fairy.png index 866b1a43b1e..a3ab9971ccf 100644 Binary files a/public/images/pokemon/icons/4/493s-fairy.png and b/public/images/pokemon/icons/4/493s-fairy.png differ diff --git a/public/images/pokemon/icons/4/493s-fighting.png b/public/images/pokemon/icons/4/493s-fighting.png index dbc0b27df26..63e223e635c 100644 Binary files a/public/images/pokemon/icons/4/493s-fighting.png and b/public/images/pokemon/icons/4/493s-fighting.png differ diff --git a/public/images/pokemon/icons/4/493s-fire.png b/public/images/pokemon/icons/4/493s-fire.png index c6d917c9b45..078a3a9ec0c 100644 Binary files a/public/images/pokemon/icons/4/493s-fire.png and b/public/images/pokemon/icons/4/493s-fire.png differ diff --git a/public/images/pokemon/icons/4/493s-flying.png b/public/images/pokemon/icons/4/493s-flying.png index 96a53bb6028..19518adf638 100644 Binary files a/public/images/pokemon/icons/4/493s-flying.png and b/public/images/pokemon/icons/4/493s-flying.png differ diff --git a/public/images/pokemon/icons/4/493s-ghost.png b/public/images/pokemon/icons/4/493s-ghost.png index 5ef22fef406..cade18ce627 100644 Binary files a/public/images/pokemon/icons/4/493s-ghost.png and b/public/images/pokemon/icons/4/493s-ghost.png differ diff --git a/public/images/pokemon/icons/4/493s-grass.png b/public/images/pokemon/icons/4/493s-grass.png index 94fa2ddd813..c43d77f7178 100644 Binary files a/public/images/pokemon/icons/4/493s-grass.png and b/public/images/pokemon/icons/4/493s-grass.png differ diff --git a/public/images/pokemon/icons/4/493s-ground.png b/public/images/pokemon/icons/4/493s-ground.png index 1db41cb3aec..2ab09072c7c 100644 Binary files a/public/images/pokemon/icons/4/493s-ground.png and b/public/images/pokemon/icons/4/493s-ground.png differ diff --git a/public/images/pokemon/icons/4/493s-ice.png b/public/images/pokemon/icons/4/493s-ice.png index aee0eb2dce5..1342b2a9f09 100644 Binary files a/public/images/pokemon/icons/4/493s-ice.png and b/public/images/pokemon/icons/4/493s-ice.png differ diff --git a/public/images/pokemon/icons/4/493s-normal.png b/public/images/pokemon/icons/4/493s-normal.png index b9c96f0f3d6..194cabee58d 100644 Binary files a/public/images/pokemon/icons/4/493s-normal.png and b/public/images/pokemon/icons/4/493s-normal.png differ diff --git a/public/images/pokemon/icons/4/493s-poison.png b/public/images/pokemon/icons/4/493s-poison.png index bc1f77c9494..9d9b811476b 100644 Binary files a/public/images/pokemon/icons/4/493s-poison.png and b/public/images/pokemon/icons/4/493s-poison.png differ diff --git a/public/images/pokemon/icons/4/493s-psychic.png b/public/images/pokemon/icons/4/493s-psychic.png index 2fc49e6f51a..a53d7d8c61a 100644 Binary files a/public/images/pokemon/icons/4/493s-psychic.png and b/public/images/pokemon/icons/4/493s-psychic.png differ diff --git a/public/images/pokemon/icons/4/493s-rock.png b/public/images/pokemon/icons/4/493s-rock.png index 499b980c8c0..71788b15ad2 100644 Binary files a/public/images/pokemon/icons/4/493s-rock.png and b/public/images/pokemon/icons/4/493s-rock.png differ diff --git a/public/images/pokemon/icons/4/493s-steel.png b/public/images/pokemon/icons/4/493s-steel.png index 91fe6158a23..cc2a6e24815 100644 Binary files a/public/images/pokemon/icons/4/493s-steel.png and b/public/images/pokemon/icons/4/493s-steel.png differ diff --git a/public/images/pokemon/icons/4/493s-unknown.png b/public/images/pokemon/icons/4/493s-unknown.png index d8e18b17098..d58398152d2 100644 Binary files a/public/images/pokemon/icons/4/493s-unknown.png and b/public/images/pokemon/icons/4/493s-unknown.png differ diff --git a/public/images/pokemon/icons/4/493s-water.png b/public/images/pokemon/icons/4/493s-water.png index f1851095c89..0a59388f2e8 100644 Binary files a/public/images/pokemon/icons/4/493s-water.png and b/public/images/pokemon/icons/4/493s-water.png differ diff --git a/public/images/pokemon/icons/5/494.png b/public/images/pokemon/icons/5/494.png index a720b8df2c8..70698f947e8 100644 Binary files a/public/images/pokemon/icons/5/494.png and b/public/images/pokemon/icons/5/494.png differ diff --git a/public/images/pokemon/icons/5/494s.png b/public/images/pokemon/icons/5/494s.png index 83d84b4a2e3..7389f474a07 100644 Binary files a/public/images/pokemon/icons/5/494s.png and b/public/images/pokemon/icons/5/494s.png differ diff --git a/public/images/pokemon/icons/5/495.png b/public/images/pokemon/icons/5/495.png index cac4f593b4c..09dce272ba2 100644 Binary files a/public/images/pokemon/icons/5/495.png and b/public/images/pokemon/icons/5/495.png differ diff --git a/public/images/pokemon/icons/5/495s.png b/public/images/pokemon/icons/5/495s.png index ab46ad9e5f1..76a85da3ccf 100644 Binary files a/public/images/pokemon/icons/5/495s.png and b/public/images/pokemon/icons/5/495s.png differ diff --git a/public/images/pokemon/icons/5/496.png b/public/images/pokemon/icons/5/496.png index 7bc6e88ffc4..a101a0131c2 100644 Binary files a/public/images/pokemon/icons/5/496.png and b/public/images/pokemon/icons/5/496.png differ diff --git a/public/images/pokemon/icons/5/496s.png b/public/images/pokemon/icons/5/496s.png index afa78d47b9b..12f19fdc1bd 100644 Binary files a/public/images/pokemon/icons/5/496s.png and b/public/images/pokemon/icons/5/496s.png differ diff --git a/public/images/pokemon/icons/5/497.png b/public/images/pokemon/icons/5/497.png index 77334ee6ec1..5dcf1023ff5 100644 Binary files a/public/images/pokemon/icons/5/497.png and b/public/images/pokemon/icons/5/497.png differ diff --git a/public/images/pokemon/icons/5/497s.png b/public/images/pokemon/icons/5/497s.png index 53b4cd81a68..d41f41a787f 100644 Binary files a/public/images/pokemon/icons/5/497s.png and b/public/images/pokemon/icons/5/497s.png differ diff --git a/public/images/pokemon/icons/5/498.png b/public/images/pokemon/icons/5/498.png index 23752467992..46653c02d22 100644 Binary files a/public/images/pokemon/icons/5/498.png and b/public/images/pokemon/icons/5/498.png differ diff --git a/public/images/pokemon/icons/5/498s.png b/public/images/pokemon/icons/5/498s.png index f9dbd783520..85c06010efc 100644 Binary files a/public/images/pokemon/icons/5/498s.png and b/public/images/pokemon/icons/5/498s.png differ diff --git a/public/images/pokemon/icons/5/499.png b/public/images/pokemon/icons/5/499.png index 2b4e08c38c2..5cf571300fd 100644 Binary files a/public/images/pokemon/icons/5/499.png and b/public/images/pokemon/icons/5/499.png differ diff --git a/public/images/pokemon/icons/5/499s.png b/public/images/pokemon/icons/5/499s.png index 7379b135157..facb7f2c377 100644 Binary files a/public/images/pokemon/icons/5/499s.png and b/public/images/pokemon/icons/5/499s.png differ diff --git a/public/images/pokemon/icons/5/500.png b/public/images/pokemon/icons/5/500.png index bf8aafc9de2..97167dd04cb 100644 Binary files a/public/images/pokemon/icons/5/500.png and b/public/images/pokemon/icons/5/500.png differ diff --git a/public/images/pokemon/icons/5/500s.png b/public/images/pokemon/icons/5/500s.png index ba2715fe127..9bf74328a49 100644 Binary files a/public/images/pokemon/icons/5/500s.png and b/public/images/pokemon/icons/5/500s.png differ diff --git a/public/images/pokemon/icons/5/501.png b/public/images/pokemon/icons/5/501.png index fd0c4ad690b..91dd58a353c 100644 Binary files a/public/images/pokemon/icons/5/501.png and b/public/images/pokemon/icons/5/501.png differ diff --git a/public/images/pokemon/icons/5/501s.png b/public/images/pokemon/icons/5/501s.png index c90637d0ad4..a9cd75c8fdf 100644 Binary files a/public/images/pokemon/icons/5/501s.png and b/public/images/pokemon/icons/5/501s.png differ diff --git a/public/images/pokemon/icons/5/502.png b/public/images/pokemon/icons/5/502.png index af848c38e8b..092718cd3b1 100644 Binary files a/public/images/pokemon/icons/5/502.png and b/public/images/pokemon/icons/5/502.png differ diff --git a/public/images/pokemon/icons/5/502s.png b/public/images/pokemon/icons/5/502s.png index a30f042dd95..6d970e8da09 100644 Binary files a/public/images/pokemon/icons/5/502s.png and b/public/images/pokemon/icons/5/502s.png differ diff --git a/public/images/pokemon/icons/5/503.png b/public/images/pokemon/icons/5/503.png index 689fb55ae31..9cd47928e26 100644 Binary files a/public/images/pokemon/icons/5/503.png and b/public/images/pokemon/icons/5/503.png differ diff --git a/public/images/pokemon/icons/5/503s.png b/public/images/pokemon/icons/5/503s.png index 921d2af53d5..79f03aa007a 100644 Binary files a/public/images/pokemon/icons/5/503s.png and b/public/images/pokemon/icons/5/503s.png differ diff --git a/public/images/pokemon/icons/5/504.png b/public/images/pokemon/icons/5/504.png index 784ef2e4b49..57d89eea0f0 100644 Binary files a/public/images/pokemon/icons/5/504.png and b/public/images/pokemon/icons/5/504.png differ diff --git a/public/images/pokemon/icons/5/504s.png b/public/images/pokemon/icons/5/504s.png index b881e3fb076..7fba8bb81dc 100644 Binary files a/public/images/pokemon/icons/5/504s.png and b/public/images/pokemon/icons/5/504s.png differ diff --git a/public/images/pokemon/icons/5/505.png b/public/images/pokemon/icons/5/505.png index 337fe8cf514..9846dd7d11b 100644 Binary files a/public/images/pokemon/icons/5/505.png and b/public/images/pokemon/icons/5/505.png differ diff --git a/public/images/pokemon/icons/5/505s.png b/public/images/pokemon/icons/5/505s.png index b70746781e1..ca160375f2e 100644 Binary files a/public/images/pokemon/icons/5/505s.png and b/public/images/pokemon/icons/5/505s.png differ diff --git a/public/images/pokemon/icons/5/506.png b/public/images/pokemon/icons/5/506.png index 25ab9ef0b73..aeb10ef71aa 100644 Binary files a/public/images/pokemon/icons/5/506.png and b/public/images/pokemon/icons/5/506.png differ diff --git a/public/images/pokemon/icons/5/506s.png b/public/images/pokemon/icons/5/506s.png index 324b6d11bd6..d1a545e4df4 100644 Binary files a/public/images/pokemon/icons/5/506s.png and b/public/images/pokemon/icons/5/506s.png differ diff --git a/public/images/pokemon/icons/5/507.png b/public/images/pokemon/icons/5/507.png index 65492fd5517..7d40a4bde6b 100644 Binary files a/public/images/pokemon/icons/5/507.png and b/public/images/pokemon/icons/5/507.png differ diff --git a/public/images/pokemon/icons/5/507s.png b/public/images/pokemon/icons/5/507s.png index 129512ab925..81db5b15ef6 100644 Binary files a/public/images/pokemon/icons/5/507s.png and b/public/images/pokemon/icons/5/507s.png differ diff --git a/public/images/pokemon/icons/5/508.png b/public/images/pokemon/icons/5/508.png index ffb31ebb779..93b05672388 100644 Binary files a/public/images/pokemon/icons/5/508.png and b/public/images/pokemon/icons/5/508.png differ diff --git a/public/images/pokemon/icons/5/508s.png b/public/images/pokemon/icons/5/508s.png index b5fc283e2bc..37fdc34db04 100644 Binary files a/public/images/pokemon/icons/5/508s.png and b/public/images/pokemon/icons/5/508s.png differ diff --git a/public/images/pokemon/icons/5/509.png b/public/images/pokemon/icons/5/509.png index dd9e5779aa0..194b1709838 100644 Binary files a/public/images/pokemon/icons/5/509.png and b/public/images/pokemon/icons/5/509.png differ diff --git a/public/images/pokemon/icons/5/509s.png b/public/images/pokemon/icons/5/509s.png index 497e9c4ac02..08d09212dc4 100644 Binary files a/public/images/pokemon/icons/5/509s.png and b/public/images/pokemon/icons/5/509s.png differ diff --git a/public/images/pokemon/icons/5/510.png b/public/images/pokemon/icons/5/510.png index cd04a7178d6..2ed506ff418 100644 Binary files a/public/images/pokemon/icons/5/510.png and b/public/images/pokemon/icons/5/510.png differ diff --git a/public/images/pokemon/icons/5/510s.png b/public/images/pokemon/icons/5/510s.png index f170074d991..bdabad671ea 100644 Binary files a/public/images/pokemon/icons/5/510s.png and b/public/images/pokemon/icons/5/510s.png differ diff --git a/public/images/pokemon/icons/5/511.png b/public/images/pokemon/icons/5/511.png index 153953d1f44..9fd775e587d 100644 Binary files a/public/images/pokemon/icons/5/511.png and b/public/images/pokemon/icons/5/511.png differ diff --git a/public/images/pokemon/icons/5/511s.png b/public/images/pokemon/icons/5/511s.png index cb61f6b6d44..3cd61d22397 100644 Binary files a/public/images/pokemon/icons/5/511s.png and b/public/images/pokemon/icons/5/511s.png differ diff --git a/public/images/pokemon/icons/5/512.png b/public/images/pokemon/icons/5/512.png index df633450a4d..db6d0d00aec 100644 Binary files a/public/images/pokemon/icons/5/512.png and b/public/images/pokemon/icons/5/512.png differ diff --git a/public/images/pokemon/icons/5/512s.png b/public/images/pokemon/icons/5/512s.png index bc7894772b1..39c55c11615 100644 Binary files a/public/images/pokemon/icons/5/512s.png and b/public/images/pokemon/icons/5/512s.png differ diff --git a/public/images/pokemon/icons/5/513.png b/public/images/pokemon/icons/5/513.png index 257e18973e8..c6eecdaacd0 100644 Binary files a/public/images/pokemon/icons/5/513.png and b/public/images/pokemon/icons/5/513.png differ diff --git a/public/images/pokemon/icons/5/513s.png b/public/images/pokemon/icons/5/513s.png index 98f82c7a5b6..816baed9522 100644 Binary files a/public/images/pokemon/icons/5/513s.png and b/public/images/pokemon/icons/5/513s.png differ diff --git a/public/images/pokemon/icons/5/514.png b/public/images/pokemon/icons/5/514.png index e9fc187a349..7b67ffffb84 100644 Binary files a/public/images/pokemon/icons/5/514.png and b/public/images/pokemon/icons/5/514.png differ diff --git a/public/images/pokemon/icons/5/514s.png b/public/images/pokemon/icons/5/514s.png index a5d98536f11..2802fdb2959 100644 Binary files a/public/images/pokemon/icons/5/514s.png and b/public/images/pokemon/icons/5/514s.png differ diff --git a/public/images/pokemon/icons/5/515.png b/public/images/pokemon/icons/5/515.png index 3f155a24eed..1436354dd84 100644 Binary files a/public/images/pokemon/icons/5/515.png and b/public/images/pokemon/icons/5/515.png differ diff --git a/public/images/pokemon/icons/5/515s.png b/public/images/pokemon/icons/5/515s.png index ae62c10148c..40357feec09 100644 Binary files a/public/images/pokemon/icons/5/515s.png and b/public/images/pokemon/icons/5/515s.png differ diff --git a/public/images/pokemon/icons/5/516.png b/public/images/pokemon/icons/5/516.png index 4cf488f8f50..000b42de617 100644 Binary files a/public/images/pokemon/icons/5/516.png and b/public/images/pokemon/icons/5/516.png differ diff --git a/public/images/pokemon/icons/5/516s.png b/public/images/pokemon/icons/5/516s.png index 5ca049b0e7f..73fe2def275 100644 Binary files a/public/images/pokemon/icons/5/516s.png and b/public/images/pokemon/icons/5/516s.png differ diff --git a/public/images/pokemon/icons/5/517.png b/public/images/pokemon/icons/5/517.png index 3932ab3927a..e3e7b564a4d 100644 Binary files a/public/images/pokemon/icons/5/517.png and b/public/images/pokemon/icons/5/517.png differ diff --git a/public/images/pokemon/icons/5/517s.png b/public/images/pokemon/icons/5/517s.png index 17f4ebcfc6a..138647c489e 100644 Binary files a/public/images/pokemon/icons/5/517s.png and b/public/images/pokemon/icons/5/517s.png differ diff --git a/public/images/pokemon/icons/5/518.png b/public/images/pokemon/icons/5/518.png index 3be1cf4e5d8..4d7a232fdbb 100644 Binary files a/public/images/pokemon/icons/5/518.png and b/public/images/pokemon/icons/5/518.png differ diff --git a/public/images/pokemon/icons/5/518s.png b/public/images/pokemon/icons/5/518s.png index d53e8ab05ad..53240bbfdfb 100644 Binary files a/public/images/pokemon/icons/5/518s.png and b/public/images/pokemon/icons/5/518s.png differ diff --git a/public/images/pokemon/icons/5/519.png b/public/images/pokemon/icons/5/519.png index 468642f2725..1364a7e4f86 100644 Binary files a/public/images/pokemon/icons/5/519.png and b/public/images/pokemon/icons/5/519.png differ diff --git a/public/images/pokemon/icons/5/519s.png b/public/images/pokemon/icons/5/519s.png index 6cc65c080a4..8ab4d9ad709 100644 Binary files a/public/images/pokemon/icons/5/519s.png and b/public/images/pokemon/icons/5/519s.png differ diff --git a/public/images/pokemon/icons/5/520.png b/public/images/pokemon/icons/5/520.png index 84a46aa0cc8..746377338f2 100644 Binary files a/public/images/pokemon/icons/5/520.png and b/public/images/pokemon/icons/5/520.png differ diff --git a/public/images/pokemon/icons/5/520s.png b/public/images/pokemon/icons/5/520s.png index 1790ad7ec5c..ce4cec50e82 100644 Binary files a/public/images/pokemon/icons/5/520s.png and b/public/images/pokemon/icons/5/520s.png differ diff --git a/public/images/pokemon/icons/5/521-f.png b/public/images/pokemon/icons/5/521-f.png index 1c4358cc759..9694ece3210 100644 Binary files a/public/images/pokemon/icons/5/521-f.png and b/public/images/pokemon/icons/5/521-f.png differ diff --git a/public/images/pokemon/icons/5/521.png b/public/images/pokemon/icons/5/521.png index 4b6b8f26d81..499629155c1 100644 Binary files a/public/images/pokemon/icons/5/521.png and b/public/images/pokemon/icons/5/521.png differ diff --git a/public/images/pokemon/icons/5/521s-f.png b/public/images/pokemon/icons/5/521s-f.png index 1e773f7ccd9..0cea07d5d45 100644 Binary files a/public/images/pokemon/icons/5/521s-f.png and b/public/images/pokemon/icons/5/521s-f.png differ diff --git a/public/images/pokemon/icons/5/521s.png b/public/images/pokemon/icons/5/521s.png index 0444631b593..ce047a77f85 100644 Binary files a/public/images/pokemon/icons/5/521s.png and b/public/images/pokemon/icons/5/521s.png differ diff --git a/public/images/pokemon/icons/5/522.png b/public/images/pokemon/icons/5/522.png index 7f5f152f0e8..efefb7ddb39 100644 Binary files a/public/images/pokemon/icons/5/522.png and b/public/images/pokemon/icons/5/522.png differ diff --git a/public/images/pokemon/icons/5/522s.png b/public/images/pokemon/icons/5/522s.png index 3566dd390ce..ae5c57ecee5 100644 Binary files a/public/images/pokemon/icons/5/522s.png and b/public/images/pokemon/icons/5/522s.png differ diff --git a/public/images/pokemon/icons/5/523.png b/public/images/pokemon/icons/5/523.png index 05cb8d55308..2e6784a48f3 100644 Binary files a/public/images/pokemon/icons/5/523.png and b/public/images/pokemon/icons/5/523.png differ diff --git a/public/images/pokemon/icons/5/523s.png b/public/images/pokemon/icons/5/523s.png index f3f5c2c0a13..57b17bfbf54 100644 Binary files a/public/images/pokemon/icons/5/523s.png and b/public/images/pokemon/icons/5/523s.png differ diff --git a/public/images/pokemon/icons/5/524.png b/public/images/pokemon/icons/5/524.png index 1891df71107..1aa907e70f2 100644 Binary files a/public/images/pokemon/icons/5/524.png and b/public/images/pokemon/icons/5/524.png differ diff --git a/public/images/pokemon/icons/5/524s.png b/public/images/pokemon/icons/5/524s.png index d82e7f7a024..97aa406e091 100644 Binary files a/public/images/pokemon/icons/5/524s.png and b/public/images/pokemon/icons/5/524s.png differ diff --git a/public/images/pokemon/icons/5/525.png b/public/images/pokemon/icons/5/525.png index c93f4d2c178..4f32ec3be2a 100644 Binary files a/public/images/pokemon/icons/5/525.png and b/public/images/pokemon/icons/5/525.png differ diff --git a/public/images/pokemon/icons/5/525s.png b/public/images/pokemon/icons/5/525s.png index 5c3c907ac78..f19dbd778ec 100644 Binary files a/public/images/pokemon/icons/5/525s.png and b/public/images/pokemon/icons/5/525s.png differ diff --git a/public/images/pokemon/icons/5/526.png b/public/images/pokemon/icons/5/526.png index 5b669d65ea5..9ba0c1ccc3e 100644 Binary files a/public/images/pokemon/icons/5/526.png and b/public/images/pokemon/icons/5/526.png differ diff --git a/public/images/pokemon/icons/5/526s.png b/public/images/pokemon/icons/5/526s.png index bfa10c18d81..88ab40fd7c5 100644 Binary files a/public/images/pokemon/icons/5/526s.png and b/public/images/pokemon/icons/5/526s.png differ diff --git a/public/images/pokemon/icons/5/527.png b/public/images/pokemon/icons/5/527.png index 1b42c591a11..5b3f3a79eff 100644 Binary files a/public/images/pokemon/icons/5/527.png and b/public/images/pokemon/icons/5/527.png differ diff --git a/public/images/pokemon/icons/5/527s.png b/public/images/pokemon/icons/5/527s.png index 815cd6fd1b8..8976c5e0f91 100644 Binary files a/public/images/pokemon/icons/5/527s.png and b/public/images/pokemon/icons/5/527s.png differ diff --git a/public/images/pokemon/icons/5/528.png b/public/images/pokemon/icons/5/528.png index 13ef3ab6828..7a439f73ef6 100644 Binary files a/public/images/pokemon/icons/5/528.png and b/public/images/pokemon/icons/5/528.png differ diff --git a/public/images/pokemon/icons/5/528s.png b/public/images/pokemon/icons/5/528s.png index 3abfc499d23..a48764553b5 100644 Binary files a/public/images/pokemon/icons/5/528s.png and b/public/images/pokemon/icons/5/528s.png differ diff --git a/public/images/pokemon/icons/5/529.png b/public/images/pokemon/icons/5/529.png index 7bffa4b84be..0b9b51469bf 100644 Binary files a/public/images/pokemon/icons/5/529.png and b/public/images/pokemon/icons/5/529.png differ diff --git a/public/images/pokemon/icons/5/529s.png b/public/images/pokemon/icons/5/529s.png index 5154992c3da..2e70c5ec4d4 100644 Binary files a/public/images/pokemon/icons/5/529s.png and b/public/images/pokemon/icons/5/529s.png differ diff --git a/public/images/pokemon/icons/5/530.png b/public/images/pokemon/icons/5/530.png index e2f868f85fa..3370bc33d1c 100644 Binary files a/public/images/pokemon/icons/5/530.png and b/public/images/pokemon/icons/5/530.png differ diff --git a/public/images/pokemon/icons/5/530s.png b/public/images/pokemon/icons/5/530s.png index 22fc852a369..abc4e0f349d 100644 Binary files a/public/images/pokemon/icons/5/530s.png and b/public/images/pokemon/icons/5/530s.png differ diff --git a/public/images/pokemon/icons/5/531-mega.png b/public/images/pokemon/icons/5/531-mega.png index dc567083d36..c8fa83077af 100644 Binary files a/public/images/pokemon/icons/5/531-mega.png and b/public/images/pokemon/icons/5/531-mega.png differ diff --git a/public/images/pokemon/icons/5/531.png b/public/images/pokemon/icons/5/531.png index be4d60a0515..03ee5c4d486 100644 Binary files a/public/images/pokemon/icons/5/531.png and b/public/images/pokemon/icons/5/531.png differ diff --git a/public/images/pokemon/icons/5/531s-mega.png b/public/images/pokemon/icons/5/531s-mega.png index 9612bd04db5..c406cd15f78 100644 Binary files a/public/images/pokemon/icons/5/531s-mega.png and b/public/images/pokemon/icons/5/531s-mega.png differ diff --git a/public/images/pokemon/icons/5/531s.png b/public/images/pokemon/icons/5/531s.png index 187354721c2..297d2eb1f79 100644 Binary files a/public/images/pokemon/icons/5/531s.png and b/public/images/pokemon/icons/5/531s.png differ diff --git a/public/images/pokemon/icons/5/532.png b/public/images/pokemon/icons/5/532.png index a257bdd599c..7b1f983cdf8 100644 Binary files a/public/images/pokemon/icons/5/532.png and b/public/images/pokemon/icons/5/532.png differ diff --git a/public/images/pokemon/icons/5/532s.png b/public/images/pokemon/icons/5/532s.png index 15b72452b59..e38ed9a025d 100644 Binary files a/public/images/pokemon/icons/5/532s.png and b/public/images/pokemon/icons/5/532s.png differ diff --git a/public/images/pokemon/icons/5/533.png b/public/images/pokemon/icons/5/533.png index 51846119213..817bc8c1a54 100644 Binary files a/public/images/pokemon/icons/5/533.png and b/public/images/pokemon/icons/5/533.png differ diff --git a/public/images/pokemon/icons/5/533s.png b/public/images/pokemon/icons/5/533s.png index 256264f2cd3..ed657e64323 100644 Binary files a/public/images/pokemon/icons/5/533s.png and b/public/images/pokemon/icons/5/533s.png differ diff --git a/public/images/pokemon/icons/5/534.png b/public/images/pokemon/icons/5/534.png index cf76be625c3..22829452ef4 100644 Binary files a/public/images/pokemon/icons/5/534.png and b/public/images/pokemon/icons/5/534.png differ diff --git a/public/images/pokemon/icons/5/534s.png b/public/images/pokemon/icons/5/534s.png index 621c7c98f01..ef15f067acc 100644 Binary files a/public/images/pokemon/icons/5/534s.png and b/public/images/pokemon/icons/5/534s.png differ diff --git a/public/images/pokemon/icons/5/535.png b/public/images/pokemon/icons/5/535.png index e0dc4e71c42..130e8239874 100644 Binary files a/public/images/pokemon/icons/5/535.png and b/public/images/pokemon/icons/5/535.png differ diff --git a/public/images/pokemon/icons/5/535s.png b/public/images/pokemon/icons/5/535s.png index b15730e4b84..1332e5cb18c 100644 Binary files a/public/images/pokemon/icons/5/535s.png and b/public/images/pokemon/icons/5/535s.png differ diff --git a/public/images/pokemon/icons/5/536.png b/public/images/pokemon/icons/5/536.png index 15cc918bb42..21ada598188 100644 Binary files a/public/images/pokemon/icons/5/536.png and b/public/images/pokemon/icons/5/536.png differ diff --git a/public/images/pokemon/icons/5/536s.png b/public/images/pokemon/icons/5/536s.png index a6db1c8adac..cb68fcf47b8 100644 Binary files a/public/images/pokemon/icons/5/536s.png and b/public/images/pokemon/icons/5/536s.png differ diff --git a/public/images/pokemon/icons/5/537.png b/public/images/pokemon/icons/5/537.png index cca85ce61fa..535351d5161 100644 Binary files a/public/images/pokemon/icons/5/537.png and b/public/images/pokemon/icons/5/537.png differ diff --git a/public/images/pokemon/icons/5/537s.png b/public/images/pokemon/icons/5/537s.png index 3339865d9cd..e21b3c7ca8a 100644 Binary files a/public/images/pokemon/icons/5/537s.png and b/public/images/pokemon/icons/5/537s.png differ diff --git a/public/images/pokemon/icons/5/538.png b/public/images/pokemon/icons/5/538.png index a79ea47bfb6..79cbc012785 100644 Binary files a/public/images/pokemon/icons/5/538.png and b/public/images/pokemon/icons/5/538.png differ diff --git a/public/images/pokemon/icons/5/538s.png b/public/images/pokemon/icons/5/538s.png index d8806f9f3f1..ece75b43322 100644 Binary files a/public/images/pokemon/icons/5/538s.png and b/public/images/pokemon/icons/5/538s.png differ diff --git a/public/images/pokemon/icons/5/539.png b/public/images/pokemon/icons/5/539.png index cec0d4c7656..9de25723391 100644 Binary files a/public/images/pokemon/icons/5/539.png and b/public/images/pokemon/icons/5/539.png differ diff --git a/public/images/pokemon/icons/5/539s.png b/public/images/pokemon/icons/5/539s.png index 408e1fd5411..ee3540550f8 100644 Binary files a/public/images/pokemon/icons/5/539s.png and b/public/images/pokemon/icons/5/539s.png differ diff --git a/public/images/pokemon/icons/5/540.png b/public/images/pokemon/icons/5/540.png index 876e8395033..95a378e851f 100644 Binary files a/public/images/pokemon/icons/5/540.png and b/public/images/pokemon/icons/5/540.png differ diff --git a/public/images/pokemon/icons/5/540s.png b/public/images/pokemon/icons/5/540s.png index 52882075fcb..cd5f5a4c7c3 100644 Binary files a/public/images/pokemon/icons/5/540s.png and b/public/images/pokemon/icons/5/540s.png differ diff --git a/public/images/pokemon/icons/5/541.png b/public/images/pokemon/icons/5/541.png index c127e00d0c6..5ea1b58032b 100644 Binary files a/public/images/pokemon/icons/5/541.png and b/public/images/pokemon/icons/5/541.png differ diff --git a/public/images/pokemon/icons/5/541s.png b/public/images/pokemon/icons/5/541s.png index 81dd48f9666..9fef35993ad 100644 Binary files a/public/images/pokemon/icons/5/541s.png and b/public/images/pokemon/icons/5/541s.png differ diff --git a/public/images/pokemon/icons/5/542.png b/public/images/pokemon/icons/5/542.png index 160a3e11974..bee70cc1938 100644 Binary files a/public/images/pokemon/icons/5/542.png and b/public/images/pokemon/icons/5/542.png differ diff --git a/public/images/pokemon/icons/5/542s.png b/public/images/pokemon/icons/5/542s.png index 88c501cc4a0..a0b42ec3cc4 100644 Binary files a/public/images/pokemon/icons/5/542s.png and b/public/images/pokemon/icons/5/542s.png differ diff --git a/public/images/pokemon/icons/5/543.png b/public/images/pokemon/icons/5/543.png index ec95545644d..126bcdcc967 100644 Binary files a/public/images/pokemon/icons/5/543.png and b/public/images/pokemon/icons/5/543.png differ diff --git a/public/images/pokemon/icons/5/543s.png b/public/images/pokemon/icons/5/543s.png index 409d25de882..088b2438380 100644 Binary files a/public/images/pokemon/icons/5/543s.png and b/public/images/pokemon/icons/5/543s.png differ diff --git a/public/images/pokemon/icons/5/544.png b/public/images/pokemon/icons/5/544.png index 94d4c7d7bb1..e47095ffeec 100644 Binary files a/public/images/pokemon/icons/5/544.png and b/public/images/pokemon/icons/5/544.png differ diff --git a/public/images/pokemon/icons/5/544s.png b/public/images/pokemon/icons/5/544s.png index 4997d13b892..265c8da2425 100644 Binary files a/public/images/pokemon/icons/5/544s.png and b/public/images/pokemon/icons/5/544s.png differ diff --git a/public/images/pokemon/icons/5/545.png b/public/images/pokemon/icons/5/545.png index 705f7148ecd..2efc4a7bf21 100644 Binary files a/public/images/pokemon/icons/5/545.png and b/public/images/pokemon/icons/5/545.png differ diff --git a/public/images/pokemon/icons/5/545s.png b/public/images/pokemon/icons/5/545s.png index c2963035249..ff633313495 100644 Binary files a/public/images/pokemon/icons/5/545s.png and b/public/images/pokemon/icons/5/545s.png differ diff --git a/public/images/pokemon/icons/5/546.png b/public/images/pokemon/icons/5/546.png index d3d4ac196b2..4070ca97b37 100644 Binary files a/public/images/pokemon/icons/5/546.png and b/public/images/pokemon/icons/5/546.png differ diff --git a/public/images/pokemon/icons/5/546s.png b/public/images/pokemon/icons/5/546s.png index 7a8d1ba4be3..09c54692d85 100644 Binary files a/public/images/pokemon/icons/5/546s.png and b/public/images/pokemon/icons/5/546s.png differ diff --git a/public/images/pokemon/icons/5/547.png b/public/images/pokemon/icons/5/547.png index 9e2433c9d66..c24601b4f81 100644 Binary files a/public/images/pokemon/icons/5/547.png and b/public/images/pokemon/icons/5/547.png differ diff --git a/public/images/pokemon/icons/5/547s.png b/public/images/pokemon/icons/5/547s.png index b013a3d17bb..e43b895024d 100644 Binary files a/public/images/pokemon/icons/5/547s.png and b/public/images/pokemon/icons/5/547s.png differ diff --git a/public/images/pokemon/icons/5/548.png b/public/images/pokemon/icons/5/548.png index f527f04f68a..80c62f0f7b9 100644 Binary files a/public/images/pokemon/icons/5/548.png and b/public/images/pokemon/icons/5/548.png differ diff --git a/public/images/pokemon/icons/5/548s.png b/public/images/pokemon/icons/5/548s.png index 01de4199da8..7f7540d680d 100644 Binary files a/public/images/pokemon/icons/5/548s.png and b/public/images/pokemon/icons/5/548s.png differ diff --git a/public/images/pokemon/icons/5/549.png b/public/images/pokemon/icons/5/549.png index 66f1c73dd68..0ebfa1b2322 100644 Binary files a/public/images/pokemon/icons/5/549.png and b/public/images/pokemon/icons/5/549.png differ diff --git a/public/images/pokemon/icons/5/549s.png b/public/images/pokemon/icons/5/549s.png index 50ad2975126..0fc0950e851 100644 Binary files a/public/images/pokemon/icons/5/549s.png and b/public/images/pokemon/icons/5/549s.png differ diff --git a/public/images/pokemon/icons/5/550-blue-striped.png b/public/images/pokemon/icons/5/550-blue-striped.png index e0d08a20e90..9930d5ef831 100644 Binary files a/public/images/pokemon/icons/5/550-blue-striped.png and b/public/images/pokemon/icons/5/550-blue-striped.png differ diff --git a/public/images/pokemon/icons/5/550-red-striped.png b/public/images/pokemon/icons/5/550-red-striped.png index 3e9c3b249ce..9a118a207dd 100644 Binary files a/public/images/pokemon/icons/5/550-red-striped.png and b/public/images/pokemon/icons/5/550-red-striped.png differ diff --git a/public/images/pokemon/icons/5/550-white-striped.png b/public/images/pokemon/icons/5/550-white-striped.png index 7a4bb81fe1c..4e6b6433fbb 100644 Binary files a/public/images/pokemon/icons/5/550-white-striped.png and b/public/images/pokemon/icons/5/550-white-striped.png differ diff --git a/public/images/pokemon/icons/5/550s-blue-striped.png b/public/images/pokemon/icons/5/550s-blue-striped.png index d6675bba9dc..24c71d3818b 100644 Binary files a/public/images/pokemon/icons/5/550s-blue-striped.png and b/public/images/pokemon/icons/5/550s-blue-striped.png differ diff --git a/public/images/pokemon/icons/5/550s-red-striped.png b/public/images/pokemon/icons/5/550s-red-striped.png index 39112982f1b..bf9f4111d36 100644 Binary files a/public/images/pokemon/icons/5/550s-red-striped.png and b/public/images/pokemon/icons/5/550s-red-striped.png differ diff --git a/public/images/pokemon/icons/5/550s-white-striped.png b/public/images/pokemon/icons/5/550s-white-striped.png index 522c59fcbd7..6c8c755fd60 100644 Binary files a/public/images/pokemon/icons/5/550s-white-striped.png and b/public/images/pokemon/icons/5/550s-white-striped.png differ diff --git a/public/images/pokemon/icons/5/551.png b/public/images/pokemon/icons/5/551.png index 0aadd6bd82b..ba5227d0861 100644 Binary files a/public/images/pokemon/icons/5/551.png and b/public/images/pokemon/icons/5/551.png differ diff --git a/public/images/pokemon/icons/5/551s.png b/public/images/pokemon/icons/5/551s.png index 4976820460d..199410747bf 100644 Binary files a/public/images/pokemon/icons/5/551s.png and b/public/images/pokemon/icons/5/551s.png differ diff --git a/public/images/pokemon/icons/5/552.png b/public/images/pokemon/icons/5/552.png index b9430808492..423c30ccd7f 100644 Binary files a/public/images/pokemon/icons/5/552.png and b/public/images/pokemon/icons/5/552.png differ diff --git a/public/images/pokemon/icons/5/552s.png b/public/images/pokemon/icons/5/552s.png index 483e4023fb0..d0ad17328b0 100644 Binary files a/public/images/pokemon/icons/5/552s.png and b/public/images/pokemon/icons/5/552s.png differ diff --git a/public/images/pokemon/icons/5/553.png b/public/images/pokemon/icons/5/553.png index 128856b6c0a..a3fa40894bb 100644 Binary files a/public/images/pokemon/icons/5/553.png and b/public/images/pokemon/icons/5/553.png differ diff --git a/public/images/pokemon/icons/5/553s.png b/public/images/pokemon/icons/5/553s.png index 9ddb3bac1eb..b722e3261a4 100644 Binary files a/public/images/pokemon/icons/5/553s.png and b/public/images/pokemon/icons/5/553s.png differ diff --git a/public/images/pokemon/icons/5/554.png b/public/images/pokemon/icons/5/554.png index 63e054000db..95a97c8698b 100644 Binary files a/public/images/pokemon/icons/5/554.png and b/public/images/pokemon/icons/5/554.png differ diff --git a/public/images/pokemon/icons/5/554s.png b/public/images/pokemon/icons/5/554s.png index 7176d9e84a1..b8d868430cf 100644 Binary files a/public/images/pokemon/icons/5/554s.png and b/public/images/pokemon/icons/5/554s.png differ diff --git a/public/images/pokemon/icons/5/555-zen.png b/public/images/pokemon/icons/5/555-zen.png index 49ee442212a..15d9dd60080 100644 Binary files a/public/images/pokemon/icons/5/555-zen.png and b/public/images/pokemon/icons/5/555-zen.png differ diff --git a/public/images/pokemon/icons/5/555.png b/public/images/pokemon/icons/5/555.png index 5a9597165a7..505fc22272d 100644 Binary files a/public/images/pokemon/icons/5/555.png and b/public/images/pokemon/icons/5/555.png differ diff --git a/public/images/pokemon/icons/5/555s-zen.png b/public/images/pokemon/icons/5/555s-zen.png index 4670aa4c591..6e73f5b8369 100644 Binary files a/public/images/pokemon/icons/5/555s-zen.png and b/public/images/pokemon/icons/5/555s-zen.png differ diff --git a/public/images/pokemon/icons/5/555s.png b/public/images/pokemon/icons/5/555s.png index b3ec51e75c9..cecbb0f6af8 100644 Binary files a/public/images/pokemon/icons/5/555s.png and b/public/images/pokemon/icons/5/555s.png differ diff --git a/public/images/pokemon/icons/5/556.png b/public/images/pokemon/icons/5/556.png index f2837e78c58..441a7d3b68c 100644 Binary files a/public/images/pokemon/icons/5/556.png and b/public/images/pokemon/icons/5/556.png differ diff --git a/public/images/pokemon/icons/5/556s.png b/public/images/pokemon/icons/5/556s.png index 884b6510120..6b74cde4905 100644 Binary files a/public/images/pokemon/icons/5/556s.png and b/public/images/pokemon/icons/5/556s.png differ diff --git a/public/images/pokemon/icons/5/557.png b/public/images/pokemon/icons/5/557.png index 114a2aaac8d..ce27b80d349 100644 Binary files a/public/images/pokemon/icons/5/557.png and b/public/images/pokemon/icons/5/557.png differ diff --git a/public/images/pokemon/icons/5/557s.png b/public/images/pokemon/icons/5/557s.png index f250e2a915d..b5097e136d8 100644 Binary files a/public/images/pokemon/icons/5/557s.png and b/public/images/pokemon/icons/5/557s.png differ diff --git a/public/images/pokemon/icons/5/558.png b/public/images/pokemon/icons/5/558.png index 0b81b5a2afa..2d2761f7149 100644 Binary files a/public/images/pokemon/icons/5/558.png and b/public/images/pokemon/icons/5/558.png differ diff --git a/public/images/pokemon/icons/5/558s.png b/public/images/pokemon/icons/5/558s.png index fe03e4974c8..6c058c8308b 100644 Binary files a/public/images/pokemon/icons/5/558s.png and b/public/images/pokemon/icons/5/558s.png differ diff --git a/public/images/pokemon/icons/5/559.png b/public/images/pokemon/icons/5/559.png index f7e79c25e67..7ea2330ce0d 100644 Binary files a/public/images/pokemon/icons/5/559.png and b/public/images/pokemon/icons/5/559.png differ diff --git a/public/images/pokemon/icons/5/559s.png b/public/images/pokemon/icons/5/559s.png index a6c035a2b24..bac94dd2672 100644 Binary files a/public/images/pokemon/icons/5/559s.png and b/public/images/pokemon/icons/5/559s.png differ diff --git a/public/images/pokemon/icons/5/560.png b/public/images/pokemon/icons/5/560.png index 0d5608213d0..bedf6764e34 100644 Binary files a/public/images/pokemon/icons/5/560.png and b/public/images/pokemon/icons/5/560.png differ diff --git a/public/images/pokemon/icons/5/560s.png b/public/images/pokemon/icons/5/560s.png index e5815580df2..344cdbe95a5 100644 Binary files a/public/images/pokemon/icons/5/560s.png and b/public/images/pokemon/icons/5/560s.png differ diff --git a/public/images/pokemon/icons/5/561.png b/public/images/pokemon/icons/5/561.png index df530e0f701..8328ac3b9f1 100644 Binary files a/public/images/pokemon/icons/5/561.png and b/public/images/pokemon/icons/5/561.png differ diff --git a/public/images/pokemon/icons/5/561s.png b/public/images/pokemon/icons/5/561s.png index 5f9cf23d4b2..d945495065b 100644 Binary files a/public/images/pokemon/icons/5/561s.png and b/public/images/pokemon/icons/5/561s.png differ diff --git a/public/images/pokemon/icons/5/562.png b/public/images/pokemon/icons/5/562.png index 0ea0191d14e..758048abacd 100644 Binary files a/public/images/pokemon/icons/5/562.png and b/public/images/pokemon/icons/5/562.png differ diff --git a/public/images/pokemon/icons/5/562s.png b/public/images/pokemon/icons/5/562s.png index adf45324881..1580ca08612 100644 Binary files a/public/images/pokemon/icons/5/562s.png and b/public/images/pokemon/icons/5/562s.png differ diff --git a/public/images/pokemon/icons/5/563.png b/public/images/pokemon/icons/5/563.png index 0be153e6f1d..d14527c2968 100644 Binary files a/public/images/pokemon/icons/5/563.png and b/public/images/pokemon/icons/5/563.png differ diff --git a/public/images/pokemon/icons/5/563s.png b/public/images/pokemon/icons/5/563s.png index 1e785c3ed79..d5095078535 100644 Binary files a/public/images/pokemon/icons/5/563s.png and b/public/images/pokemon/icons/5/563s.png differ diff --git a/public/images/pokemon/icons/5/564.png b/public/images/pokemon/icons/5/564.png index daac19d2d3a..b9593d6b091 100644 Binary files a/public/images/pokemon/icons/5/564.png and b/public/images/pokemon/icons/5/564.png differ diff --git a/public/images/pokemon/icons/5/564s.png b/public/images/pokemon/icons/5/564s.png index 02b9c89b2bd..3454987b963 100644 Binary files a/public/images/pokemon/icons/5/564s.png and b/public/images/pokemon/icons/5/564s.png differ diff --git a/public/images/pokemon/icons/5/565.png b/public/images/pokemon/icons/5/565.png index 4104afbb771..d1604dfa8b6 100644 Binary files a/public/images/pokemon/icons/5/565.png and b/public/images/pokemon/icons/5/565.png differ diff --git a/public/images/pokemon/icons/5/565s.png b/public/images/pokemon/icons/5/565s.png index 2370d69408e..aef54bd7f8e 100644 Binary files a/public/images/pokemon/icons/5/565s.png and b/public/images/pokemon/icons/5/565s.png differ diff --git a/public/images/pokemon/icons/5/566.png b/public/images/pokemon/icons/5/566.png index 4332c0058f5..6966e0c4822 100644 Binary files a/public/images/pokemon/icons/5/566.png and b/public/images/pokemon/icons/5/566.png differ diff --git a/public/images/pokemon/icons/5/566s.png b/public/images/pokemon/icons/5/566s.png index 4a102512af7..91539da8bd6 100644 Binary files a/public/images/pokemon/icons/5/566s.png and b/public/images/pokemon/icons/5/566s.png differ diff --git a/public/images/pokemon/icons/5/567.png b/public/images/pokemon/icons/5/567.png index baf0edc3139..b12586e5596 100644 Binary files a/public/images/pokemon/icons/5/567.png and b/public/images/pokemon/icons/5/567.png differ diff --git a/public/images/pokemon/icons/5/567s.png b/public/images/pokemon/icons/5/567s.png index 8137962a6b4..0a1575eaec2 100644 Binary files a/public/images/pokemon/icons/5/567s.png and b/public/images/pokemon/icons/5/567s.png differ diff --git a/public/images/pokemon/icons/5/568.png b/public/images/pokemon/icons/5/568.png index ff3b458d7ef..0ac93588aab 100644 Binary files a/public/images/pokemon/icons/5/568.png and b/public/images/pokemon/icons/5/568.png differ diff --git a/public/images/pokemon/icons/5/568s.png b/public/images/pokemon/icons/5/568s.png index 72d423a0d37..65a529aac3a 100644 Binary files a/public/images/pokemon/icons/5/568s.png and b/public/images/pokemon/icons/5/568s.png differ diff --git a/public/images/pokemon/icons/5/569-gigantamax.png b/public/images/pokemon/icons/5/569-gigantamax.png index 3ca076f26a3..6ede08390bf 100644 Binary files a/public/images/pokemon/icons/5/569-gigantamax.png and b/public/images/pokemon/icons/5/569-gigantamax.png differ diff --git a/public/images/pokemon/icons/5/569.png b/public/images/pokemon/icons/5/569.png index d007a4976d7..cbc47c788f1 100644 Binary files a/public/images/pokemon/icons/5/569.png and b/public/images/pokemon/icons/5/569.png differ diff --git a/public/images/pokemon/icons/5/569s-gigantamax.png b/public/images/pokemon/icons/5/569s-gigantamax.png index c088793c547..b6398c3ccfc 100644 Binary files a/public/images/pokemon/icons/5/569s-gigantamax.png and b/public/images/pokemon/icons/5/569s-gigantamax.png differ diff --git a/public/images/pokemon/icons/5/569s.png b/public/images/pokemon/icons/5/569s.png index 7267e28e615..361d5467af3 100644 Binary files a/public/images/pokemon/icons/5/569s.png and b/public/images/pokemon/icons/5/569s.png differ diff --git a/public/images/pokemon/icons/5/570.png b/public/images/pokemon/icons/5/570.png index 6f8c104a42e..694359b7ed7 100644 Binary files a/public/images/pokemon/icons/5/570.png and b/public/images/pokemon/icons/5/570.png differ diff --git a/public/images/pokemon/icons/5/570s.png b/public/images/pokemon/icons/5/570s.png index eb48d4c87af..6ff033329bd 100644 Binary files a/public/images/pokemon/icons/5/570s.png and b/public/images/pokemon/icons/5/570s.png differ diff --git a/public/images/pokemon/icons/5/571.png b/public/images/pokemon/icons/5/571.png index 094f9d44126..d0ab54061c9 100644 Binary files a/public/images/pokemon/icons/5/571.png and b/public/images/pokemon/icons/5/571.png differ diff --git a/public/images/pokemon/icons/5/571s.png b/public/images/pokemon/icons/5/571s.png index ba25df5eb72..39b1a9c2d69 100644 Binary files a/public/images/pokemon/icons/5/571s.png and b/public/images/pokemon/icons/5/571s.png differ diff --git a/public/images/pokemon/icons/5/572.png b/public/images/pokemon/icons/5/572.png index 59a4795687f..e2d56d69492 100644 Binary files a/public/images/pokemon/icons/5/572.png and b/public/images/pokemon/icons/5/572.png differ diff --git a/public/images/pokemon/icons/5/572s.png b/public/images/pokemon/icons/5/572s.png index 71093a96293..7a0250cfcad 100644 Binary files a/public/images/pokemon/icons/5/572s.png and b/public/images/pokemon/icons/5/572s.png differ diff --git a/public/images/pokemon/icons/5/573.png b/public/images/pokemon/icons/5/573.png index ab0fa0c2bea..ea31cdb8b56 100644 Binary files a/public/images/pokemon/icons/5/573.png and b/public/images/pokemon/icons/5/573.png differ diff --git a/public/images/pokemon/icons/5/573s.png b/public/images/pokemon/icons/5/573s.png index 12e9af91712..6a909fae06f 100644 Binary files a/public/images/pokemon/icons/5/573s.png and b/public/images/pokemon/icons/5/573s.png differ diff --git a/public/images/pokemon/icons/5/574.png b/public/images/pokemon/icons/5/574.png index 007da26fb5e..3760e87ba28 100644 Binary files a/public/images/pokemon/icons/5/574.png and b/public/images/pokemon/icons/5/574.png differ diff --git a/public/images/pokemon/icons/5/574s.png b/public/images/pokemon/icons/5/574s.png index 164dec1b4f9..679537640d0 100644 Binary files a/public/images/pokemon/icons/5/574s.png and b/public/images/pokemon/icons/5/574s.png differ diff --git a/public/images/pokemon/icons/5/575.png b/public/images/pokemon/icons/5/575.png index 6ea024d00a2..b71e26b0274 100644 Binary files a/public/images/pokemon/icons/5/575.png and b/public/images/pokemon/icons/5/575.png differ diff --git a/public/images/pokemon/icons/5/575s.png b/public/images/pokemon/icons/5/575s.png index bf2a8358a82..5051de54497 100644 Binary files a/public/images/pokemon/icons/5/575s.png and b/public/images/pokemon/icons/5/575s.png differ diff --git a/public/images/pokemon/icons/5/576.png b/public/images/pokemon/icons/5/576.png index 19e060ebe24..5fc0ab199ae 100644 Binary files a/public/images/pokemon/icons/5/576.png and b/public/images/pokemon/icons/5/576.png differ diff --git a/public/images/pokemon/icons/5/576s.png b/public/images/pokemon/icons/5/576s.png index 5c742183355..dfeffd3c1be 100644 Binary files a/public/images/pokemon/icons/5/576s.png and b/public/images/pokemon/icons/5/576s.png differ diff --git a/public/images/pokemon/icons/5/577s.png b/public/images/pokemon/icons/5/577s.png index 91d77fb3ffe..2b302403cd9 100644 Binary files a/public/images/pokemon/icons/5/577s.png and b/public/images/pokemon/icons/5/577s.png differ diff --git a/public/images/pokemon/icons/5/578.png b/public/images/pokemon/icons/5/578.png index 4934307e398..5aa72cb027e 100644 Binary files a/public/images/pokemon/icons/5/578.png and b/public/images/pokemon/icons/5/578.png differ diff --git a/public/images/pokemon/icons/5/578s.png b/public/images/pokemon/icons/5/578s.png index 9564ed7a593..4eff01e425f 100644 Binary files a/public/images/pokemon/icons/5/578s.png and b/public/images/pokemon/icons/5/578s.png differ diff --git a/public/images/pokemon/icons/5/579.png b/public/images/pokemon/icons/5/579.png index eb163fcc1b3..2aaf19c1946 100644 Binary files a/public/images/pokemon/icons/5/579.png and b/public/images/pokemon/icons/5/579.png differ diff --git a/public/images/pokemon/icons/5/579s.png b/public/images/pokemon/icons/5/579s.png index b5610fdd5ef..3114f4eda93 100644 Binary files a/public/images/pokemon/icons/5/579s.png and b/public/images/pokemon/icons/5/579s.png differ diff --git a/public/images/pokemon/icons/5/580.png b/public/images/pokemon/icons/5/580.png index a9add6f1663..6daaec08c0f 100644 Binary files a/public/images/pokemon/icons/5/580.png and b/public/images/pokemon/icons/5/580.png differ diff --git a/public/images/pokemon/icons/5/580s.png b/public/images/pokemon/icons/5/580s.png index 4c871c609ae..2f64eba17ef 100644 Binary files a/public/images/pokemon/icons/5/580s.png and b/public/images/pokemon/icons/5/580s.png differ diff --git a/public/images/pokemon/icons/5/581.png b/public/images/pokemon/icons/5/581.png index 9500c37b268..e238d969f51 100644 Binary files a/public/images/pokemon/icons/5/581.png and b/public/images/pokemon/icons/5/581.png differ diff --git a/public/images/pokemon/icons/5/581s.png b/public/images/pokemon/icons/5/581s.png index ad9f0206c71..108d0b22740 100644 Binary files a/public/images/pokemon/icons/5/581s.png and b/public/images/pokemon/icons/5/581s.png differ diff --git a/public/images/pokemon/icons/5/582.png b/public/images/pokemon/icons/5/582.png index c1b3a972c49..10f7926364a 100644 Binary files a/public/images/pokemon/icons/5/582.png and b/public/images/pokemon/icons/5/582.png differ diff --git a/public/images/pokemon/icons/5/582s.png b/public/images/pokemon/icons/5/582s.png index faca715d2d9..9b4d3fc6230 100644 Binary files a/public/images/pokemon/icons/5/582s.png and b/public/images/pokemon/icons/5/582s.png differ diff --git a/public/images/pokemon/icons/5/583.png b/public/images/pokemon/icons/5/583.png index e61faad4799..f44318735f9 100644 Binary files a/public/images/pokemon/icons/5/583.png and b/public/images/pokemon/icons/5/583.png differ diff --git a/public/images/pokemon/icons/5/583s.png b/public/images/pokemon/icons/5/583s.png index 45d7dece6ff..b60886e31a7 100644 Binary files a/public/images/pokemon/icons/5/583s.png and b/public/images/pokemon/icons/5/583s.png differ diff --git a/public/images/pokemon/icons/5/584.png b/public/images/pokemon/icons/5/584.png index 28708ca60e5..b44bae070df 100644 Binary files a/public/images/pokemon/icons/5/584.png and b/public/images/pokemon/icons/5/584.png differ diff --git a/public/images/pokemon/icons/5/584s.png b/public/images/pokemon/icons/5/584s.png index 1394662459f..8d399ab177a 100644 Binary files a/public/images/pokemon/icons/5/584s.png and b/public/images/pokemon/icons/5/584s.png differ diff --git a/public/images/pokemon/icons/5/585-autumn.png b/public/images/pokemon/icons/5/585-autumn.png index a8a3501086f..338f5e5d5be 100644 Binary files a/public/images/pokemon/icons/5/585-autumn.png and b/public/images/pokemon/icons/5/585-autumn.png differ diff --git a/public/images/pokemon/icons/5/585-spring.png b/public/images/pokemon/icons/5/585-spring.png index 11d23e2bda8..35e781c2c91 100644 Binary files a/public/images/pokemon/icons/5/585-spring.png and b/public/images/pokemon/icons/5/585-spring.png differ diff --git a/public/images/pokemon/icons/5/585-summer.png b/public/images/pokemon/icons/5/585-summer.png index 3b142a1ae2c..6003dff4b04 100644 Binary files a/public/images/pokemon/icons/5/585-summer.png and b/public/images/pokemon/icons/5/585-summer.png differ diff --git a/public/images/pokemon/icons/5/585-winter.png b/public/images/pokemon/icons/5/585-winter.png index 5bd8571b316..55450a8b75f 100644 Binary files a/public/images/pokemon/icons/5/585-winter.png and b/public/images/pokemon/icons/5/585-winter.png differ diff --git a/public/images/pokemon/icons/5/585s-autumn.png b/public/images/pokemon/icons/5/585s-autumn.png index 8b199c0c0f6..8a4d19e30d4 100644 Binary files a/public/images/pokemon/icons/5/585s-autumn.png and b/public/images/pokemon/icons/5/585s-autumn.png differ diff --git a/public/images/pokemon/icons/5/585s-spring.png b/public/images/pokemon/icons/5/585s-spring.png index 770076de234..ff1a2776c9b 100644 Binary files a/public/images/pokemon/icons/5/585s-spring.png and b/public/images/pokemon/icons/5/585s-spring.png differ diff --git a/public/images/pokemon/icons/5/585s-summer.png b/public/images/pokemon/icons/5/585s-summer.png index 4d22a49526a..081db8f88b8 100644 Binary files a/public/images/pokemon/icons/5/585s-summer.png and b/public/images/pokemon/icons/5/585s-summer.png differ diff --git a/public/images/pokemon/icons/5/585s-winter.png b/public/images/pokemon/icons/5/585s-winter.png index 7ab657214ef..fb541f2d084 100644 Binary files a/public/images/pokemon/icons/5/585s-winter.png and b/public/images/pokemon/icons/5/585s-winter.png differ diff --git a/public/images/pokemon/icons/5/586-autumn.png b/public/images/pokemon/icons/5/586-autumn.png index 8fbdf5de04b..259827fd4c4 100644 Binary files a/public/images/pokemon/icons/5/586-autumn.png and b/public/images/pokemon/icons/5/586-autumn.png differ diff --git a/public/images/pokemon/icons/5/586-spring.png b/public/images/pokemon/icons/5/586-spring.png index 3a06fcf4548..c485c942368 100644 Binary files a/public/images/pokemon/icons/5/586-spring.png and b/public/images/pokemon/icons/5/586-spring.png differ diff --git a/public/images/pokemon/icons/5/586-summer.png b/public/images/pokemon/icons/5/586-summer.png index 988856cb004..59a0469f25b 100644 Binary files a/public/images/pokemon/icons/5/586-summer.png and b/public/images/pokemon/icons/5/586-summer.png differ diff --git a/public/images/pokemon/icons/5/586-winter.png b/public/images/pokemon/icons/5/586-winter.png index a436e298b7e..f7b5eb9ec0f 100644 Binary files a/public/images/pokemon/icons/5/586-winter.png and b/public/images/pokemon/icons/5/586-winter.png differ diff --git a/public/images/pokemon/icons/5/586s-autumn.png b/public/images/pokemon/icons/5/586s-autumn.png index 3ab48e57709..8034f2092ea 100644 Binary files a/public/images/pokemon/icons/5/586s-autumn.png and b/public/images/pokemon/icons/5/586s-autumn.png differ diff --git a/public/images/pokemon/icons/5/586s-spring.png b/public/images/pokemon/icons/5/586s-spring.png index dabf2487c22..a2e70bed263 100644 Binary files a/public/images/pokemon/icons/5/586s-spring.png and b/public/images/pokemon/icons/5/586s-spring.png differ diff --git a/public/images/pokemon/icons/5/586s-summer.png b/public/images/pokemon/icons/5/586s-summer.png index 154e1392b8b..982b28f0f0e 100644 Binary files a/public/images/pokemon/icons/5/586s-summer.png and b/public/images/pokemon/icons/5/586s-summer.png differ diff --git a/public/images/pokemon/icons/5/586s-winter.png b/public/images/pokemon/icons/5/586s-winter.png index 2a628568db0..36a993c0719 100644 Binary files a/public/images/pokemon/icons/5/586s-winter.png and b/public/images/pokemon/icons/5/586s-winter.png differ diff --git a/public/images/pokemon/icons/5/587.png b/public/images/pokemon/icons/5/587.png index bb44ee4b00b..bcebc53d9c1 100644 Binary files a/public/images/pokemon/icons/5/587.png and b/public/images/pokemon/icons/5/587.png differ diff --git a/public/images/pokemon/icons/5/587s.png b/public/images/pokemon/icons/5/587s.png index 76fef39186c..32e983e7e8d 100644 Binary files a/public/images/pokemon/icons/5/587s.png and b/public/images/pokemon/icons/5/587s.png differ diff --git a/public/images/pokemon/icons/5/588.png b/public/images/pokemon/icons/5/588.png index 5047da0832e..508a65175c1 100644 Binary files a/public/images/pokemon/icons/5/588.png and b/public/images/pokemon/icons/5/588.png differ diff --git a/public/images/pokemon/icons/5/588s.png b/public/images/pokemon/icons/5/588s.png index 97dab5b9598..1e25e05aefc 100644 Binary files a/public/images/pokemon/icons/5/588s.png and b/public/images/pokemon/icons/5/588s.png differ diff --git a/public/images/pokemon/icons/5/589.png b/public/images/pokemon/icons/5/589.png index 474085620bb..da94f718412 100644 Binary files a/public/images/pokemon/icons/5/589.png and b/public/images/pokemon/icons/5/589.png differ diff --git a/public/images/pokemon/icons/5/589s.png b/public/images/pokemon/icons/5/589s.png index f763acd4db0..70d2d3b66bd 100644 Binary files a/public/images/pokemon/icons/5/589s.png and b/public/images/pokemon/icons/5/589s.png differ diff --git a/public/images/pokemon/icons/5/590.png b/public/images/pokemon/icons/5/590.png index 962c38ba365..177cc5daee4 100644 Binary files a/public/images/pokemon/icons/5/590.png and b/public/images/pokemon/icons/5/590.png differ diff --git a/public/images/pokemon/icons/5/590s.png b/public/images/pokemon/icons/5/590s.png index 414e4e63778..1c02498a538 100644 Binary files a/public/images/pokemon/icons/5/590s.png and b/public/images/pokemon/icons/5/590s.png differ diff --git a/public/images/pokemon/icons/5/591.png b/public/images/pokemon/icons/5/591.png index 09ade8d50f0..7742afc2b5f 100644 Binary files a/public/images/pokemon/icons/5/591.png and b/public/images/pokemon/icons/5/591.png differ diff --git a/public/images/pokemon/icons/5/591s.png b/public/images/pokemon/icons/5/591s.png index c78bf9b53d8..c818ecf6318 100644 Binary files a/public/images/pokemon/icons/5/591s.png and b/public/images/pokemon/icons/5/591s.png differ diff --git a/public/images/pokemon/icons/5/592-f.png b/public/images/pokemon/icons/5/592-f.png index 71ea08905ae..32418c2a089 100644 Binary files a/public/images/pokemon/icons/5/592-f.png and b/public/images/pokemon/icons/5/592-f.png differ diff --git a/public/images/pokemon/icons/5/592.png b/public/images/pokemon/icons/5/592.png index 10c69a90960..08e8ec699f7 100644 Binary files a/public/images/pokemon/icons/5/592.png and b/public/images/pokemon/icons/5/592.png differ diff --git a/public/images/pokemon/icons/5/592s-f.png b/public/images/pokemon/icons/5/592s-f.png index 3df6258da5b..b6c38acf4bd 100644 Binary files a/public/images/pokemon/icons/5/592s-f.png and b/public/images/pokemon/icons/5/592s-f.png differ diff --git a/public/images/pokemon/icons/5/592s.png b/public/images/pokemon/icons/5/592s.png index 8729102c815..3a295603c92 100644 Binary files a/public/images/pokemon/icons/5/592s.png and b/public/images/pokemon/icons/5/592s.png differ diff --git a/public/images/pokemon/icons/5/593-f.png b/public/images/pokemon/icons/5/593-f.png index a5983074216..42907a2543d 100644 Binary files a/public/images/pokemon/icons/5/593-f.png and b/public/images/pokemon/icons/5/593-f.png differ diff --git a/public/images/pokemon/icons/5/593.png b/public/images/pokemon/icons/5/593.png index 5cbdbd80d50..bd15b78080b 100644 Binary files a/public/images/pokemon/icons/5/593.png and b/public/images/pokemon/icons/5/593.png differ diff --git a/public/images/pokemon/icons/5/593s-f.png b/public/images/pokemon/icons/5/593s-f.png index c9548a02bc6..5f6bf159f5f 100644 Binary files a/public/images/pokemon/icons/5/593s-f.png and b/public/images/pokemon/icons/5/593s-f.png differ diff --git a/public/images/pokemon/icons/5/593s.png b/public/images/pokemon/icons/5/593s.png index cd37fdd326d..360338795c8 100644 Binary files a/public/images/pokemon/icons/5/593s.png and b/public/images/pokemon/icons/5/593s.png differ diff --git a/public/images/pokemon/icons/5/594.png b/public/images/pokemon/icons/5/594.png index 6a43194e1c9..1ca594ff1ab 100644 Binary files a/public/images/pokemon/icons/5/594.png and b/public/images/pokemon/icons/5/594.png differ diff --git a/public/images/pokemon/icons/5/594s.png b/public/images/pokemon/icons/5/594s.png index 6c8a0bcb26c..9fc4f839a1e 100644 Binary files a/public/images/pokemon/icons/5/594s.png and b/public/images/pokemon/icons/5/594s.png differ diff --git a/public/images/pokemon/icons/5/595.png b/public/images/pokemon/icons/5/595.png index 8fe96213252..3a0a2381306 100644 Binary files a/public/images/pokemon/icons/5/595.png and b/public/images/pokemon/icons/5/595.png differ diff --git a/public/images/pokemon/icons/5/595s.png b/public/images/pokemon/icons/5/595s.png index 26b379a8d99..715e2b69741 100644 Binary files a/public/images/pokemon/icons/5/595s.png and b/public/images/pokemon/icons/5/595s.png differ diff --git a/public/images/pokemon/icons/5/596.png b/public/images/pokemon/icons/5/596.png index 73eee864dc7..4b27a090061 100644 Binary files a/public/images/pokemon/icons/5/596.png and b/public/images/pokemon/icons/5/596.png differ diff --git a/public/images/pokemon/icons/5/596s.png b/public/images/pokemon/icons/5/596s.png index 491589f3bba..076422d14d9 100644 Binary files a/public/images/pokemon/icons/5/596s.png and b/public/images/pokemon/icons/5/596s.png differ diff --git a/public/images/pokemon/icons/5/597.png b/public/images/pokemon/icons/5/597.png index b984b185f9a..9559e4d9da2 100644 Binary files a/public/images/pokemon/icons/5/597.png and b/public/images/pokemon/icons/5/597.png differ diff --git a/public/images/pokemon/icons/5/597s.png b/public/images/pokemon/icons/5/597s.png index dd067fcaa92..90d019b2542 100644 Binary files a/public/images/pokemon/icons/5/597s.png and b/public/images/pokemon/icons/5/597s.png differ diff --git a/public/images/pokemon/icons/5/598.png b/public/images/pokemon/icons/5/598.png index 6953e512927..f57149f0618 100644 Binary files a/public/images/pokemon/icons/5/598.png and b/public/images/pokemon/icons/5/598.png differ diff --git a/public/images/pokemon/icons/5/598s.png b/public/images/pokemon/icons/5/598s.png index 46fe0cc3aab..79102cf468e 100644 Binary files a/public/images/pokemon/icons/5/598s.png and b/public/images/pokemon/icons/5/598s.png differ diff --git a/public/images/pokemon/icons/5/599.png b/public/images/pokemon/icons/5/599.png index 30a0ca21f95..6431fdbb075 100644 Binary files a/public/images/pokemon/icons/5/599.png and b/public/images/pokemon/icons/5/599.png differ diff --git a/public/images/pokemon/icons/5/599s.png b/public/images/pokemon/icons/5/599s.png index 95ee1938b02..bf15bcec5a8 100644 Binary files a/public/images/pokemon/icons/5/599s.png and b/public/images/pokemon/icons/5/599s.png differ diff --git a/public/images/pokemon/icons/5/600.png b/public/images/pokemon/icons/5/600.png index 7f1d2a00335..1d7ee0200d0 100644 Binary files a/public/images/pokemon/icons/5/600.png and b/public/images/pokemon/icons/5/600.png differ diff --git a/public/images/pokemon/icons/5/600s.png b/public/images/pokemon/icons/5/600s.png index 3b1acbfd716..c075aec6739 100644 Binary files a/public/images/pokemon/icons/5/600s.png and b/public/images/pokemon/icons/5/600s.png differ diff --git a/public/images/pokemon/icons/5/601.png b/public/images/pokemon/icons/5/601.png index f41e5131bee..a4af383548d 100644 Binary files a/public/images/pokemon/icons/5/601.png and b/public/images/pokemon/icons/5/601.png differ diff --git a/public/images/pokemon/icons/5/601s.png b/public/images/pokemon/icons/5/601s.png index 1b2b58ceb63..c380b7f1c24 100644 Binary files a/public/images/pokemon/icons/5/601s.png and b/public/images/pokemon/icons/5/601s.png differ diff --git a/public/images/pokemon/icons/5/602.png b/public/images/pokemon/icons/5/602.png index aa7c49a249f..9e1e97a29b7 100644 Binary files a/public/images/pokemon/icons/5/602.png and b/public/images/pokemon/icons/5/602.png differ diff --git a/public/images/pokemon/icons/5/602s.png b/public/images/pokemon/icons/5/602s.png index 52311c45929..3cdce5d05e6 100644 Binary files a/public/images/pokemon/icons/5/602s.png and b/public/images/pokemon/icons/5/602s.png differ diff --git a/public/images/pokemon/icons/5/603.png b/public/images/pokemon/icons/5/603.png index b2b1fa34c5e..96e95aa1e85 100644 Binary files a/public/images/pokemon/icons/5/603.png and b/public/images/pokemon/icons/5/603.png differ diff --git a/public/images/pokemon/icons/5/603s.png b/public/images/pokemon/icons/5/603s.png index 68d7a7b9bdd..588361297c4 100644 Binary files a/public/images/pokemon/icons/5/603s.png and b/public/images/pokemon/icons/5/603s.png differ diff --git a/public/images/pokemon/icons/5/604.png b/public/images/pokemon/icons/5/604.png index 81a79f42e13..146a61b6d13 100644 Binary files a/public/images/pokemon/icons/5/604.png and b/public/images/pokemon/icons/5/604.png differ diff --git a/public/images/pokemon/icons/5/604s.png b/public/images/pokemon/icons/5/604s.png index f896de2af13..a4655e0d976 100644 Binary files a/public/images/pokemon/icons/5/604s.png and b/public/images/pokemon/icons/5/604s.png differ diff --git a/public/images/pokemon/icons/5/605.png b/public/images/pokemon/icons/5/605.png index 1e537b82be3..c4a22137293 100644 Binary files a/public/images/pokemon/icons/5/605.png and b/public/images/pokemon/icons/5/605.png differ diff --git a/public/images/pokemon/icons/5/605s.png b/public/images/pokemon/icons/5/605s.png index 0ea6140c813..d502a0aaee5 100644 Binary files a/public/images/pokemon/icons/5/605s.png and b/public/images/pokemon/icons/5/605s.png differ diff --git a/public/images/pokemon/icons/5/606.png b/public/images/pokemon/icons/5/606.png index 36def56cef3..029a3594304 100644 Binary files a/public/images/pokemon/icons/5/606.png and b/public/images/pokemon/icons/5/606.png differ diff --git a/public/images/pokemon/icons/5/606s.png b/public/images/pokemon/icons/5/606s.png index ddf7fa85c5a..138ea45076f 100644 Binary files a/public/images/pokemon/icons/5/606s.png and b/public/images/pokemon/icons/5/606s.png differ diff --git a/public/images/pokemon/icons/5/607.png b/public/images/pokemon/icons/5/607.png index 08640f19cbb..ea643326f98 100644 Binary files a/public/images/pokemon/icons/5/607.png and b/public/images/pokemon/icons/5/607.png differ diff --git a/public/images/pokemon/icons/5/607s.png b/public/images/pokemon/icons/5/607s.png index af2ddeed61d..05596276707 100644 Binary files a/public/images/pokemon/icons/5/607s.png and b/public/images/pokemon/icons/5/607s.png differ diff --git a/public/images/pokemon/icons/5/608.png b/public/images/pokemon/icons/5/608.png index b73a3bbd102..1aaef1b822c 100644 Binary files a/public/images/pokemon/icons/5/608.png and b/public/images/pokemon/icons/5/608.png differ diff --git a/public/images/pokemon/icons/5/608s.png b/public/images/pokemon/icons/5/608s.png index 68ca99efa0d..513278427d1 100644 Binary files a/public/images/pokemon/icons/5/608s.png and b/public/images/pokemon/icons/5/608s.png differ diff --git a/public/images/pokemon/icons/5/609.png b/public/images/pokemon/icons/5/609.png index 5491a0ebb5e..abc996c739c 100644 Binary files a/public/images/pokemon/icons/5/609.png and b/public/images/pokemon/icons/5/609.png differ diff --git a/public/images/pokemon/icons/5/609s.png b/public/images/pokemon/icons/5/609s.png index 2f71c7cddbf..91ff87db64d 100644 Binary files a/public/images/pokemon/icons/5/609s.png and b/public/images/pokemon/icons/5/609s.png differ diff --git a/public/images/pokemon/icons/5/610.png b/public/images/pokemon/icons/5/610.png index a924c4df732..04e22d12f6a 100644 Binary files a/public/images/pokemon/icons/5/610.png and b/public/images/pokemon/icons/5/610.png differ diff --git a/public/images/pokemon/icons/5/610s.png b/public/images/pokemon/icons/5/610s.png index 4d61c140c6e..ee56e7f17cc 100644 Binary files a/public/images/pokemon/icons/5/610s.png and b/public/images/pokemon/icons/5/610s.png differ diff --git a/public/images/pokemon/icons/5/611.png b/public/images/pokemon/icons/5/611.png index 9fb27bcda3b..6b25f21d516 100644 Binary files a/public/images/pokemon/icons/5/611.png and b/public/images/pokemon/icons/5/611.png differ diff --git a/public/images/pokemon/icons/5/611s.png b/public/images/pokemon/icons/5/611s.png index a4395eb51f5..b5cc3c4b5db 100644 Binary files a/public/images/pokemon/icons/5/611s.png and b/public/images/pokemon/icons/5/611s.png differ diff --git a/public/images/pokemon/icons/5/612.png b/public/images/pokemon/icons/5/612.png index 6c9eb885f8a..0d31e50b6d6 100644 Binary files a/public/images/pokemon/icons/5/612.png and b/public/images/pokemon/icons/5/612.png differ diff --git a/public/images/pokemon/icons/5/612s.png b/public/images/pokemon/icons/5/612s.png index ec1ea3c6661..fceb329e3d7 100644 Binary files a/public/images/pokemon/icons/5/612s.png and b/public/images/pokemon/icons/5/612s.png differ diff --git a/public/images/pokemon/icons/5/613.png b/public/images/pokemon/icons/5/613.png index a286a8220ef..baa143f6dc7 100644 Binary files a/public/images/pokemon/icons/5/613.png and b/public/images/pokemon/icons/5/613.png differ diff --git a/public/images/pokemon/icons/5/613s.png b/public/images/pokemon/icons/5/613s.png index 77541340cb9..ff374335784 100644 Binary files a/public/images/pokemon/icons/5/613s.png and b/public/images/pokemon/icons/5/613s.png differ diff --git a/public/images/pokemon/icons/5/614.png b/public/images/pokemon/icons/5/614.png index d0e474300b6..f80ef170a11 100644 Binary files a/public/images/pokemon/icons/5/614.png and b/public/images/pokemon/icons/5/614.png differ diff --git a/public/images/pokemon/icons/5/614s.png b/public/images/pokemon/icons/5/614s.png index e34ff548db8..4092a0fac2e 100644 Binary files a/public/images/pokemon/icons/5/614s.png and b/public/images/pokemon/icons/5/614s.png differ diff --git a/public/images/pokemon/icons/5/615.png b/public/images/pokemon/icons/5/615.png index f6ed6bfd03f..b4f9350e268 100644 Binary files a/public/images/pokemon/icons/5/615.png and b/public/images/pokemon/icons/5/615.png differ diff --git a/public/images/pokemon/icons/5/615s.png b/public/images/pokemon/icons/5/615s.png index 702ca9575cd..0a2cc45c052 100644 Binary files a/public/images/pokemon/icons/5/615s.png and b/public/images/pokemon/icons/5/615s.png differ diff --git a/public/images/pokemon/icons/5/616.png b/public/images/pokemon/icons/5/616.png index 49d7a0e9e0d..447517f6df7 100644 Binary files a/public/images/pokemon/icons/5/616.png and b/public/images/pokemon/icons/5/616.png differ diff --git a/public/images/pokemon/icons/5/616s.png b/public/images/pokemon/icons/5/616s.png index 350d6e27ca1..54807cb4a45 100644 Binary files a/public/images/pokemon/icons/5/616s.png and b/public/images/pokemon/icons/5/616s.png differ diff --git a/public/images/pokemon/icons/5/617.png b/public/images/pokemon/icons/5/617.png index 24efc31b51a..d5164c842a5 100644 Binary files a/public/images/pokemon/icons/5/617.png and b/public/images/pokemon/icons/5/617.png differ diff --git a/public/images/pokemon/icons/5/617s.png b/public/images/pokemon/icons/5/617s.png index e44a8b797e2..8003b912d09 100644 Binary files a/public/images/pokemon/icons/5/617s.png and b/public/images/pokemon/icons/5/617s.png differ diff --git a/public/images/pokemon/icons/5/618.png b/public/images/pokemon/icons/5/618.png index 661d73ea60b..30c686673e8 100644 Binary files a/public/images/pokemon/icons/5/618.png and b/public/images/pokemon/icons/5/618.png differ diff --git a/public/images/pokemon/icons/5/618s.png b/public/images/pokemon/icons/5/618s.png index 8f12d23482b..3368b08e7ae 100644 Binary files a/public/images/pokemon/icons/5/618s.png and b/public/images/pokemon/icons/5/618s.png differ diff --git a/public/images/pokemon/icons/5/619.png b/public/images/pokemon/icons/5/619.png index 96fbcb848c0..ec9d1ba4160 100644 Binary files a/public/images/pokemon/icons/5/619.png and b/public/images/pokemon/icons/5/619.png differ diff --git a/public/images/pokemon/icons/5/619s.png b/public/images/pokemon/icons/5/619s.png index ca3c6fe95d8..251db7dab2b 100644 Binary files a/public/images/pokemon/icons/5/619s.png and b/public/images/pokemon/icons/5/619s.png differ diff --git a/public/images/pokemon/icons/5/620.png b/public/images/pokemon/icons/5/620.png index 13b2873c3c4..d51cb0a7729 100644 Binary files a/public/images/pokemon/icons/5/620.png and b/public/images/pokemon/icons/5/620.png differ diff --git a/public/images/pokemon/icons/5/620s.png b/public/images/pokemon/icons/5/620s.png index b96296050f7..f79d3c537f5 100644 Binary files a/public/images/pokemon/icons/5/620s.png and b/public/images/pokemon/icons/5/620s.png differ diff --git a/public/images/pokemon/icons/5/621.png b/public/images/pokemon/icons/5/621.png index c83d4fb256b..f0b397c9c85 100644 Binary files a/public/images/pokemon/icons/5/621.png and b/public/images/pokemon/icons/5/621.png differ diff --git a/public/images/pokemon/icons/5/621s.png b/public/images/pokemon/icons/5/621s.png index fa7b63b3639..a96645bc99f 100644 Binary files a/public/images/pokemon/icons/5/621s.png and b/public/images/pokemon/icons/5/621s.png differ diff --git a/public/images/pokemon/icons/5/622.png b/public/images/pokemon/icons/5/622.png index b964d1ef498..9f739e845b9 100644 Binary files a/public/images/pokemon/icons/5/622.png and b/public/images/pokemon/icons/5/622.png differ diff --git a/public/images/pokemon/icons/5/622s.png b/public/images/pokemon/icons/5/622s.png index ed82ee7c47c..d635dd137a4 100644 Binary files a/public/images/pokemon/icons/5/622s.png and b/public/images/pokemon/icons/5/622s.png differ diff --git a/public/images/pokemon/icons/5/623.png b/public/images/pokemon/icons/5/623.png index e2800612e39..b3d241f5452 100644 Binary files a/public/images/pokemon/icons/5/623.png and b/public/images/pokemon/icons/5/623.png differ diff --git a/public/images/pokemon/icons/5/623s.png b/public/images/pokemon/icons/5/623s.png index bcc16b3bb5a..e6161df1c94 100644 Binary files a/public/images/pokemon/icons/5/623s.png and b/public/images/pokemon/icons/5/623s.png differ diff --git a/public/images/pokemon/icons/5/624.png b/public/images/pokemon/icons/5/624.png index 17432eca78e..23aedacd70c 100644 Binary files a/public/images/pokemon/icons/5/624.png and b/public/images/pokemon/icons/5/624.png differ diff --git a/public/images/pokemon/icons/5/624s.png b/public/images/pokemon/icons/5/624s.png index 2abebcf833a..b0ed09e21ab 100644 Binary files a/public/images/pokemon/icons/5/624s.png and b/public/images/pokemon/icons/5/624s.png differ diff --git a/public/images/pokemon/icons/5/625.png b/public/images/pokemon/icons/5/625.png index 4b67ddac411..e31e4325a07 100644 Binary files a/public/images/pokemon/icons/5/625.png and b/public/images/pokemon/icons/5/625.png differ diff --git a/public/images/pokemon/icons/5/625s.png b/public/images/pokemon/icons/5/625s.png index 3c883c637c8..72d722a84ca 100644 Binary files a/public/images/pokemon/icons/5/625s.png and b/public/images/pokemon/icons/5/625s.png differ diff --git a/public/images/pokemon/icons/5/626.png b/public/images/pokemon/icons/5/626.png index 00955d55471..cec11b6f5a1 100644 Binary files a/public/images/pokemon/icons/5/626.png and b/public/images/pokemon/icons/5/626.png differ diff --git a/public/images/pokemon/icons/5/626s.png b/public/images/pokemon/icons/5/626s.png index 42f5b714a68..8799ea29203 100644 Binary files a/public/images/pokemon/icons/5/626s.png and b/public/images/pokemon/icons/5/626s.png differ diff --git a/public/images/pokemon/icons/5/627.png b/public/images/pokemon/icons/5/627.png index 5491044581a..89ad441f74e 100644 Binary files a/public/images/pokemon/icons/5/627.png and b/public/images/pokemon/icons/5/627.png differ diff --git a/public/images/pokemon/icons/5/627s.png b/public/images/pokemon/icons/5/627s.png index e1006cf8058..909466b78a2 100644 Binary files a/public/images/pokemon/icons/5/627s.png and b/public/images/pokemon/icons/5/627s.png differ diff --git a/public/images/pokemon/icons/5/628.png b/public/images/pokemon/icons/5/628.png index 875a3dab560..bf529932e29 100644 Binary files a/public/images/pokemon/icons/5/628.png and b/public/images/pokemon/icons/5/628.png differ diff --git a/public/images/pokemon/icons/5/628s.png b/public/images/pokemon/icons/5/628s.png index c7110c48845..97a160c6c36 100644 Binary files a/public/images/pokemon/icons/5/628s.png and b/public/images/pokemon/icons/5/628s.png differ diff --git a/public/images/pokemon/icons/5/629.png b/public/images/pokemon/icons/5/629.png index 1e57a9a3e71..44bd8fd2a34 100644 Binary files a/public/images/pokemon/icons/5/629.png and b/public/images/pokemon/icons/5/629.png differ diff --git a/public/images/pokemon/icons/5/629s.png b/public/images/pokemon/icons/5/629s.png index fff3fc412e4..c8bd1596e6a 100644 Binary files a/public/images/pokemon/icons/5/629s.png and b/public/images/pokemon/icons/5/629s.png differ diff --git a/public/images/pokemon/icons/5/630.png b/public/images/pokemon/icons/5/630.png index 612194561a9..2a61bf22ca3 100644 Binary files a/public/images/pokemon/icons/5/630.png and b/public/images/pokemon/icons/5/630.png differ diff --git a/public/images/pokemon/icons/5/630s.png b/public/images/pokemon/icons/5/630s.png index 89a6c1f978a..c3a465b7fa4 100644 Binary files a/public/images/pokemon/icons/5/630s.png and b/public/images/pokemon/icons/5/630s.png differ diff --git a/public/images/pokemon/icons/5/631.png b/public/images/pokemon/icons/5/631.png index d80b828e5f1..0510f5a9820 100644 Binary files a/public/images/pokemon/icons/5/631.png and b/public/images/pokemon/icons/5/631.png differ diff --git a/public/images/pokemon/icons/5/631s.png b/public/images/pokemon/icons/5/631s.png index dd924fdfe16..cc906826b62 100644 Binary files a/public/images/pokemon/icons/5/631s.png and b/public/images/pokemon/icons/5/631s.png differ diff --git a/public/images/pokemon/icons/5/632.png b/public/images/pokemon/icons/5/632.png index b607fc8d113..ad7432ef141 100644 Binary files a/public/images/pokemon/icons/5/632.png and b/public/images/pokemon/icons/5/632.png differ diff --git a/public/images/pokemon/icons/5/632s.png b/public/images/pokemon/icons/5/632s.png index c4afa1d8d8b..6d99d9682a1 100644 Binary files a/public/images/pokemon/icons/5/632s.png and b/public/images/pokemon/icons/5/632s.png differ diff --git a/public/images/pokemon/icons/5/633.png b/public/images/pokemon/icons/5/633.png index ab8c906c43c..1a665884a8c 100644 Binary files a/public/images/pokemon/icons/5/633.png and b/public/images/pokemon/icons/5/633.png differ diff --git a/public/images/pokemon/icons/5/633s.png b/public/images/pokemon/icons/5/633s.png index db806b4cd70..4fdab7dd38a 100644 Binary files a/public/images/pokemon/icons/5/633s.png and b/public/images/pokemon/icons/5/633s.png differ diff --git a/public/images/pokemon/icons/5/634.png b/public/images/pokemon/icons/5/634.png index 9b4e739384c..3cd9d20e862 100644 Binary files a/public/images/pokemon/icons/5/634.png and b/public/images/pokemon/icons/5/634.png differ diff --git a/public/images/pokemon/icons/5/634s.png b/public/images/pokemon/icons/5/634s.png index 3b7375ca141..1b46f43f1b5 100644 Binary files a/public/images/pokemon/icons/5/634s.png and b/public/images/pokemon/icons/5/634s.png differ diff --git a/public/images/pokemon/icons/5/635.png b/public/images/pokemon/icons/5/635.png index a904aba7d47..278170b17bc 100644 Binary files a/public/images/pokemon/icons/5/635.png and b/public/images/pokemon/icons/5/635.png differ diff --git a/public/images/pokemon/icons/5/635s.png b/public/images/pokemon/icons/5/635s.png index 32f305327b1..74ebc59bc6a 100644 Binary files a/public/images/pokemon/icons/5/635s.png and b/public/images/pokemon/icons/5/635s.png differ diff --git a/public/images/pokemon/icons/5/636.png b/public/images/pokemon/icons/5/636.png index 8ba458532b6..461c6090df5 100644 Binary files a/public/images/pokemon/icons/5/636.png and b/public/images/pokemon/icons/5/636.png differ diff --git a/public/images/pokemon/icons/5/636s.png b/public/images/pokemon/icons/5/636s.png index c86907b439e..ee18f4f890f 100644 Binary files a/public/images/pokemon/icons/5/636s.png and b/public/images/pokemon/icons/5/636s.png differ diff --git a/public/images/pokemon/icons/5/637.png b/public/images/pokemon/icons/5/637.png index 60f5b091e1b..b46225c22e8 100644 Binary files a/public/images/pokemon/icons/5/637.png and b/public/images/pokemon/icons/5/637.png differ diff --git a/public/images/pokemon/icons/5/637s.png b/public/images/pokemon/icons/5/637s.png index b51ce015d49..c8b63c7728f 100644 Binary files a/public/images/pokemon/icons/5/637s.png and b/public/images/pokemon/icons/5/637s.png differ diff --git a/public/images/pokemon/icons/5/638.png b/public/images/pokemon/icons/5/638.png index 3234250c1b9..5e56a7eb34a 100644 Binary files a/public/images/pokemon/icons/5/638.png and b/public/images/pokemon/icons/5/638.png differ diff --git a/public/images/pokemon/icons/5/638s.png b/public/images/pokemon/icons/5/638s.png index e670802caa1..ae5bd27f4cf 100644 Binary files a/public/images/pokemon/icons/5/638s.png and b/public/images/pokemon/icons/5/638s.png differ diff --git a/public/images/pokemon/icons/5/639.png b/public/images/pokemon/icons/5/639.png index 20ad0a6c22f..fc34824edd6 100644 Binary files a/public/images/pokemon/icons/5/639.png and b/public/images/pokemon/icons/5/639.png differ diff --git a/public/images/pokemon/icons/5/639s.png b/public/images/pokemon/icons/5/639s.png index 4d0145c2ad8..900e5e52e4c 100644 Binary files a/public/images/pokemon/icons/5/639s.png and b/public/images/pokemon/icons/5/639s.png differ diff --git a/public/images/pokemon/icons/5/640.png b/public/images/pokemon/icons/5/640.png index 3c77a357333..ea7725773c8 100644 Binary files a/public/images/pokemon/icons/5/640.png and b/public/images/pokemon/icons/5/640.png differ diff --git a/public/images/pokemon/icons/5/640s.png b/public/images/pokemon/icons/5/640s.png index c8b86bdc893..cc6daacc1df 100644 Binary files a/public/images/pokemon/icons/5/640s.png and b/public/images/pokemon/icons/5/640s.png differ diff --git a/public/images/pokemon/icons/5/641-incarnate.png b/public/images/pokemon/icons/5/641-incarnate.png index 3bd9ccda9a1..89334ce7375 100644 Binary files a/public/images/pokemon/icons/5/641-incarnate.png and b/public/images/pokemon/icons/5/641-incarnate.png differ diff --git a/public/images/pokemon/icons/5/641-therian.png b/public/images/pokemon/icons/5/641-therian.png index 60dce69949f..420d6a9944d 100644 Binary files a/public/images/pokemon/icons/5/641-therian.png and b/public/images/pokemon/icons/5/641-therian.png differ diff --git a/public/images/pokemon/icons/5/641s-incarnate.png b/public/images/pokemon/icons/5/641s-incarnate.png index d56d577577b..37614b259a4 100644 Binary files a/public/images/pokemon/icons/5/641s-incarnate.png and b/public/images/pokemon/icons/5/641s-incarnate.png differ diff --git a/public/images/pokemon/icons/5/641s-therian.png b/public/images/pokemon/icons/5/641s-therian.png index 5dc7b6bc65d..fe8a1fe7ede 100644 Binary files a/public/images/pokemon/icons/5/641s-therian.png and b/public/images/pokemon/icons/5/641s-therian.png differ diff --git a/public/images/pokemon/icons/5/642-incarnate.png b/public/images/pokemon/icons/5/642-incarnate.png index 5404f60c17d..f5acb9456e2 100644 Binary files a/public/images/pokemon/icons/5/642-incarnate.png and b/public/images/pokemon/icons/5/642-incarnate.png differ diff --git a/public/images/pokemon/icons/5/642-therian.png b/public/images/pokemon/icons/5/642-therian.png index cb9b7c3b6dc..180dcec656f 100644 Binary files a/public/images/pokemon/icons/5/642-therian.png and b/public/images/pokemon/icons/5/642-therian.png differ diff --git a/public/images/pokemon/icons/5/642s-incarnate.png b/public/images/pokemon/icons/5/642s-incarnate.png index 75f216d057d..fb4c9d341d2 100644 Binary files a/public/images/pokemon/icons/5/642s-incarnate.png and b/public/images/pokemon/icons/5/642s-incarnate.png differ diff --git a/public/images/pokemon/icons/5/642s-therian.png b/public/images/pokemon/icons/5/642s-therian.png index 8456131eef8..e45ee3b9a6b 100644 Binary files a/public/images/pokemon/icons/5/642s-therian.png and b/public/images/pokemon/icons/5/642s-therian.png differ diff --git a/public/images/pokemon/icons/5/643.png b/public/images/pokemon/icons/5/643.png index 31d735ae22c..d4783447033 100644 Binary files a/public/images/pokemon/icons/5/643.png and b/public/images/pokemon/icons/5/643.png differ diff --git a/public/images/pokemon/icons/5/643s.png b/public/images/pokemon/icons/5/643s.png index 0a212d4f94d..9f163b3159b 100644 Binary files a/public/images/pokemon/icons/5/643s.png and b/public/images/pokemon/icons/5/643s.png differ diff --git a/public/images/pokemon/icons/5/644.png b/public/images/pokemon/icons/5/644.png index dc9b9bb7844..27f7f914195 100644 Binary files a/public/images/pokemon/icons/5/644.png and b/public/images/pokemon/icons/5/644.png differ diff --git a/public/images/pokemon/icons/5/644s.png b/public/images/pokemon/icons/5/644s.png index e51686b7fdd..9443116c18e 100644 Binary files a/public/images/pokemon/icons/5/644s.png and b/public/images/pokemon/icons/5/644s.png differ diff --git a/public/images/pokemon/icons/5/645-incarnate.png b/public/images/pokemon/icons/5/645-incarnate.png index f36ae8fefb1..2d9b2ac6093 100644 Binary files a/public/images/pokemon/icons/5/645-incarnate.png and b/public/images/pokemon/icons/5/645-incarnate.png differ diff --git a/public/images/pokemon/icons/5/645-therian.png b/public/images/pokemon/icons/5/645-therian.png index 50c2fb3ae9b..c32d2184a17 100644 Binary files a/public/images/pokemon/icons/5/645-therian.png and b/public/images/pokemon/icons/5/645-therian.png differ diff --git a/public/images/pokemon/icons/5/645s-incarnate.png b/public/images/pokemon/icons/5/645s-incarnate.png index ef66f4be114..faf9de13a57 100644 Binary files a/public/images/pokemon/icons/5/645s-incarnate.png and b/public/images/pokemon/icons/5/645s-incarnate.png differ diff --git a/public/images/pokemon/icons/5/645s-therian.png b/public/images/pokemon/icons/5/645s-therian.png index af4733992f2..9412ffad770 100644 Binary files a/public/images/pokemon/icons/5/645s-therian.png and b/public/images/pokemon/icons/5/645s-therian.png differ diff --git a/public/images/pokemon/icons/5/646-black.png b/public/images/pokemon/icons/5/646-black.png index 89441bb4227..13a41813a42 100644 Binary files a/public/images/pokemon/icons/5/646-black.png and b/public/images/pokemon/icons/5/646-black.png differ diff --git a/public/images/pokemon/icons/5/646-white.png b/public/images/pokemon/icons/5/646-white.png index 5fee18b205f..a2c3dcb9958 100644 Binary files a/public/images/pokemon/icons/5/646-white.png and b/public/images/pokemon/icons/5/646-white.png differ diff --git a/public/images/pokemon/icons/5/646.png b/public/images/pokemon/icons/5/646.png index 070b6e1f6b7..20ffd49c486 100644 Binary files a/public/images/pokemon/icons/5/646.png and b/public/images/pokemon/icons/5/646.png differ diff --git a/public/images/pokemon/icons/5/646s-black.png b/public/images/pokemon/icons/5/646s-black.png index b521427f8e7..87a2cf0f6f1 100644 Binary files a/public/images/pokemon/icons/5/646s-black.png and b/public/images/pokemon/icons/5/646s-black.png differ diff --git a/public/images/pokemon/icons/5/646s-white.png b/public/images/pokemon/icons/5/646s-white.png index c5be06cb1a7..311815a0954 100644 Binary files a/public/images/pokemon/icons/5/646s-white.png and b/public/images/pokemon/icons/5/646s-white.png differ diff --git a/public/images/pokemon/icons/5/646s.png b/public/images/pokemon/icons/5/646s.png index 4679b7c6811..83f37a9d48e 100644 Binary files a/public/images/pokemon/icons/5/646s.png and b/public/images/pokemon/icons/5/646s.png differ diff --git a/public/images/pokemon/icons/5/647-ordinary.png b/public/images/pokemon/icons/5/647-ordinary.png index 5629c5e8219..e6785339ba2 100644 Binary files a/public/images/pokemon/icons/5/647-ordinary.png and b/public/images/pokemon/icons/5/647-ordinary.png differ diff --git a/public/images/pokemon/icons/5/647-resolute.png b/public/images/pokemon/icons/5/647-resolute.png index 210a85f09e6..18fe761b9f7 100644 Binary files a/public/images/pokemon/icons/5/647-resolute.png and b/public/images/pokemon/icons/5/647-resolute.png differ diff --git a/public/images/pokemon/icons/5/647s-ordinary.png b/public/images/pokemon/icons/5/647s-ordinary.png index fefbd0533c4..b055ee30c9c 100644 Binary files a/public/images/pokemon/icons/5/647s-ordinary.png and b/public/images/pokemon/icons/5/647s-ordinary.png differ diff --git a/public/images/pokemon/icons/5/647s-resolute.png b/public/images/pokemon/icons/5/647s-resolute.png index 2fd65734dea..73626f1515f 100644 Binary files a/public/images/pokemon/icons/5/647s-resolute.png and b/public/images/pokemon/icons/5/647s-resolute.png differ diff --git a/public/images/pokemon/icons/5/648-aria.png b/public/images/pokemon/icons/5/648-aria.png index 6db0ce1a7a5..656eed768e9 100644 Binary files a/public/images/pokemon/icons/5/648-aria.png and b/public/images/pokemon/icons/5/648-aria.png differ diff --git a/public/images/pokemon/icons/5/648-pirouette.png b/public/images/pokemon/icons/5/648-pirouette.png index 81d76e434b7..852077a6191 100644 Binary files a/public/images/pokemon/icons/5/648-pirouette.png and b/public/images/pokemon/icons/5/648-pirouette.png differ diff --git a/public/images/pokemon/icons/5/648s-aria.png b/public/images/pokemon/icons/5/648s-aria.png index 610aa2c5a63..ebd6e0c2712 100644 Binary files a/public/images/pokemon/icons/5/648s-aria.png and b/public/images/pokemon/icons/5/648s-aria.png differ diff --git a/public/images/pokemon/icons/5/648s-pirouette.png b/public/images/pokemon/icons/5/648s-pirouette.png index bd92c95642a..fcf3e490b4d 100644 Binary files a/public/images/pokemon/icons/5/648s-pirouette.png and b/public/images/pokemon/icons/5/648s-pirouette.png differ diff --git a/public/images/pokemon/icons/5/649-burn.png b/public/images/pokemon/icons/5/649-burn.png index 05f0930d46e..cfb5c3f16b8 100644 Binary files a/public/images/pokemon/icons/5/649-burn.png and b/public/images/pokemon/icons/5/649-burn.png differ diff --git a/public/images/pokemon/icons/5/649-chill.png b/public/images/pokemon/icons/5/649-chill.png index 9333e5d2eeb..7798eb57b86 100644 Binary files a/public/images/pokemon/icons/5/649-chill.png and b/public/images/pokemon/icons/5/649-chill.png differ diff --git a/public/images/pokemon/icons/5/649-douse.png b/public/images/pokemon/icons/5/649-douse.png index 24da0494c22..d2d07bfe9ee 100644 Binary files a/public/images/pokemon/icons/5/649-douse.png and b/public/images/pokemon/icons/5/649-douse.png differ diff --git a/public/images/pokemon/icons/5/649-shock.png b/public/images/pokemon/icons/5/649-shock.png index 5dca216bc34..66eed0745a8 100644 Binary files a/public/images/pokemon/icons/5/649-shock.png and b/public/images/pokemon/icons/5/649-shock.png differ diff --git a/public/images/pokemon/icons/5/649.png b/public/images/pokemon/icons/5/649.png index 2f7884dede0..4beeb25d9f6 100644 Binary files a/public/images/pokemon/icons/5/649.png and b/public/images/pokemon/icons/5/649.png differ diff --git a/public/images/pokemon/icons/5/649s-burn.png b/public/images/pokemon/icons/5/649s-burn.png index 7181f2b660c..123c403b15d 100644 Binary files a/public/images/pokemon/icons/5/649s-burn.png and b/public/images/pokemon/icons/5/649s-burn.png differ diff --git a/public/images/pokemon/icons/5/649s-chill.png b/public/images/pokemon/icons/5/649s-chill.png index 6a99e655b9d..abf576c64c6 100644 Binary files a/public/images/pokemon/icons/5/649s-chill.png and b/public/images/pokemon/icons/5/649s-chill.png differ diff --git a/public/images/pokemon/icons/5/649s-douse.png b/public/images/pokemon/icons/5/649s-douse.png index 7f6dec4f104..1126cae0d93 100644 Binary files a/public/images/pokemon/icons/5/649s-douse.png and b/public/images/pokemon/icons/5/649s-douse.png differ diff --git a/public/images/pokemon/icons/5/649s-shock.png b/public/images/pokemon/icons/5/649s-shock.png index e1fb221f76a..dad62068fee 100644 Binary files a/public/images/pokemon/icons/5/649s-shock.png and b/public/images/pokemon/icons/5/649s-shock.png differ diff --git a/public/images/pokemon/icons/5/649s.png b/public/images/pokemon/icons/5/649s.png index 2042a2320c7..a4c59ff1fcd 100644 Binary files a/public/images/pokemon/icons/5/649s.png and b/public/images/pokemon/icons/5/649s.png differ diff --git a/public/images/pokemon/icons/6/2670.png b/public/images/pokemon/icons/6/2670.png index 22c58ac1cf5..266dd570dd2 100644 Binary files a/public/images/pokemon/icons/6/2670.png and b/public/images/pokemon/icons/6/2670.png differ diff --git a/public/images/pokemon/icons/6/2670s.png b/public/images/pokemon/icons/6/2670s.png index 66d0712f312..74c77fbc09e 100644 Binary files a/public/images/pokemon/icons/6/2670s.png and b/public/images/pokemon/icons/6/2670s.png differ diff --git a/public/images/pokemon/icons/6/650.png b/public/images/pokemon/icons/6/650.png index c1bca79fe26..9ccb761dfda 100644 Binary files a/public/images/pokemon/icons/6/650.png and b/public/images/pokemon/icons/6/650.png differ diff --git a/public/images/pokemon/icons/6/650s.png b/public/images/pokemon/icons/6/650s.png index 5c2d5b3afe1..cd5d503416b 100644 Binary files a/public/images/pokemon/icons/6/650s.png and b/public/images/pokemon/icons/6/650s.png differ diff --git a/public/images/pokemon/icons/6/651.png b/public/images/pokemon/icons/6/651.png index 250a60f3003..ee5a45bb440 100644 Binary files a/public/images/pokemon/icons/6/651.png and b/public/images/pokemon/icons/6/651.png differ diff --git a/public/images/pokemon/icons/6/651s.png b/public/images/pokemon/icons/6/651s.png index 43888946644..dd4e24f2b8c 100644 Binary files a/public/images/pokemon/icons/6/651s.png and b/public/images/pokemon/icons/6/651s.png differ diff --git a/public/images/pokemon/icons/6/652.png b/public/images/pokemon/icons/6/652.png index 2a16117b99d..7a730bc892e 100644 Binary files a/public/images/pokemon/icons/6/652.png and b/public/images/pokemon/icons/6/652.png differ diff --git a/public/images/pokemon/icons/6/652s.png b/public/images/pokemon/icons/6/652s.png index 0b5d99e7737..83ebb3ab8a0 100644 Binary files a/public/images/pokemon/icons/6/652s.png and b/public/images/pokemon/icons/6/652s.png differ diff --git a/public/images/pokemon/icons/6/653.png b/public/images/pokemon/icons/6/653.png index fff8881a63d..c75140caf84 100644 Binary files a/public/images/pokemon/icons/6/653.png and b/public/images/pokemon/icons/6/653.png differ diff --git a/public/images/pokemon/icons/6/653s.png b/public/images/pokemon/icons/6/653s.png index 3946ee9c1c7..f3944196fcb 100644 Binary files a/public/images/pokemon/icons/6/653s.png and b/public/images/pokemon/icons/6/653s.png differ diff --git a/public/images/pokemon/icons/6/654.png b/public/images/pokemon/icons/6/654.png index 23dd97ede3a..621e6e302f8 100644 Binary files a/public/images/pokemon/icons/6/654.png and b/public/images/pokemon/icons/6/654.png differ diff --git a/public/images/pokemon/icons/6/654s.png b/public/images/pokemon/icons/6/654s.png index 32c331f630f..60dcdc5b3f6 100644 Binary files a/public/images/pokemon/icons/6/654s.png and b/public/images/pokemon/icons/6/654s.png differ diff --git a/public/images/pokemon/icons/6/655.png b/public/images/pokemon/icons/6/655.png index 502ea5769b5..e6cceaa254a 100644 Binary files a/public/images/pokemon/icons/6/655.png and b/public/images/pokemon/icons/6/655.png differ diff --git a/public/images/pokemon/icons/6/655s.png b/public/images/pokemon/icons/6/655s.png index a39a7c03c27..3b15611922e 100644 Binary files a/public/images/pokemon/icons/6/655s.png and b/public/images/pokemon/icons/6/655s.png differ diff --git a/public/images/pokemon/icons/6/656.png b/public/images/pokemon/icons/6/656.png index d306df26cca..df1616f5328 100644 Binary files a/public/images/pokemon/icons/6/656.png and b/public/images/pokemon/icons/6/656.png differ diff --git a/public/images/pokemon/icons/6/656s.png b/public/images/pokemon/icons/6/656s.png index 76cb5fc7fb2..b287e3f41d5 100644 Binary files a/public/images/pokemon/icons/6/656s.png and b/public/images/pokemon/icons/6/656s.png differ diff --git a/public/images/pokemon/icons/6/657.png b/public/images/pokemon/icons/6/657.png index 3c02d98dec0..dd70193b664 100644 Binary files a/public/images/pokemon/icons/6/657.png and b/public/images/pokemon/icons/6/657.png differ diff --git a/public/images/pokemon/icons/6/657s.png b/public/images/pokemon/icons/6/657s.png index fb3e83a9a55..61d4302c937 100644 Binary files a/public/images/pokemon/icons/6/657s.png and b/public/images/pokemon/icons/6/657s.png differ diff --git a/public/images/pokemon/icons/6/658-ash.png b/public/images/pokemon/icons/6/658-ash.png index bc3aa93ebc2..8deacaee1c9 100644 Binary files a/public/images/pokemon/icons/6/658-ash.png and b/public/images/pokemon/icons/6/658-ash.png differ diff --git a/public/images/pokemon/icons/6/658.png b/public/images/pokemon/icons/6/658.png index 3b80edf6460..8a2c193a663 100644 Binary files a/public/images/pokemon/icons/6/658.png and b/public/images/pokemon/icons/6/658.png differ diff --git a/public/images/pokemon/icons/6/658s-ash.png b/public/images/pokemon/icons/6/658s-ash.png index d575eaf8088..3972b26d235 100644 Binary files a/public/images/pokemon/icons/6/658s-ash.png and b/public/images/pokemon/icons/6/658s-ash.png differ diff --git a/public/images/pokemon/icons/6/658s.png b/public/images/pokemon/icons/6/658s.png index 5e8da486985..c7ecfa3b276 100644 Binary files a/public/images/pokemon/icons/6/658s.png and b/public/images/pokemon/icons/6/658s.png differ diff --git a/public/images/pokemon/icons/6/659.png b/public/images/pokemon/icons/6/659.png index 19dd97ed20e..a174c0ca7e0 100644 Binary files a/public/images/pokemon/icons/6/659.png and b/public/images/pokemon/icons/6/659.png differ diff --git a/public/images/pokemon/icons/6/659s.png b/public/images/pokemon/icons/6/659s.png index 2776c08f42b..cae19f4ffe8 100644 Binary files a/public/images/pokemon/icons/6/659s.png and b/public/images/pokemon/icons/6/659s.png differ diff --git a/public/images/pokemon/icons/6/660.png b/public/images/pokemon/icons/6/660.png index 081c98ebb17..7f9003a81f3 100644 Binary files a/public/images/pokemon/icons/6/660.png and b/public/images/pokemon/icons/6/660.png differ diff --git a/public/images/pokemon/icons/6/660s.png b/public/images/pokemon/icons/6/660s.png index 91cced655f6..abe019a3fd1 100644 Binary files a/public/images/pokemon/icons/6/660s.png and b/public/images/pokemon/icons/6/660s.png differ diff --git a/public/images/pokemon/icons/6/661.png b/public/images/pokemon/icons/6/661.png index c1daad7b089..2180e3b166c 100644 Binary files a/public/images/pokemon/icons/6/661.png and b/public/images/pokemon/icons/6/661.png differ diff --git a/public/images/pokemon/icons/6/661s.png b/public/images/pokemon/icons/6/661s.png index 920cbece6a8..dfa22d083ee 100644 Binary files a/public/images/pokemon/icons/6/661s.png and b/public/images/pokemon/icons/6/661s.png differ diff --git a/public/images/pokemon/icons/6/662.png b/public/images/pokemon/icons/6/662.png index a0815f7ae6f..b2d1bd4b600 100644 Binary files a/public/images/pokemon/icons/6/662.png and b/public/images/pokemon/icons/6/662.png differ diff --git a/public/images/pokemon/icons/6/662s.png b/public/images/pokemon/icons/6/662s.png index 79f8c20f1be..5111a46f733 100644 Binary files a/public/images/pokemon/icons/6/662s.png and b/public/images/pokemon/icons/6/662s.png differ diff --git a/public/images/pokemon/icons/6/663.png b/public/images/pokemon/icons/6/663.png index 4ea9d797ac8..23709d9cb01 100644 Binary files a/public/images/pokemon/icons/6/663.png and b/public/images/pokemon/icons/6/663.png differ diff --git a/public/images/pokemon/icons/6/663s.png b/public/images/pokemon/icons/6/663s.png index c0517461320..1b4bced923b 100644 Binary files a/public/images/pokemon/icons/6/663s.png and b/public/images/pokemon/icons/6/663s.png differ diff --git a/public/images/pokemon/icons/6/664.png b/public/images/pokemon/icons/6/664.png index 13b5db14306..92dce6f260f 100644 Binary files a/public/images/pokemon/icons/6/664.png and b/public/images/pokemon/icons/6/664.png differ diff --git a/public/images/pokemon/icons/6/664s.png b/public/images/pokemon/icons/6/664s.png index 52ef9b2d436..f76c7be3914 100644 Binary files a/public/images/pokemon/icons/6/664s.png and b/public/images/pokemon/icons/6/664s.png differ diff --git a/public/images/pokemon/icons/6/665.png b/public/images/pokemon/icons/6/665.png index a754cd95744..63bbf5154b7 100644 Binary files a/public/images/pokemon/icons/6/665.png and b/public/images/pokemon/icons/6/665.png differ diff --git a/public/images/pokemon/icons/6/665s.png b/public/images/pokemon/icons/6/665s.png index b460848b692..1144f38302e 100644 Binary files a/public/images/pokemon/icons/6/665s.png and b/public/images/pokemon/icons/6/665s.png differ diff --git a/public/images/pokemon/icons/6/666-archipelago.png b/public/images/pokemon/icons/6/666-archipelago.png index 6ed06266504..cae7af2c4a3 100644 Binary files a/public/images/pokemon/icons/6/666-archipelago.png and b/public/images/pokemon/icons/6/666-archipelago.png differ diff --git a/public/images/pokemon/icons/6/666-continental.png b/public/images/pokemon/icons/6/666-continental.png index a63133f37cd..5fedb3be3f4 100644 Binary files a/public/images/pokemon/icons/6/666-continental.png and b/public/images/pokemon/icons/6/666-continental.png differ diff --git a/public/images/pokemon/icons/6/666-elegant.png b/public/images/pokemon/icons/6/666-elegant.png index 4b6972c2f9f..e1a73736066 100644 Binary files a/public/images/pokemon/icons/6/666-elegant.png and b/public/images/pokemon/icons/6/666-elegant.png differ diff --git a/public/images/pokemon/icons/6/666-fancy.png b/public/images/pokemon/icons/6/666-fancy.png index e88629c6a5f..bd2500ac07d 100644 Binary files a/public/images/pokemon/icons/6/666-fancy.png and b/public/images/pokemon/icons/6/666-fancy.png differ diff --git a/public/images/pokemon/icons/6/666-garden.png b/public/images/pokemon/icons/6/666-garden.png index bb8ced00bf8..96ab281dc28 100644 Binary files a/public/images/pokemon/icons/6/666-garden.png and b/public/images/pokemon/icons/6/666-garden.png differ diff --git a/public/images/pokemon/icons/6/666-high-plains.png b/public/images/pokemon/icons/6/666-high-plains.png index a17f536b22c..e91b548bb56 100644 Binary files a/public/images/pokemon/icons/6/666-high-plains.png and b/public/images/pokemon/icons/6/666-high-plains.png differ diff --git a/public/images/pokemon/icons/6/666-icy-snow.png b/public/images/pokemon/icons/6/666-icy-snow.png index 8dd76ae24c2..9524e2d4784 100644 Binary files a/public/images/pokemon/icons/6/666-icy-snow.png and b/public/images/pokemon/icons/6/666-icy-snow.png differ diff --git a/public/images/pokemon/icons/6/666-jungle.png b/public/images/pokemon/icons/6/666-jungle.png index 8a029f9e80d..8efa2cd723b 100644 Binary files a/public/images/pokemon/icons/6/666-jungle.png and b/public/images/pokemon/icons/6/666-jungle.png differ diff --git a/public/images/pokemon/icons/6/666-marine.png b/public/images/pokemon/icons/6/666-marine.png index cc103d43189..a7bc7989d47 100644 Binary files a/public/images/pokemon/icons/6/666-marine.png and b/public/images/pokemon/icons/6/666-marine.png differ diff --git a/public/images/pokemon/icons/6/666-meadow.png b/public/images/pokemon/icons/6/666-meadow.png index cfdad23ff61..b88a99c7f29 100644 Binary files a/public/images/pokemon/icons/6/666-meadow.png and b/public/images/pokemon/icons/6/666-meadow.png differ diff --git a/public/images/pokemon/icons/6/666-modern.png b/public/images/pokemon/icons/6/666-modern.png index ff69b86ef31..7e7c7bd8d10 100644 Binary files a/public/images/pokemon/icons/6/666-modern.png and b/public/images/pokemon/icons/6/666-modern.png differ diff --git a/public/images/pokemon/icons/6/666-monsoon.png b/public/images/pokemon/icons/6/666-monsoon.png index bcfd7b60152..4d280c27453 100644 Binary files a/public/images/pokemon/icons/6/666-monsoon.png and b/public/images/pokemon/icons/6/666-monsoon.png differ diff --git a/public/images/pokemon/icons/6/666-ocean.png b/public/images/pokemon/icons/6/666-ocean.png index 2aa1e6cf176..d79832e2fab 100644 Binary files a/public/images/pokemon/icons/6/666-ocean.png and b/public/images/pokemon/icons/6/666-ocean.png differ diff --git a/public/images/pokemon/icons/6/666-poke-ball.png b/public/images/pokemon/icons/6/666-poke-ball.png index da673a10ddc..07eeea963dc 100644 Binary files a/public/images/pokemon/icons/6/666-poke-ball.png and b/public/images/pokemon/icons/6/666-poke-ball.png differ diff --git a/public/images/pokemon/icons/6/666-polar.png b/public/images/pokemon/icons/6/666-polar.png index 0dad3b6ccd3..8d3d60bbf4d 100644 Binary files a/public/images/pokemon/icons/6/666-polar.png and b/public/images/pokemon/icons/6/666-polar.png differ diff --git a/public/images/pokemon/icons/6/666-river.png b/public/images/pokemon/icons/6/666-river.png index b7fab5a976d..15291eb89e4 100644 Binary files a/public/images/pokemon/icons/6/666-river.png and b/public/images/pokemon/icons/6/666-river.png differ diff --git a/public/images/pokemon/icons/6/666-sandstorm.png b/public/images/pokemon/icons/6/666-sandstorm.png index 66a63ca973a..914b4ec68d2 100644 Binary files a/public/images/pokemon/icons/6/666-sandstorm.png and b/public/images/pokemon/icons/6/666-sandstorm.png differ diff --git a/public/images/pokemon/icons/6/666-savanna.png b/public/images/pokemon/icons/6/666-savanna.png index ffe45c4cd5b..5c448a63993 100644 Binary files a/public/images/pokemon/icons/6/666-savanna.png and b/public/images/pokemon/icons/6/666-savanna.png differ diff --git a/public/images/pokemon/icons/6/666-sun.png b/public/images/pokemon/icons/6/666-sun.png index 22605f8b9d1..d677d10be21 100644 Binary files a/public/images/pokemon/icons/6/666-sun.png and b/public/images/pokemon/icons/6/666-sun.png differ diff --git a/public/images/pokemon/icons/6/666-tundra.png b/public/images/pokemon/icons/6/666-tundra.png index e342da68fa3..67415d78f58 100644 Binary files a/public/images/pokemon/icons/6/666-tundra.png and b/public/images/pokemon/icons/6/666-tundra.png differ diff --git a/public/images/pokemon/icons/6/666s-archipelago.png b/public/images/pokemon/icons/6/666s-archipelago.png index 7bbbd04a6f3..1374244f767 100644 Binary files a/public/images/pokemon/icons/6/666s-archipelago.png and b/public/images/pokemon/icons/6/666s-archipelago.png differ diff --git a/public/images/pokemon/icons/6/666s-continental.png b/public/images/pokemon/icons/6/666s-continental.png index f4b40ca0a0d..0ca8bb2abf8 100644 Binary files a/public/images/pokemon/icons/6/666s-continental.png and b/public/images/pokemon/icons/6/666s-continental.png differ diff --git a/public/images/pokemon/icons/6/666s-elegant.png b/public/images/pokemon/icons/6/666s-elegant.png index e0b006336d6..098144c4260 100644 Binary files a/public/images/pokemon/icons/6/666s-elegant.png and b/public/images/pokemon/icons/6/666s-elegant.png differ diff --git a/public/images/pokemon/icons/6/666s-fancy.png b/public/images/pokemon/icons/6/666s-fancy.png index 13e97730ee2..e4beaea6669 100644 Binary files a/public/images/pokemon/icons/6/666s-fancy.png and b/public/images/pokemon/icons/6/666s-fancy.png differ diff --git a/public/images/pokemon/icons/6/666s-garden.png b/public/images/pokemon/icons/6/666s-garden.png index ad825b00643..b6c1d425379 100644 Binary files a/public/images/pokemon/icons/6/666s-garden.png and b/public/images/pokemon/icons/6/666s-garden.png differ diff --git a/public/images/pokemon/icons/6/666s-high-plains.png b/public/images/pokemon/icons/6/666s-high-plains.png index 68db50c086d..d5ea44a02a4 100644 Binary files a/public/images/pokemon/icons/6/666s-high-plains.png and b/public/images/pokemon/icons/6/666s-high-plains.png differ diff --git a/public/images/pokemon/icons/6/666s-icy-snow.png b/public/images/pokemon/icons/6/666s-icy-snow.png index 7879940ad3e..787792442ce 100644 Binary files a/public/images/pokemon/icons/6/666s-icy-snow.png and b/public/images/pokemon/icons/6/666s-icy-snow.png differ diff --git a/public/images/pokemon/icons/6/666s-jungle.png b/public/images/pokemon/icons/6/666s-jungle.png index 1821c6a9ead..cf7254995a9 100644 Binary files a/public/images/pokemon/icons/6/666s-jungle.png and b/public/images/pokemon/icons/6/666s-jungle.png differ diff --git a/public/images/pokemon/icons/6/666s-marine.png b/public/images/pokemon/icons/6/666s-marine.png index bc8429f583d..b9287d8d48f 100644 Binary files a/public/images/pokemon/icons/6/666s-marine.png and b/public/images/pokemon/icons/6/666s-marine.png differ diff --git a/public/images/pokemon/icons/6/666s-meadow.png b/public/images/pokemon/icons/6/666s-meadow.png index db0c5081a35..3582d4744b4 100644 Binary files a/public/images/pokemon/icons/6/666s-meadow.png and b/public/images/pokemon/icons/6/666s-meadow.png differ diff --git a/public/images/pokemon/icons/6/666s-modern.png b/public/images/pokemon/icons/6/666s-modern.png index 2d310b1012d..87c8f568cda 100644 Binary files a/public/images/pokemon/icons/6/666s-modern.png and b/public/images/pokemon/icons/6/666s-modern.png differ diff --git a/public/images/pokemon/icons/6/666s-monsoon.png b/public/images/pokemon/icons/6/666s-monsoon.png index 322932febf1..36af9f482e0 100644 Binary files a/public/images/pokemon/icons/6/666s-monsoon.png and b/public/images/pokemon/icons/6/666s-monsoon.png differ diff --git a/public/images/pokemon/icons/6/666s-ocean.png b/public/images/pokemon/icons/6/666s-ocean.png index 3b1983aa97c..0de7182ae21 100644 Binary files a/public/images/pokemon/icons/6/666s-ocean.png and b/public/images/pokemon/icons/6/666s-ocean.png differ diff --git a/public/images/pokemon/icons/6/666s-poke-ball.png b/public/images/pokemon/icons/6/666s-poke-ball.png index 05469390a3b..3f7f2718f0d 100644 Binary files a/public/images/pokemon/icons/6/666s-poke-ball.png and b/public/images/pokemon/icons/6/666s-poke-ball.png differ diff --git a/public/images/pokemon/icons/6/666s-polar.png b/public/images/pokemon/icons/6/666s-polar.png index 3f42947f3d4..689b239e904 100644 Binary files a/public/images/pokemon/icons/6/666s-polar.png and b/public/images/pokemon/icons/6/666s-polar.png differ diff --git a/public/images/pokemon/icons/6/666s-river.png b/public/images/pokemon/icons/6/666s-river.png index 2355b4fbe26..61be3fba271 100644 Binary files a/public/images/pokemon/icons/6/666s-river.png and b/public/images/pokemon/icons/6/666s-river.png differ diff --git a/public/images/pokemon/icons/6/666s-sandstorm.png b/public/images/pokemon/icons/6/666s-sandstorm.png index 38953802aeb..62d311447b8 100644 Binary files a/public/images/pokemon/icons/6/666s-sandstorm.png and b/public/images/pokemon/icons/6/666s-sandstorm.png differ diff --git a/public/images/pokemon/icons/6/666s-savanna.png b/public/images/pokemon/icons/6/666s-savanna.png index de93427e64c..2ab1bfddf4d 100644 Binary files a/public/images/pokemon/icons/6/666s-savanna.png and b/public/images/pokemon/icons/6/666s-savanna.png differ diff --git a/public/images/pokemon/icons/6/666s-sun.png b/public/images/pokemon/icons/6/666s-sun.png index ee589cb65fc..fa09ce7e291 100644 Binary files a/public/images/pokemon/icons/6/666s-sun.png and b/public/images/pokemon/icons/6/666s-sun.png differ diff --git a/public/images/pokemon/icons/6/666s-tundra.png b/public/images/pokemon/icons/6/666s-tundra.png index 01bcb25e701..57c73bf4a64 100644 Binary files a/public/images/pokemon/icons/6/666s-tundra.png and b/public/images/pokemon/icons/6/666s-tundra.png differ diff --git a/public/images/pokemon/icons/6/667.png b/public/images/pokemon/icons/6/667.png index 647d85eae76..42339b0d276 100644 Binary files a/public/images/pokemon/icons/6/667.png and b/public/images/pokemon/icons/6/667.png differ diff --git a/public/images/pokemon/icons/6/667s.png b/public/images/pokemon/icons/6/667s.png index fc1a11017f8..cd3b9f132e5 100644 Binary files a/public/images/pokemon/icons/6/667s.png and b/public/images/pokemon/icons/6/667s.png differ diff --git a/public/images/pokemon/icons/6/668-f.png b/public/images/pokemon/icons/6/668-f.png index e0e8aeb571a..660a733987c 100644 Binary files a/public/images/pokemon/icons/6/668-f.png and b/public/images/pokemon/icons/6/668-f.png differ diff --git a/public/images/pokemon/icons/6/668.png b/public/images/pokemon/icons/6/668.png index df9f29f0f0a..77fb57f8206 100644 Binary files a/public/images/pokemon/icons/6/668.png and b/public/images/pokemon/icons/6/668.png differ diff --git a/public/images/pokemon/icons/6/668s-f.png b/public/images/pokemon/icons/6/668s-f.png index bdf2fc23e30..a7bf099b414 100644 Binary files a/public/images/pokemon/icons/6/668s-f.png and b/public/images/pokemon/icons/6/668s-f.png differ diff --git a/public/images/pokemon/icons/6/668s.png b/public/images/pokemon/icons/6/668s.png index 726a7945626..7ee92f35f83 100644 Binary files a/public/images/pokemon/icons/6/668s.png and b/public/images/pokemon/icons/6/668s.png differ diff --git a/public/images/pokemon/icons/6/669-blue.png b/public/images/pokemon/icons/6/669-blue.png index c9a656b48fa..94278b74ca1 100644 Binary files a/public/images/pokemon/icons/6/669-blue.png and b/public/images/pokemon/icons/6/669-blue.png differ diff --git a/public/images/pokemon/icons/6/669-orange.png b/public/images/pokemon/icons/6/669-orange.png index c5a2b75b748..d2ff249bbce 100644 Binary files a/public/images/pokemon/icons/6/669-orange.png and b/public/images/pokemon/icons/6/669-orange.png differ diff --git a/public/images/pokemon/icons/6/669-red.png b/public/images/pokemon/icons/6/669-red.png index f501464186c..3bec20b7d40 100644 Binary files a/public/images/pokemon/icons/6/669-red.png and b/public/images/pokemon/icons/6/669-red.png differ diff --git a/public/images/pokemon/icons/6/669-white.png b/public/images/pokemon/icons/6/669-white.png index be494832298..49eab9e4c4c 100644 Binary files a/public/images/pokemon/icons/6/669-white.png and b/public/images/pokemon/icons/6/669-white.png differ diff --git a/public/images/pokemon/icons/6/669-yellow.png b/public/images/pokemon/icons/6/669-yellow.png index 1a6d7d9a869..4b93c30cbc5 100644 Binary files a/public/images/pokemon/icons/6/669-yellow.png and b/public/images/pokemon/icons/6/669-yellow.png differ diff --git a/public/images/pokemon/icons/6/669s-blue.png b/public/images/pokemon/icons/6/669s-blue.png index 4342362bac2..489f9b8e0f7 100644 Binary files a/public/images/pokemon/icons/6/669s-blue.png and b/public/images/pokemon/icons/6/669s-blue.png differ diff --git a/public/images/pokemon/icons/6/669s-orange.png b/public/images/pokemon/icons/6/669s-orange.png index 27bceb51140..3ce0b02ce45 100644 Binary files a/public/images/pokemon/icons/6/669s-orange.png and b/public/images/pokemon/icons/6/669s-orange.png differ diff --git a/public/images/pokemon/icons/6/669s-red.png b/public/images/pokemon/icons/6/669s-red.png index 8cd3b43d9d8..443d5c7a61c 100644 Binary files a/public/images/pokemon/icons/6/669s-red.png and b/public/images/pokemon/icons/6/669s-red.png differ diff --git a/public/images/pokemon/icons/6/669s-white.png b/public/images/pokemon/icons/6/669s-white.png index 2ae925eed5e..b575163c1f5 100644 Binary files a/public/images/pokemon/icons/6/669s-white.png and b/public/images/pokemon/icons/6/669s-white.png differ diff --git a/public/images/pokemon/icons/6/669s-yellow.png b/public/images/pokemon/icons/6/669s-yellow.png index bc4403cd811..7ef54f0f05b 100644 Binary files a/public/images/pokemon/icons/6/669s-yellow.png and b/public/images/pokemon/icons/6/669s-yellow.png differ diff --git a/public/images/pokemon/icons/6/670-blue.png b/public/images/pokemon/icons/6/670-blue.png index 3c074f8cc1c..db2471b72fb 100644 Binary files a/public/images/pokemon/icons/6/670-blue.png and b/public/images/pokemon/icons/6/670-blue.png differ diff --git a/public/images/pokemon/icons/6/670-orange.png b/public/images/pokemon/icons/6/670-orange.png index 4be452f7a42..c706af59815 100644 Binary files a/public/images/pokemon/icons/6/670-orange.png and b/public/images/pokemon/icons/6/670-orange.png differ diff --git a/public/images/pokemon/icons/6/670-red.png b/public/images/pokemon/icons/6/670-red.png index 858b7107f15..3e33e5ba234 100644 Binary files a/public/images/pokemon/icons/6/670-red.png and b/public/images/pokemon/icons/6/670-red.png differ diff --git a/public/images/pokemon/icons/6/670-white.png b/public/images/pokemon/icons/6/670-white.png index 3428d1d9371..fd577b5f2ef 100644 Binary files a/public/images/pokemon/icons/6/670-white.png and b/public/images/pokemon/icons/6/670-white.png differ diff --git a/public/images/pokemon/icons/6/670-yellow.png b/public/images/pokemon/icons/6/670-yellow.png index 9e9c0ed7511..123367da2cc 100644 Binary files a/public/images/pokemon/icons/6/670-yellow.png and b/public/images/pokemon/icons/6/670-yellow.png differ diff --git a/public/images/pokemon/icons/6/670s-blue.png b/public/images/pokemon/icons/6/670s-blue.png index cad83d3bfbf..f0ca814b470 100644 Binary files a/public/images/pokemon/icons/6/670s-blue.png and b/public/images/pokemon/icons/6/670s-blue.png differ diff --git a/public/images/pokemon/icons/6/670s-orange.png b/public/images/pokemon/icons/6/670s-orange.png index 349504c81e5..bb8d8fcfde9 100644 Binary files a/public/images/pokemon/icons/6/670s-orange.png and b/public/images/pokemon/icons/6/670s-orange.png differ diff --git a/public/images/pokemon/icons/6/670s-red.png b/public/images/pokemon/icons/6/670s-red.png index 0ea502caf02..14d6e813595 100644 Binary files a/public/images/pokemon/icons/6/670s-red.png and b/public/images/pokemon/icons/6/670s-red.png differ diff --git a/public/images/pokemon/icons/6/670s-white.png b/public/images/pokemon/icons/6/670s-white.png index 9fc215be656..579aa582f19 100644 Binary files a/public/images/pokemon/icons/6/670s-white.png and b/public/images/pokemon/icons/6/670s-white.png differ diff --git a/public/images/pokemon/icons/6/670s-yellow.png b/public/images/pokemon/icons/6/670s-yellow.png index 28f4fe92526..eaf63b76593 100644 Binary files a/public/images/pokemon/icons/6/670s-yellow.png and b/public/images/pokemon/icons/6/670s-yellow.png differ diff --git a/public/images/pokemon/icons/6/671-blue.png b/public/images/pokemon/icons/6/671-blue.png index 4dd8621b0bc..6921d43a9ee 100644 Binary files a/public/images/pokemon/icons/6/671-blue.png and b/public/images/pokemon/icons/6/671-blue.png differ diff --git a/public/images/pokemon/icons/6/671-orange.png b/public/images/pokemon/icons/6/671-orange.png index b8398f6f2df..13ccf93689a 100644 Binary files a/public/images/pokemon/icons/6/671-orange.png and b/public/images/pokemon/icons/6/671-orange.png differ diff --git a/public/images/pokemon/icons/6/671-red.png b/public/images/pokemon/icons/6/671-red.png index acf81b384f0..b6d26e79a8c 100644 Binary files a/public/images/pokemon/icons/6/671-red.png and b/public/images/pokemon/icons/6/671-red.png differ diff --git a/public/images/pokemon/icons/6/671-white.png b/public/images/pokemon/icons/6/671-white.png index e23d415b26a..67d7c775f0d 100644 Binary files a/public/images/pokemon/icons/6/671-white.png and b/public/images/pokemon/icons/6/671-white.png differ diff --git a/public/images/pokemon/icons/6/671-yellow.png b/public/images/pokemon/icons/6/671-yellow.png index 550e2c5cbe8..333a5857cc1 100644 Binary files a/public/images/pokemon/icons/6/671-yellow.png and b/public/images/pokemon/icons/6/671-yellow.png differ diff --git a/public/images/pokemon/icons/6/671s-blue.png b/public/images/pokemon/icons/6/671s-blue.png index 0337ef0f260..b8265376d4b 100644 Binary files a/public/images/pokemon/icons/6/671s-blue.png and b/public/images/pokemon/icons/6/671s-blue.png differ diff --git a/public/images/pokemon/icons/6/671s-orange.png b/public/images/pokemon/icons/6/671s-orange.png index aa1220cf0ab..dca2d71acca 100644 Binary files a/public/images/pokemon/icons/6/671s-orange.png and b/public/images/pokemon/icons/6/671s-orange.png differ diff --git a/public/images/pokemon/icons/6/671s-red.png b/public/images/pokemon/icons/6/671s-red.png index b705e317906..e6b6adcd8ae 100644 Binary files a/public/images/pokemon/icons/6/671s-red.png and b/public/images/pokemon/icons/6/671s-red.png differ diff --git a/public/images/pokemon/icons/6/671s-white.png b/public/images/pokemon/icons/6/671s-white.png index a1687b76bf7..83c9f7726b8 100644 Binary files a/public/images/pokemon/icons/6/671s-white.png and b/public/images/pokemon/icons/6/671s-white.png differ diff --git a/public/images/pokemon/icons/6/671s-yellow.png b/public/images/pokemon/icons/6/671s-yellow.png index 200829702d8..19ab8dcb052 100644 Binary files a/public/images/pokemon/icons/6/671s-yellow.png and b/public/images/pokemon/icons/6/671s-yellow.png differ diff --git a/public/images/pokemon/icons/6/672.png b/public/images/pokemon/icons/6/672.png index b7a69e6f264..9d4351cafed 100644 Binary files a/public/images/pokemon/icons/6/672.png and b/public/images/pokemon/icons/6/672.png differ diff --git a/public/images/pokemon/icons/6/672s.png b/public/images/pokemon/icons/6/672s.png index 46e51032484..091237f9118 100644 Binary files a/public/images/pokemon/icons/6/672s.png and b/public/images/pokemon/icons/6/672s.png differ diff --git a/public/images/pokemon/icons/6/673.png b/public/images/pokemon/icons/6/673.png index e70e5b90686..e01b9c67582 100644 Binary files a/public/images/pokemon/icons/6/673.png and b/public/images/pokemon/icons/6/673.png differ diff --git a/public/images/pokemon/icons/6/673s.png b/public/images/pokemon/icons/6/673s.png index e7ff2b42fb6..b2dbf42872f 100644 Binary files a/public/images/pokemon/icons/6/673s.png and b/public/images/pokemon/icons/6/673s.png differ diff --git a/public/images/pokemon/icons/6/674.png b/public/images/pokemon/icons/6/674.png index b8b91839385..7ea986efd49 100644 Binary files a/public/images/pokemon/icons/6/674.png and b/public/images/pokemon/icons/6/674.png differ diff --git a/public/images/pokemon/icons/6/674s.png b/public/images/pokemon/icons/6/674s.png index f6ea4c27a50..148b414cdb9 100644 Binary files a/public/images/pokemon/icons/6/674s.png and b/public/images/pokemon/icons/6/674s.png differ diff --git a/public/images/pokemon/icons/6/675.png b/public/images/pokemon/icons/6/675.png index 97ace41091b..42f5747b2b1 100644 Binary files a/public/images/pokemon/icons/6/675.png and b/public/images/pokemon/icons/6/675.png differ diff --git a/public/images/pokemon/icons/6/675s.png b/public/images/pokemon/icons/6/675s.png index c2a39797aca..1d6af9c08f3 100644 Binary files a/public/images/pokemon/icons/6/675s.png and b/public/images/pokemon/icons/6/675s.png differ diff --git a/public/images/pokemon/icons/6/676-dandy.png b/public/images/pokemon/icons/6/676-dandy.png index 2572d068bd4..744ee67df37 100644 Binary files a/public/images/pokemon/icons/6/676-dandy.png and b/public/images/pokemon/icons/6/676-dandy.png differ diff --git a/public/images/pokemon/icons/6/676-debutante.png b/public/images/pokemon/icons/6/676-debutante.png index 3d85792b433..1895af31170 100644 Binary files a/public/images/pokemon/icons/6/676-debutante.png and b/public/images/pokemon/icons/6/676-debutante.png differ diff --git a/public/images/pokemon/icons/6/676-diamond.png b/public/images/pokemon/icons/6/676-diamond.png index ec2d86d6feb..aa0d363059d 100644 Binary files a/public/images/pokemon/icons/6/676-diamond.png and b/public/images/pokemon/icons/6/676-diamond.png differ diff --git a/public/images/pokemon/icons/6/676-heart.png b/public/images/pokemon/icons/6/676-heart.png index 2b69708d1c8..2bb02e652fc 100644 Binary files a/public/images/pokemon/icons/6/676-heart.png and b/public/images/pokemon/icons/6/676-heart.png differ diff --git a/public/images/pokemon/icons/6/676-kabuki.png b/public/images/pokemon/icons/6/676-kabuki.png index 1f8d0a3f225..44d4dd10a5c 100644 Binary files a/public/images/pokemon/icons/6/676-kabuki.png and b/public/images/pokemon/icons/6/676-kabuki.png differ diff --git a/public/images/pokemon/icons/6/676-la-reine.png b/public/images/pokemon/icons/6/676-la-reine.png index 5bed3241ab4..d1c6b56fda4 100644 Binary files a/public/images/pokemon/icons/6/676-la-reine.png and b/public/images/pokemon/icons/6/676-la-reine.png differ diff --git a/public/images/pokemon/icons/6/676-matron.png b/public/images/pokemon/icons/6/676-matron.png index 62283db2ab5..5e44a6677e4 100644 Binary files a/public/images/pokemon/icons/6/676-matron.png and b/public/images/pokemon/icons/6/676-matron.png differ diff --git a/public/images/pokemon/icons/6/676-pharaoh.png b/public/images/pokemon/icons/6/676-pharaoh.png index 4299597aa17..e3320c6ed77 100644 Binary files a/public/images/pokemon/icons/6/676-pharaoh.png and b/public/images/pokemon/icons/6/676-pharaoh.png differ diff --git a/public/images/pokemon/icons/6/676-star.png b/public/images/pokemon/icons/6/676-star.png index 4b129d97e3e..04c46bc2ca6 100644 Binary files a/public/images/pokemon/icons/6/676-star.png and b/public/images/pokemon/icons/6/676-star.png differ diff --git a/public/images/pokemon/icons/6/676.png b/public/images/pokemon/icons/6/676.png index 2decb9affa9..b4689939bde 100644 Binary files a/public/images/pokemon/icons/6/676.png and b/public/images/pokemon/icons/6/676.png differ diff --git a/public/images/pokemon/icons/6/676s-dandy.png b/public/images/pokemon/icons/6/676s-dandy.png index 62c900ecff0..62720f19ca1 100644 Binary files a/public/images/pokemon/icons/6/676s-dandy.png and b/public/images/pokemon/icons/6/676s-dandy.png differ diff --git a/public/images/pokemon/icons/6/676s-debutante.png b/public/images/pokemon/icons/6/676s-debutante.png index c91166c49d9..a89d08ef3ef 100644 Binary files a/public/images/pokemon/icons/6/676s-debutante.png and b/public/images/pokemon/icons/6/676s-debutante.png differ diff --git a/public/images/pokemon/icons/6/676s-diamond.png b/public/images/pokemon/icons/6/676s-diamond.png index 033d2a3faaa..44ccac7223e 100644 Binary files a/public/images/pokemon/icons/6/676s-diamond.png and b/public/images/pokemon/icons/6/676s-diamond.png differ diff --git a/public/images/pokemon/icons/6/676s-heart.png b/public/images/pokemon/icons/6/676s-heart.png index 008a3743c19..2d4e7db5a68 100644 Binary files a/public/images/pokemon/icons/6/676s-heart.png and b/public/images/pokemon/icons/6/676s-heart.png differ diff --git a/public/images/pokemon/icons/6/676s-kabuki.png b/public/images/pokemon/icons/6/676s-kabuki.png index 8e95d36423e..feeb58790d5 100644 Binary files a/public/images/pokemon/icons/6/676s-kabuki.png and b/public/images/pokemon/icons/6/676s-kabuki.png differ diff --git a/public/images/pokemon/icons/6/676s-la-reine.png b/public/images/pokemon/icons/6/676s-la-reine.png index 0e1e3fb1b57..8c969bf46a1 100644 Binary files a/public/images/pokemon/icons/6/676s-la-reine.png and b/public/images/pokemon/icons/6/676s-la-reine.png differ diff --git a/public/images/pokemon/icons/6/676s-matron.png b/public/images/pokemon/icons/6/676s-matron.png index 25a24d35386..513a81b5690 100644 Binary files a/public/images/pokemon/icons/6/676s-matron.png and b/public/images/pokemon/icons/6/676s-matron.png differ diff --git a/public/images/pokemon/icons/6/676s-pharaoh.png b/public/images/pokemon/icons/6/676s-pharaoh.png index d556a73f3f5..85dcee8d1c6 100644 Binary files a/public/images/pokemon/icons/6/676s-pharaoh.png and b/public/images/pokemon/icons/6/676s-pharaoh.png differ diff --git a/public/images/pokemon/icons/6/676s-star.png b/public/images/pokemon/icons/6/676s-star.png index 3cdf6cb891f..06855e5cda1 100644 Binary files a/public/images/pokemon/icons/6/676s-star.png and b/public/images/pokemon/icons/6/676s-star.png differ diff --git a/public/images/pokemon/icons/6/676s.png b/public/images/pokemon/icons/6/676s.png index 328e48e3f21..e5009c5afff 100644 Binary files a/public/images/pokemon/icons/6/676s.png and b/public/images/pokemon/icons/6/676s.png differ diff --git a/public/images/pokemon/icons/6/677.png b/public/images/pokemon/icons/6/677.png index 475d6b006c0..c86e9f844f4 100644 Binary files a/public/images/pokemon/icons/6/677.png and b/public/images/pokemon/icons/6/677.png differ diff --git a/public/images/pokemon/icons/6/677s.png b/public/images/pokemon/icons/6/677s.png index a6377a28f72..0f88aaf0483 100644 Binary files a/public/images/pokemon/icons/6/677s.png and b/public/images/pokemon/icons/6/677s.png differ diff --git a/public/images/pokemon/icons/6/678-female.png b/public/images/pokemon/icons/6/678-female.png index 0e5f440a27b..e3d118198bd 100644 Binary files a/public/images/pokemon/icons/6/678-female.png and b/public/images/pokemon/icons/6/678-female.png differ diff --git a/public/images/pokemon/icons/6/678.png b/public/images/pokemon/icons/6/678.png index 5ae0eed661d..a2e68388b1a 100644 Binary files a/public/images/pokemon/icons/6/678.png and b/public/images/pokemon/icons/6/678.png differ diff --git a/public/images/pokemon/icons/6/678s-female.png b/public/images/pokemon/icons/6/678s-female.png index 64bde013b3d..4cb9223fe85 100644 Binary files a/public/images/pokemon/icons/6/678s-female.png and b/public/images/pokemon/icons/6/678s-female.png differ diff --git a/public/images/pokemon/icons/6/678s.png b/public/images/pokemon/icons/6/678s.png index 27fce0f5bfd..97e3e45ce07 100644 Binary files a/public/images/pokemon/icons/6/678s.png and b/public/images/pokemon/icons/6/678s.png differ diff --git a/public/images/pokemon/icons/6/679.png b/public/images/pokemon/icons/6/679.png index d0b180785ed..8a3a32784a0 100644 Binary files a/public/images/pokemon/icons/6/679.png and b/public/images/pokemon/icons/6/679.png differ diff --git a/public/images/pokemon/icons/6/679s.png b/public/images/pokemon/icons/6/679s.png index d21644739be..7f28ddd818b 100644 Binary files a/public/images/pokemon/icons/6/679s.png and b/public/images/pokemon/icons/6/679s.png differ diff --git a/public/images/pokemon/icons/6/680.png b/public/images/pokemon/icons/6/680.png index 5650201c62d..e73114030df 100644 Binary files a/public/images/pokemon/icons/6/680.png and b/public/images/pokemon/icons/6/680.png differ diff --git a/public/images/pokemon/icons/6/680s.png b/public/images/pokemon/icons/6/680s.png index 25fb6ee21f1..b0399445dd8 100644 Binary files a/public/images/pokemon/icons/6/680s.png and b/public/images/pokemon/icons/6/680s.png differ diff --git a/public/images/pokemon/icons/6/681-blade.png b/public/images/pokemon/icons/6/681-blade.png index a4d8d4511ac..fb1687bbc4a 100644 Binary files a/public/images/pokemon/icons/6/681-blade.png and b/public/images/pokemon/icons/6/681-blade.png differ diff --git a/public/images/pokemon/icons/6/681.png b/public/images/pokemon/icons/6/681.png index f9337416256..47424a1707c 100644 Binary files a/public/images/pokemon/icons/6/681.png and b/public/images/pokemon/icons/6/681.png differ diff --git a/public/images/pokemon/icons/6/681s-blade.png b/public/images/pokemon/icons/6/681s-blade.png index 4da48fe1ed2..45dcc95671f 100644 Binary files a/public/images/pokemon/icons/6/681s-blade.png and b/public/images/pokemon/icons/6/681s-blade.png differ diff --git a/public/images/pokemon/icons/6/681s.png b/public/images/pokemon/icons/6/681s.png index 5b50445190f..d0cd8b6006d 100644 Binary files a/public/images/pokemon/icons/6/681s.png and b/public/images/pokemon/icons/6/681s.png differ diff --git a/public/images/pokemon/icons/6/682.png b/public/images/pokemon/icons/6/682.png index f2780e5b292..0c1f1f16d58 100644 Binary files a/public/images/pokemon/icons/6/682.png and b/public/images/pokemon/icons/6/682.png differ diff --git a/public/images/pokemon/icons/6/682s.png b/public/images/pokemon/icons/6/682s.png index 6cc97701717..fc28888a4b1 100644 Binary files a/public/images/pokemon/icons/6/682s.png and b/public/images/pokemon/icons/6/682s.png differ diff --git a/public/images/pokemon/icons/6/683.png b/public/images/pokemon/icons/6/683.png index f9fe5bc4b1a..f438548e5ac 100644 Binary files a/public/images/pokemon/icons/6/683.png and b/public/images/pokemon/icons/6/683.png differ diff --git a/public/images/pokemon/icons/6/683s.png b/public/images/pokemon/icons/6/683s.png index 6add69474c8..470585c9dad 100644 Binary files a/public/images/pokemon/icons/6/683s.png and b/public/images/pokemon/icons/6/683s.png differ diff --git a/public/images/pokemon/icons/6/684.png b/public/images/pokemon/icons/6/684.png index c706be50eac..464f59c7c6d 100644 Binary files a/public/images/pokemon/icons/6/684.png and b/public/images/pokemon/icons/6/684.png differ diff --git a/public/images/pokemon/icons/6/684s.png b/public/images/pokemon/icons/6/684s.png index 16c8d61369c..4045dd3f256 100644 Binary files a/public/images/pokemon/icons/6/684s.png and b/public/images/pokemon/icons/6/684s.png differ diff --git a/public/images/pokemon/icons/6/685.png b/public/images/pokemon/icons/6/685.png index c6af572d128..009df5cdabd 100644 Binary files a/public/images/pokemon/icons/6/685.png and b/public/images/pokemon/icons/6/685.png differ diff --git a/public/images/pokemon/icons/6/685s.png b/public/images/pokemon/icons/6/685s.png index 817b0f81ab1..62c8700ba86 100644 Binary files a/public/images/pokemon/icons/6/685s.png and b/public/images/pokemon/icons/6/685s.png differ diff --git a/public/images/pokemon/icons/6/686.png b/public/images/pokemon/icons/6/686.png index fc2f9468bd4..a340a75eba9 100644 Binary files a/public/images/pokemon/icons/6/686.png and b/public/images/pokemon/icons/6/686.png differ diff --git a/public/images/pokemon/icons/6/686s.png b/public/images/pokemon/icons/6/686s.png index 73b1a2fdba6..5996c5d7a81 100644 Binary files a/public/images/pokemon/icons/6/686s.png and b/public/images/pokemon/icons/6/686s.png differ diff --git a/public/images/pokemon/icons/6/687.png b/public/images/pokemon/icons/6/687.png index 1bbe7d6e4b1..d41ae5a85c4 100644 Binary files a/public/images/pokemon/icons/6/687.png and b/public/images/pokemon/icons/6/687.png differ diff --git a/public/images/pokemon/icons/6/687s.png b/public/images/pokemon/icons/6/687s.png index 9a2f0ce3d2d..e57ec21572c 100644 Binary files a/public/images/pokemon/icons/6/687s.png and b/public/images/pokemon/icons/6/687s.png differ diff --git a/public/images/pokemon/icons/6/688.png b/public/images/pokemon/icons/6/688.png index 820973ff49d..4e2f5151184 100644 Binary files a/public/images/pokemon/icons/6/688.png and b/public/images/pokemon/icons/6/688.png differ diff --git a/public/images/pokemon/icons/6/688s.png b/public/images/pokemon/icons/6/688s.png index e78802fe5f2..225fe52625b 100644 Binary files a/public/images/pokemon/icons/6/688s.png and b/public/images/pokemon/icons/6/688s.png differ diff --git a/public/images/pokemon/icons/6/689.png b/public/images/pokemon/icons/6/689.png index b7b28bca3ea..fab492fee2a 100644 Binary files a/public/images/pokemon/icons/6/689.png and b/public/images/pokemon/icons/6/689.png differ diff --git a/public/images/pokemon/icons/6/689s.png b/public/images/pokemon/icons/6/689s.png index 8720047de88..5eb55ab9a60 100644 Binary files a/public/images/pokemon/icons/6/689s.png and b/public/images/pokemon/icons/6/689s.png differ diff --git a/public/images/pokemon/icons/6/690.png b/public/images/pokemon/icons/6/690.png index fb240a452a0..15936a4f527 100644 Binary files a/public/images/pokemon/icons/6/690.png and b/public/images/pokemon/icons/6/690.png differ diff --git a/public/images/pokemon/icons/6/690s.png b/public/images/pokemon/icons/6/690s.png index a10c4878b30..65660cc0d01 100644 Binary files a/public/images/pokemon/icons/6/690s.png and b/public/images/pokemon/icons/6/690s.png differ diff --git a/public/images/pokemon/icons/6/691.png b/public/images/pokemon/icons/6/691.png index 62a9d2325f0..48ae0eb1a62 100644 Binary files a/public/images/pokemon/icons/6/691.png and b/public/images/pokemon/icons/6/691.png differ diff --git a/public/images/pokemon/icons/6/691s.png b/public/images/pokemon/icons/6/691s.png index f80b845d154..1afbb2f27f8 100644 Binary files a/public/images/pokemon/icons/6/691s.png and b/public/images/pokemon/icons/6/691s.png differ diff --git a/public/images/pokemon/icons/6/692.png b/public/images/pokemon/icons/6/692.png index 71533bc0c63..63e9761e9e0 100644 Binary files a/public/images/pokemon/icons/6/692.png and b/public/images/pokemon/icons/6/692.png differ diff --git a/public/images/pokemon/icons/6/692s.png b/public/images/pokemon/icons/6/692s.png index 8d9d998e1c3..c25511fb6d8 100644 Binary files a/public/images/pokemon/icons/6/692s.png and b/public/images/pokemon/icons/6/692s.png differ diff --git a/public/images/pokemon/icons/6/693.png b/public/images/pokemon/icons/6/693.png index bc57f981079..5a88af1fb92 100644 Binary files a/public/images/pokemon/icons/6/693.png and b/public/images/pokemon/icons/6/693.png differ diff --git a/public/images/pokemon/icons/6/693s.png b/public/images/pokemon/icons/6/693s.png index 5e3a01685cb..540a4fb9ab6 100644 Binary files a/public/images/pokemon/icons/6/693s.png and b/public/images/pokemon/icons/6/693s.png differ diff --git a/public/images/pokemon/icons/6/694.png b/public/images/pokemon/icons/6/694.png index 2da623beb66..352035dc1de 100644 Binary files a/public/images/pokemon/icons/6/694.png and b/public/images/pokemon/icons/6/694.png differ diff --git a/public/images/pokemon/icons/6/694s.png b/public/images/pokemon/icons/6/694s.png index 5945931fd55..9813a24a47a 100644 Binary files a/public/images/pokemon/icons/6/694s.png and b/public/images/pokemon/icons/6/694s.png differ diff --git a/public/images/pokemon/icons/6/695.png b/public/images/pokemon/icons/6/695.png index 067854ae691..4118fbff602 100644 Binary files a/public/images/pokemon/icons/6/695.png and b/public/images/pokemon/icons/6/695.png differ diff --git a/public/images/pokemon/icons/6/695s.png b/public/images/pokemon/icons/6/695s.png index 30d43ad597e..3a53bcb6cc5 100644 Binary files a/public/images/pokemon/icons/6/695s.png and b/public/images/pokemon/icons/6/695s.png differ diff --git a/public/images/pokemon/icons/6/696.png b/public/images/pokemon/icons/6/696.png index 30080bcfe5c..86ffb54d070 100644 Binary files a/public/images/pokemon/icons/6/696.png and b/public/images/pokemon/icons/6/696.png differ diff --git a/public/images/pokemon/icons/6/696s.png b/public/images/pokemon/icons/6/696s.png index 1a3c568dc95..c8b17f626ad 100644 Binary files a/public/images/pokemon/icons/6/696s.png and b/public/images/pokemon/icons/6/696s.png differ diff --git a/public/images/pokemon/icons/6/697.png b/public/images/pokemon/icons/6/697.png index 23f5612a436..d1dacfed884 100644 Binary files a/public/images/pokemon/icons/6/697.png and b/public/images/pokemon/icons/6/697.png differ diff --git a/public/images/pokemon/icons/6/697s.png b/public/images/pokemon/icons/6/697s.png index 7cec13d80af..5ff7d90b185 100644 Binary files a/public/images/pokemon/icons/6/697s.png and b/public/images/pokemon/icons/6/697s.png differ diff --git a/public/images/pokemon/icons/6/698.png b/public/images/pokemon/icons/6/698.png index 30ccc4d2ecb..680d84f1386 100644 Binary files a/public/images/pokemon/icons/6/698.png and b/public/images/pokemon/icons/6/698.png differ diff --git a/public/images/pokemon/icons/6/698s.png b/public/images/pokemon/icons/6/698s.png index f6b73ee290d..bd013df6cdf 100644 Binary files a/public/images/pokemon/icons/6/698s.png and b/public/images/pokemon/icons/6/698s.png differ diff --git a/public/images/pokemon/icons/6/699.png b/public/images/pokemon/icons/6/699.png index 3d973829cb8..db56dd78afd 100644 Binary files a/public/images/pokemon/icons/6/699.png and b/public/images/pokemon/icons/6/699.png differ diff --git a/public/images/pokemon/icons/6/699s.png b/public/images/pokemon/icons/6/699s.png index 6b6e5e7dea4..bc78b73b7f6 100644 Binary files a/public/images/pokemon/icons/6/699s.png and b/public/images/pokemon/icons/6/699s.png differ diff --git a/public/images/pokemon/icons/6/700.png b/public/images/pokemon/icons/6/700.png index 38e574a8d36..6930ec499db 100644 Binary files a/public/images/pokemon/icons/6/700.png and b/public/images/pokemon/icons/6/700.png differ diff --git a/public/images/pokemon/icons/6/700s.png b/public/images/pokemon/icons/6/700s.png index cc08fd03c1b..2d901663dc5 100644 Binary files a/public/images/pokemon/icons/6/700s.png and b/public/images/pokemon/icons/6/700s.png differ diff --git a/public/images/pokemon/icons/6/701.png b/public/images/pokemon/icons/6/701.png index 3b7b02cdc06..1e08d23adbf 100644 Binary files a/public/images/pokemon/icons/6/701.png and b/public/images/pokemon/icons/6/701.png differ diff --git a/public/images/pokemon/icons/6/701s.png b/public/images/pokemon/icons/6/701s.png index f1f543bd092..b4ae624e1cd 100644 Binary files a/public/images/pokemon/icons/6/701s.png and b/public/images/pokemon/icons/6/701s.png differ diff --git a/public/images/pokemon/icons/6/702.png b/public/images/pokemon/icons/6/702.png index 80ed11811ee..31b5fd89d39 100644 Binary files a/public/images/pokemon/icons/6/702.png and b/public/images/pokemon/icons/6/702.png differ diff --git a/public/images/pokemon/icons/6/702s.png b/public/images/pokemon/icons/6/702s.png index 3ec7c50b130..cde1c8455f2 100644 Binary files a/public/images/pokemon/icons/6/702s.png and b/public/images/pokemon/icons/6/702s.png differ diff --git a/public/images/pokemon/icons/6/703.png b/public/images/pokemon/icons/6/703.png index 5a3490ee695..c840d799c56 100644 Binary files a/public/images/pokemon/icons/6/703.png and b/public/images/pokemon/icons/6/703.png differ diff --git a/public/images/pokemon/icons/6/703s.png b/public/images/pokemon/icons/6/703s.png index 5bb58ed0c52..5caec5e66cd 100644 Binary files a/public/images/pokemon/icons/6/703s.png and b/public/images/pokemon/icons/6/703s.png differ diff --git a/public/images/pokemon/icons/6/704.png b/public/images/pokemon/icons/6/704.png index f87e3957207..327b5925a86 100644 Binary files a/public/images/pokemon/icons/6/704.png and b/public/images/pokemon/icons/6/704.png differ diff --git a/public/images/pokemon/icons/6/704s.png b/public/images/pokemon/icons/6/704s.png index 1cee609fa7f..724fb565541 100644 Binary files a/public/images/pokemon/icons/6/704s.png and b/public/images/pokemon/icons/6/704s.png differ diff --git a/public/images/pokemon/icons/6/705.png b/public/images/pokemon/icons/6/705.png index 0eea1e41e37..af47a4d2ac0 100644 Binary files a/public/images/pokemon/icons/6/705.png and b/public/images/pokemon/icons/6/705.png differ diff --git a/public/images/pokemon/icons/6/705s.png b/public/images/pokemon/icons/6/705s.png index ccdc541b71c..3244abaeaa4 100644 Binary files a/public/images/pokemon/icons/6/705s.png and b/public/images/pokemon/icons/6/705s.png differ diff --git a/public/images/pokemon/icons/6/706.png b/public/images/pokemon/icons/6/706.png index 8d58df4766d..5d446caf884 100644 Binary files a/public/images/pokemon/icons/6/706.png and b/public/images/pokemon/icons/6/706.png differ diff --git a/public/images/pokemon/icons/6/706s.png b/public/images/pokemon/icons/6/706s.png index 5d7f3db45ea..85f204de60d 100644 Binary files a/public/images/pokemon/icons/6/706s.png and b/public/images/pokemon/icons/6/706s.png differ diff --git a/public/images/pokemon/icons/6/707.png b/public/images/pokemon/icons/6/707.png index 79bf1e09afe..1ca5f43eeff 100644 Binary files a/public/images/pokemon/icons/6/707.png and b/public/images/pokemon/icons/6/707.png differ diff --git a/public/images/pokemon/icons/6/707s.png b/public/images/pokemon/icons/6/707s.png index 79e17b5f8ec..c846d9677c7 100644 Binary files a/public/images/pokemon/icons/6/707s.png and b/public/images/pokemon/icons/6/707s.png differ diff --git a/public/images/pokemon/icons/6/708.png b/public/images/pokemon/icons/6/708.png index 3f54ebeb9b1..8dbe243412e 100644 Binary files a/public/images/pokemon/icons/6/708.png and b/public/images/pokemon/icons/6/708.png differ diff --git a/public/images/pokemon/icons/6/708s.png b/public/images/pokemon/icons/6/708s.png index 10d5bd01b38..bbb32515f59 100644 Binary files a/public/images/pokemon/icons/6/708s.png and b/public/images/pokemon/icons/6/708s.png differ diff --git a/public/images/pokemon/icons/6/709.png b/public/images/pokemon/icons/6/709.png index 06b92a95421..aa6d6f86e7d 100644 Binary files a/public/images/pokemon/icons/6/709.png and b/public/images/pokemon/icons/6/709.png differ diff --git a/public/images/pokemon/icons/6/709s.png b/public/images/pokemon/icons/6/709s.png index 7a074e580e5..c4fc7afbd89 100644 Binary files a/public/images/pokemon/icons/6/709s.png and b/public/images/pokemon/icons/6/709s.png differ diff --git a/public/images/pokemon/icons/6/710-large.png b/public/images/pokemon/icons/6/710-large.png index 07bb1d0517f..527198387ae 100644 Binary files a/public/images/pokemon/icons/6/710-large.png and b/public/images/pokemon/icons/6/710-large.png differ diff --git a/public/images/pokemon/icons/6/710-small.png b/public/images/pokemon/icons/6/710-small.png index de1b0016876..e58ef0a98fa 100644 Binary files a/public/images/pokemon/icons/6/710-small.png and b/public/images/pokemon/icons/6/710-small.png differ diff --git a/public/images/pokemon/icons/6/710-super.png b/public/images/pokemon/icons/6/710-super.png index a8fb9064e0b..9e31c2f4311 100644 Binary files a/public/images/pokemon/icons/6/710-super.png and b/public/images/pokemon/icons/6/710-super.png differ diff --git a/public/images/pokemon/icons/6/710.png b/public/images/pokemon/icons/6/710.png index ea892e13045..c996db17ef6 100644 Binary files a/public/images/pokemon/icons/6/710.png and b/public/images/pokemon/icons/6/710.png differ diff --git a/public/images/pokemon/icons/6/710s-large.png b/public/images/pokemon/icons/6/710s-large.png index 70e2e66e827..4504c770706 100644 Binary files a/public/images/pokemon/icons/6/710s-large.png and b/public/images/pokemon/icons/6/710s-large.png differ diff --git a/public/images/pokemon/icons/6/710s-small.png b/public/images/pokemon/icons/6/710s-small.png index 74dccd170da..df2b9e3b34a 100644 Binary files a/public/images/pokemon/icons/6/710s-small.png and b/public/images/pokemon/icons/6/710s-small.png differ diff --git a/public/images/pokemon/icons/6/710s-super.png b/public/images/pokemon/icons/6/710s-super.png index 76da57ef7a4..f00e28c17e2 100644 Binary files a/public/images/pokemon/icons/6/710s-super.png and b/public/images/pokemon/icons/6/710s-super.png differ diff --git a/public/images/pokemon/icons/6/710s.png b/public/images/pokemon/icons/6/710s.png index 1f14f7b5fc6..8c9f503bf5d 100644 Binary files a/public/images/pokemon/icons/6/710s.png and b/public/images/pokemon/icons/6/710s.png differ diff --git a/public/images/pokemon/icons/6/711-large.png b/public/images/pokemon/icons/6/711-large.png index d9284f234b6..29ed059410c 100644 Binary files a/public/images/pokemon/icons/6/711-large.png and b/public/images/pokemon/icons/6/711-large.png differ diff --git a/public/images/pokemon/icons/6/711-small.png b/public/images/pokemon/icons/6/711-small.png index ef7fcbbbc88..07e06423be3 100644 Binary files a/public/images/pokemon/icons/6/711-small.png and b/public/images/pokemon/icons/6/711-small.png differ diff --git a/public/images/pokemon/icons/6/711-super.png b/public/images/pokemon/icons/6/711-super.png index 5a6a514831e..5598d8539ca 100644 Binary files a/public/images/pokemon/icons/6/711-super.png and b/public/images/pokemon/icons/6/711-super.png differ diff --git a/public/images/pokemon/icons/6/711.png b/public/images/pokemon/icons/6/711.png index 3dfb7c39d6d..7ef8d40d8c7 100644 Binary files a/public/images/pokemon/icons/6/711.png and b/public/images/pokemon/icons/6/711.png differ diff --git a/public/images/pokemon/icons/6/711s-large.png b/public/images/pokemon/icons/6/711s-large.png index 896691b530a..eecc659a227 100644 Binary files a/public/images/pokemon/icons/6/711s-large.png and b/public/images/pokemon/icons/6/711s-large.png differ diff --git a/public/images/pokemon/icons/6/711s-small.png b/public/images/pokemon/icons/6/711s-small.png index 199aab5f143..3d40aed1df7 100644 Binary files a/public/images/pokemon/icons/6/711s-small.png and b/public/images/pokemon/icons/6/711s-small.png differ diff --git a/public/images/pokemon/icons/6/711s-super.png b/public/images/pokemon/icons/6/711s-super.png index e21e0d1f9f9..2156141e04c 100644 Binary files a/public/images/pokemon/icons/6/711s-super.png and b/public/images/pokemon/icons/6/711s-super.png differ diff --git a/public/images/pokemon/icons/6/711s.png b/public/images/pokemon/icons/6/711s.png index 5e0aa0ac3cc..fe5999cb115 100644 Binary files a/public/images/pokemon/icons/6/711s.png and b/public/images/pokemon/icons/6/711s.png differ diff --git a/public/images/pokemon/icons/6/712.png b/public/images/pokemon/icons/6/712.png index 585d82024df..8b5e4f5a4da 100644 Binary files a/public/images/pokemon/icons/6/712.png and b/public/images/pokemon/icons/6/712.png differ diff --git a/public/images/pokemon/icons/6/712s.png b/public/images/pokemon/icons/6/712s.png index c853c1b449e..3580c1618c5 100644 Binary files a/public/images/pokemon/icons/6/712s.png and b/public/images/pokemon/icons/6/712s.png differ diff --git a/public/images/pokemon/icons/6/713.png b/public/images/pokemon/icons/6/713.png index 59394807730..9e4b8378c71 100644 Binary files a/public/images/pokemon/icons/6/713.png and b/public/images/pokemon/icons/6/713.png differ diff --git a/public/images/pokemon/icons/6/713s.png b/public/images/pokemon/icons/6/713s.png index f7a57169158..10d2195cc4f 100644 Binary files a/public/images/pokemon/icons/6/713s.png and b/public/images/pokemon/icons/6/713s.png differ diff --git a/public/images/pokemon/icons/6/714.png b/public/images/pokemon/icons/6/714.png index 4e431d2ada0..f9147fe53a2 100644 Binary files a/public/images/pokemon/icons/6/714.png and b/public/images/pokemon/icons/6/714.png differ diff --git a/public/images/pokemon/icons/6/714s.png b/public/images/pokemon/icons/6/714s.png index 166e7363009..0459188ca41 100644 Binary files a/public/images/pokemon/icons/6/714s.png and b/public/images/pokemon/icons/6/714s.png differ diff --git a/public/images/pokemon/icons/6/715.png b/public/images/pokemon/icons/6/715.png index 9396db0e69a..7da0bbeec58 100644 Binary files a/public/images/pokemon/icons/6/715.png and b/public/images/pokemon/icons/6/715.png differ diff --git a/public/images/pokemon/icons/6/715s.png b/public/images/pokemon/icons/6/715s.png index b38e7cb1090..1449bb2d4be 100644 Binary files a/public/images/pokemon/icons/6/715s.png and b/public/images/pokemon/icons/6/715s.png differ diff --git a/public/images/pokemon/icons/6/716-active.png b/public/images/pokemon/icons/6/716-active.png index 1cf8dfa0ce7..9d3378f1490 100644 Binary files a/public/images/pokemon/icons/6/716-active.png and b/public/images/pokemon/icons/6/716-active.png differ diff --git a/public/images/pokemon/icons/6/716-neutral.png b/public/images/pokemon/icons/6/716-neutral.png index 513d04198a1..c6ea1808fef 100644 Binary files a/public/images/pokemon/icons/6/716-neutral.png and b/public/images/pokemon/icons/6/716-neutral.png differ diff --git a/public/images/pokemon/icons/6/716s-active.png b/public/images/pokemon/icons/6/716s-active.png index 342af7e2399..949a1669b91 100644 Binary files a/public/images/pokemon/icons/6/716s-active.png and b/public/images/pokemon/icons/6/716s-active.png differ diff --git a/public/images/pokemon/icons/6/716s-neutral.png b/public/images/pokemon/icons/6/716s-neutral.png index 4e061a6aca4..143e34d95e8 100644 Binary files a/public/images/pokemon/icons/6/716s-neutral.png and b/public/images/pokemon/icons/6/716s-neutral.png differ diff --git a/public/images/pokemon/icons/6/717.png b/public/images/pokemon/icons/6/717.png index db51bfc7015..7a307787daf 100644 Binary files a/public/images/pokemon/icons/6/717.png and b/public/images/pokemon/icons/6/717.png differ diff --git a/public/images/pokemon/icons/6/717s.png b/public/images/pokemon/icons/6/717s.png index c12ec96907d..742e671450e 100644 Binary files a/public/images/pokemon/icons/6/717s.png and b/public/images/pokemon/icons/6/717s.png differ diff --git a/public/images/pokemon/icons/6/718-10.png b/public/images/pokemon/icons/6/718-10.png index 5a96cda041d..d17cc88483f 100644 Binary files a/public/images/pokemon/icons/6/718-10.png and b/public/images/pokemon/icons/6/718-10.png differ diff --git a/public/images/pokemon/icons/6/718-complete.png b/public/images/pokemon/icons/6/718-complete.png index ab78833b81b..341fe4af99e 100644 Binary files a/public/images/pokemon/icons/6/718-complete.png and b/public/images/pokemon/icons/6/718-complete.png differ diff --git a/public/images/pokemon/icons/6/718.png b/public/images/pokemon/icons/6/718.png index 9bfb0a0a889..51b9881ea48 100644 Binary files a/public/images/pokemon/icons/6/718.png and b/public/images/pokemon/icons/6/718.png differ diff --git a/public/images/pokemon/icons/6/718s-10.png b/public/images/pokemon/icons/6/718s-10.png index 772669db7b8..94b9b7863fc 100644 Binary files a/public/images/pokemon/icons/6/718s-10.png and b/public/images/pokemon/icons/6/718s-10.png differ diff --git a/public/images/pokemon/icons/6/718s-complete.png b/public/images/pokemon/icons/6/718s-complete.png index 9581057980e..41cbf3b1db2 100644 Binary files a/public/images/pokemon/icons/6/718s-complete.png and b/public/images/pokemon/icons/6/718s-complete.png differ diff --git a/public/images/pokemon/icons/6/718s.png b/public/images/pokemon/icons/6/718s.png index 891f840c247..b43f5cb183a 100644 Binary files a/public/images/pokemon/icons/6/718s.png and b/public/images/pokemon/icons/6/718s.png differ diff --git a/public/images/pokemon/icons/6/719-mega.png b/public/images/pokemon/icons/6/719-mega.png index d10a1719eb5..61612dc5dcc 100644 Binary files a/public/images/pokemon/icons/6/719-mega.png and b/public/images/pokemon/icons/6/719-mega.png differ diff --git a/public/images/pokemon/icons/6/719.png b/public/images/pokemon/icons/6/719.png index 7feb15be950..89e308555ca 100644 Binary files a/public/images/pokemon/icons/6/719.png and b/public/images/pokemon/icons/6/719.png differ diff --git a/public/images/pokemon/icons/6/719s-mega.png b/public/images/pokemon/icons/6/719s-mega.png index d9b3f985ae4..8ccb98f4101 100644 Binary files a/public/images/pokemon/icons/6/719s-mega.png and b/public/images/pokemon/icons/6/719s-mega.png differ diff --git a/public/images/pokemon/icons/6/719s.png b/public/images/pokemon/icons/6/719s.png index c5b47ca6293..acecd5327e5 100644 Binary files a/public/images/pokemon/icons/6/719s.png and b/public/images/pokemon/icons/6/719s.png differ diff --git a/public/images/pokemon/icons/6/720-unbound.png b/public/images/pokemon/icons/6/720-unbound.png index e270d21e618..72413769b55 100644 Binary files a/public/images/pokemon/icons/6/720-unbound.png and b/public/images/pokemon/icons/6/720-unbound.png differ diff --git a/public/images/pokemon/icons/6/720.png b/public/images/pokemon/icons/6/720.png index f2b6551da82..c394090abf5 100644 Binary files a/public/images/pokemon/icons/6/720.png and b/public/images/pokemon/icons/6/720.png differ diff --git a/public/images/pokemon/icons/6/720s-unbound.png b/public/images/pokemon/icons/6/720s-unbound.png index 336c6a0c0c1..dd119ef36a1 100644 Binary files a/public/images/pokemon/icons/6/720s-unbound.png and b/public/images/pokemon/icons/6/720s-unbound.png differ diff --git a/public/images/pokemon/icons/6/720s.png b/public/images/pokemon/icons/6/720s.png index 15ccb8b8361..216f0ffb488 100644 Binary files a/public/images/pokemon/icons/6/720s.png and b/public/images/pokemon/icons/6/720s.png differ diff --git a/public/images/pokemon/icons/6/721.png b/public/images/pokemon/icons/6/721.png index a878ea169d3..ce0d0df2d68 100644 Binary files a/public/images/pokemon/icons/6/721.png and b/public/images/pokemon/icons/6/721.png differ diff --git a/public/images/pokemon/icons/6/721s.png b/public/images/pokemon/icons/6/721s.png index fff1e7b5a0e..d3898cfc88f 100644 Binary files a/public/images/pokemon/icons/6/721s.png and b/public/images/pokemon/icons/6/721s.png differ diff --git a/public/images/pokemon/icons/7/2019.png b/public/images/pokemon/icons/7/2019.png index 387b1001258..31c7140ccd1 100644 Binary files a/public/images/pokemon/icons/7/2019.png and b/public/images/pokemon/icons/7/2019.png differ diff --git a/public/images/pokemon/icons/7/2019s.png b/public/images/pokemon/icons/7/2019s.png index 2b083fca859..400653d60ca 100644 Binary files a/public/images/pokemon/icons/7/2019s.png and b/public/images/pokemon/icons/7/2019s.png differ diff --git a/public/images/pokemon/icons/7/2020.png b/public/images/pokemon/icons/7/2020.png index f9b9fc47271..87530d96ef6 100644 Binary files a/public/images/pokemon/icons/7/2020.png and b/public/images/pokemon/icons/7/2020.png differ diff --git a/public/images/pokemon/icons/7/2020s.png b/public/images/pokemon/icons/7/2020s.png index a40f231f827..2c749ef81e2 100644 Binary files a/public/images/pokemon/icons/7/2020s.png and b/public/images/pokemon/icons/7/2020s.png differ diff --git a/public/images/pokemon/icons/7/2026.png b/public/images/pokemon/icons/7/2026.png index cd8db24dd8b..203b8f3b335 100644 Binary files a/public/images/pokemon/icons/7/2026.png and b/public/images/pokemon/icons/7/2026.png differ diff --git a/public/images/pokemon/icons/7/2026s.png b/public/images/pokemon/icons/7/2026s.png index 94ce33a124f..35b8ae351d9 100644 Binary files a/public/images/pokemon/icons/7/2026s.png and b/public/images/pokemon/icons/7/2026s.png differ diff --git a/public/images/pokemon/icons/7/2027.png b/public/images/pokemon/icons/7/2027.png index b61bc4844e4..a8d68c473aa 100644 Binary files a/public/images/pokemon/icons/7/2027.png and b/public/images/pokemon/icons/7/2027.png differ diff --git a/public/images/pokemon/icons/7/2027s.png b/public/images/pokemon/icons/7/2027s.png index 6cf0641c13f..1106cbcb403 100644 Binary files a/public/images/pokemon/icons/7/2027s.png and b/public/images/pokemon/icons/7/2027s.png differ diff --git a/public/images/pokemon/icons/7/2028.png b/public/images/pokemon/icons/7/2028.png index 64e07f28e63..f6532a543ad 100644 Binary files a/public/images/pokemon/icons/7/2028.png and b/public/images/pokemon/icons/7/2028.png differ diff --git a/public/images/pokemon/icons/7/2028s.png b/public/images/pokemon/icons/7/2028s.png index c7f585e603a..033f46a237c 100644 Binary files a/public/images/pokemon/icons/7/2028s.png and b/public/images/pokemon/icons/7/2028s.png differ diff --git a/public/images/pokemon/icons/7/2037.png b/public/images/pokemon/icons/7/2037.png index d018905bcd6..8721b3843a7 100644 Binary files a/public/images/pokemon/icons/7/2037.png and b/public/images/pokemon/icons/7/2037.png differ diff --git a/public/images/pokemon/icons/7/2037s.png b/public/images/pokemon/icons/7/2037s.png index 13095bfe79f..7311bfe7443 100644 Binary files a/public/images/pokemon/icons/7/2037s.png and b/public/images/pokemon/icons/7/2037s.png differ diff --git a/public/images/pokemon/icons/7/2038.png b/public/images/pokemon/icons/7/2038.png index b8d9c9326ef..118cea92cc1 100644 Binary files a/public/images/pokemon/icons/7/2038.png and b/public/images/pokemon/icons/7/2038.png differ diff --git a/public/images/pokemon/icons/7/2038s.png b/public/images/pokemon/icons/7/2038s.png index 46cc664f0be..53ef6e2cd62 100644 Binary files a/public/images/pokemon/icons/7/2038s.png and b/public/images/pokemon/icons/7/2038s.png differ diff --git a/public/images/pokemon/icons/7/2050.png b/public/images/pokemon/icons/7/2050.png index 45418b89873..fd9075ef9d2 100644 Binary files a/public/images/pokemon/icons/7/2050.png and b/public/images/pokemon/icons/7/2050.png differ diff --git a/public/images/pokemon/icons/7/2050s.png b/public/images/pokemon/icons/7/2050s.png index 30489031022..6276a56fa73 100644 Binary files a/public/images/pokemon/icons/7/2050s.png and b/public/images/pokemon/icons/7/2050s.png differ diff --git a/public/images/pokemon/icons/7/2051.png b/public/images/pokemon/icons/7/2051.png index ffe86803489..0b536c0d8d0 100644 Binary files a/public/images/pokemon/icons/7/2051.png and b/public/images/pokemon/icons/7/2051.png differ diff --git a/public/images/pokemon/icons/7/2051s.png b/public/images/pokemon/icons/7/2051s.png index 9afe96d211c..cb3cbdd8e7a 100644 Binary files a/public/images/pokemon/icons/7/2051s.png and b/public/images/pokemon/icons/7/2051s.png differ diff --git a/public/images/pokemon/icons/7/2052.png b/public/images/pokemon/icons/7/2052.png index d6bd1c1eca2..a908358c17f 100644 Binary files a/public/images/pokemon/icons/7/2052.png and b/public/images/pokemon/icons/7/2052.png differ diff --git a/public/images/pokemon/icons/7/2052s.png b/public/images/pokemon/icons/7/2052s.png index 6a055fc6b95..fdfa44dc4f6 100644 Binary files a/public/images/pokemon/icons/7/2052s.png and b/public/images/pokemon/icons/7/2052s.png differ diff --git a/public/images/pokemon/icons/7/2053.png b/public/images/pokemon/icons/7/2053.png index 50dd466d15c..96ccf39173d 100644 Binary files a/public/images/pokemon/icons/7/2053.png and b/public/images/pokemon/icons/7/2053.png differ diff --git a/public/images/pokemon/icons/7/2053s.png b/public/images/pokemon/icons/7/2053s.png index bb089d9e867..d0385f3e482 100644 Binary files a/public/images/pokemon/icons/7/2053s.png and b/public/images/pokemon/icons/7/2053s.png differ diff --git a/public/images/pokemon/icons/7/2074.png b/public/images/pokemon/icons/7/2074.png index 05210416308..08e47edeb43 100644 Binary files a/public/images/pokemon/icons/7/2074.png and b/public/images/pokemon/icons/7/2074.png differ diff --git a/public/images/pokemon/icons/7/2074s.png b/public/images/pokemon/icons/7/2074s.png index 6b1aa728422..6291749ef02 100644 Binary files a/public/images/pokemon/icons/7/2074s.png and b/public/images/pokemon/icons/7/2074s.png differ diff --git a/public/images/pokemon/icons/7/2075.png b/public/images/pokemon/icons/7/2075.png index 649328bf23f..59bc4f0ec21 100644 Binary files a/public/images/pokemon/icons/7/2075.png and b/public/images/pokemon/icons/7/2075.png differ diff --git a/public/images/pokemon/icons/7/2075s.png b/public/images/pokemon/icons/7/2075s.png index d3c8ca14308..416a7263b25 100644 Binary files a/public/images/pokemon/icons/7/2075s.png and b/public/images/pokemon/icons/7/2075s.png differ diff --git a/public/images/pokemon/icons/7/2076.png b/public/images/pokemon/icons/7/2076.png index a2ce4f3e65a..9e4e3bcdfbe 100644 Binary files a/public/images/pokemon/icons/7/2076.png and b/public/images/pokemon/icons/7/2076.png differ diff --git a/public/images/pokemon/icons/7/2076s.png b/public/images/pokemon/icons/7/2076s.png index 15fecb167cb..fe93cddf63c 100644 Binary files a/public/images/pokemon/icons/7/2076s.png and b/public/images/pokemon/icons/7/2076s.png differ diff --git a/public/images/pokemon/icons/7/2088.png b/public/images/pokemon/icons/7/2088.png index 3b1cf8c3876..31a2cead091 100644 Binary files a/public/images/pokemon/icons/7/2088.png and b/public/images/pokemon/icons/7/2088.png differ diff --git a/public/images/pokemon/icons/7/2088s.png b/public/images/pokemon/icons/7/2088s.png index 1e2010b875d..f8cb09bd6c5 100644 Binary files a/public/images/pokemon/icons/7/2088s.png and b/public/images/pokemon/icons/7/2088s.png differ diff --git a/public/images/pokemon/icons/7/2089.png b/public/images/pokemon/icons/7/2089.png index c7fac6bc020..ede0a965ef3 100644 Binary files a/public/images/pokemon/icons/7/2089.png and b/public/images/pokemon/icons/7/2089.png differ diff --git a/public/images/pokemon/icons/7/2089s.png b/public/images/pokemon/icons/7/2089s.png index f602a48551b..e76dad538e0 100644 Binary files a/public/images/pokemon/icons/7/2089s.png and b/public/images/pokemon/icons/7/2089s.png differ diff --git a/public/images/pokemon/icons/7/2103.png b/public/images/pokemon/icons/7/2103.png index 8321806ecbd..a61f9527d24 100644 Binary files a/public/images/pokemon/icons/7/2103.png and b/public/images/pokemon/icons/7/2103.png differ diff --git a/public/images/pokemon/icons/7/2103s.png b/public/images/pokemon/icons/7/2103s.png index 21a42c1cb12..5a468d9625f 100644 Binary files a/public/images/pokemon/icons/7/2103s.png and b/public/images/pokemon/icons/7/2103s.png differ diff --git a/public/images/pokemon/icons/7/2105.png b/public/images/pokemon/icons/7/2105.png index 4e29bd05c47..deedfaa0308 100644 Binary files a/public/images/pokemon/icons/7/2105.png and b/public/images/pokemon/icons/7/2105.png differ diff --git a/public/images/pokemon/icons/7/2105s.png b/public/images/pokemon/icons/7/2105s.png index 0b5d383ed28..62741e36a5a 100644 Binary files a/public/images/pokemon/icons/7/2105s.png and b/public/images/pokemon/icons/7/2105s.png differ diff --git a/public/images/pokemon/icons/7/722.png b/public/images/pokemon/icons/7/722.png index 6ca2d1ea1d0..7be8177a1c8 100644 Binary files a/public/images/pokemon/icons/7/722.png and b/public/images/pokemon/icons/7/722.png differ diff --git a/public/images/pokemon/icons/7/722s.png b/public/images/pokemon/icons/7/722s.png index 43c814af336..ce1ebd39288 100644 Binary files a/public/images/pokemon/icons/7/722s.png and b/public/images/pokemon/icons/7/722s.png differ diff --git a/public/images/pokemon/icons/7/723.png b/public/images/pokemon/icons/7/723.png index dc63ca24fc5..a46d1d1ad98 100644 Binary files a/public/images/pokemon/icons/7/723.png and b/public/images/pokemon/icons/7/723.png differ diff --git a/public/images/pokemon/icons/7/723s.png b/public/images/pokemon/icons/7/723s.png index afe36fd277e..2d347d98184 100644 Binary files a/public/images/pokemon/icons/7/723s.png and b/public/images/pokemon/icons/7/723s.png differ diff --git a/public/images/pokemon/icons/7/724.png b/public/images/pokemon/icons/7/724.png index f763c44cb75..c5b867edc21 100644 Binary files a/public/images/pokemon/icons/7/724.png and b/public/images/pokemon/icons/7/724.png differ diff --git a/public/images/pokemon/icons/7/724s.png b/public/images/pokemon/icons/7/724s.png index 68650958150..e3cbcc98042 100644 Binary files a/public/images/pokemon/icons/7/724s.png and b/public/images/pokemon/icons/7/724s.png differ diff --git a/public/images/pokemon/icons/7/725.png b/public/images/pokemon/icons/7/725.png index 399a8c45d87..9589b46484f 100644 Binary files a/public/images/pokemon/icons/7/725.png and b/public/images/pokemon/icons/7/725.png differ diff --git a/public/images/pokemon/icons/7/725s.png b/public/images/pokemon/icons/7/725s.png index 1c4de83bc8f..c2e5c866f53 100644 Binary files a/public/images/pokemon/icons/7/725s.png and b/public/images/pokemon/icons/7/725s.png differ diff --git a/public/images/pokemon/icons/7/726.png b/public/images/pokemon/icons/7/726.png index b919ca73930..2dbdb63b966 100644 Binary files a/public/images/pokemon/icons/7/726.png and b/public/images/pokemon/icons/7/726.png differ diff --git a/public/images/pokemon/icons/7/726s.png b/public/images/pokemon/icons/7/726s.png index c30f5e80191..dc38d531864 100644 Binary files a/public/images/pokemon/icons/7/726s.png and b/public/images/pokemon/icons/7/726s.png differ diff --git a/public/images/pokemon/icons/7/727.png b/public/images/pokemon/icons/7/727.png index 7ef7533522f..c309871378b 100644 Binary files a/public/images/pokemon/icons/7/727.png and b/public/images/pokemon/icons/7/727.png differ diff --git a/public/images/pokemon/icons/7/727s.png b/public/images/pokemon/icons/7/727s.png index 98abd5c20a4..5e1d583945b 100644 Binary files a/public/images/pokemon/icons/7/727s.png and b/public/images/pokemon/icons/7/727s.png differ diff --git a/public/images/pokemon/icons/7/728.png b/public/images/pokemon/icons/7/728.png index 098bb5fd670..fa5218ce651 100644 Binary files a/public/images/pokemon/icons/7/728.png and b/public/images/pokemon/icons/7/728.png differ diff --git a/public/images/pokemon/icons/7/728s.png b/public/images/pokemon/icons/7/728s.png index 74b3726b936..0ac361db66d 100644 Binary files a/public/images/pokemon/icons/7/728s.png and b/public/images/pokemon/icons/7/728s.png differ diff --git a/public/images/pokemon/icons/7/729.png b/public/images/pokemon/icons/7/729.png index 4917d585b4a..f0e9bf7b56c 100644 Binary files a/public/images/pokemon/icons/7/729.png and b/public/images/pokemon/icons/7/729.png differ diff --git a/public/images/pokemon/icons/7/729s.png b/public/images/pokemon/icons/7/729s.png index 5184cd09dcd..19568352129 100644 Binary files a/public/images/pokemon/icons/7/729s.png and b/public/images/pokemon/icons/7/729s.png differ diff --git a/public/images/pokemon/icons/7/730.png b/public/images/pokemon/icons/7/730.png index 72e0d2047d5..4ad204befa6 100644 Binary files a/public/images/pokemon/icons/7/730.png and b/public/images/pokemon/icons/7/730.png differ diff --git a/public/images/pokemon/icons/7/730s.png b/public/images/pokemon/icons/7/730s.png index 27076deedca..eba1ef321a2 100644 Binary files a/public/images/pokemon/icons/7/730s.png and b/public/images/pokemon/icons/7/730s.png differ diff --git a/public/images/pokemon/icons/7/731.png b/public/images/pokemon/icons/7/731.png index 28b5c3dbd5a..2b9d2e68c00 100644 Binary files a/public/images/pokemon/icons/7/731.png and b/public/images/pokemon/icons/7/731.png differ diff --git a/public/images/pokemon/icons/7/731s.png b/public/images/pokemon/icons/7/731s.png index d87b6846ad3..5c0ff477cc5 100644 Binary files a/public/images/pokemon/icons/7/731s.png and b/public/images/pokemon/icons/7/731s.png differ diff --git a/public/images/pokemon/icons/7/732.png b/public/images/pokemon/icons/7/732.png index c996bca8a28..72d5e44d201 100644 Binary files a/public/images/pokemon/icons/7/732.png and b/public/images/pokemon/icons/7/732.png differ diff --git a/public/images/pokemon/icons/7/732s.png b/public/images/pokemon/icons/7/732s.png index 565762b2356..12713367c8a 100644 Binary files a/public/images/pokemon/icons/7/732s.png and b/public/images/pokemon/icons/7/732s.png differ diff --git a/public/images/pokemon/icons/7/733.png b/public/images/pokemon/icons/7/733.png index 9520d0d8b3b..ed3da16635c 100644 Binary files a/public/images/pokemon/icons/7/733.png and b/public/images/pokemon/icons/7/733.png differ diff --git a/public/images/pokemon/icons/7/733s.png b/public/images/pokemon/icons/7/733s.png index 8fd586caea5..574c88a4504 100644 Binary files a/public/images/pokemon/icons/7/733s.png and b/public/images/pokemon/icons/7/733s.png differ diff --git a/public/images/pokemon/icons/7/734.png b/public/images/pokemon/icons/7/734.png index bded1a608f2..0f1abd0ada7 100644 Binary files a/public/images/pokemon/icons/7/734.png and b/public/images/pokemon/icons/7/734.png differ diff --git a/public/images/pokemon/icons/7/734s.png b/public/images/pokemon/icons/7/734s.png index dcbf93baef0..7f5ee507fda 100644 Binary files a/public/images/pokemon/icons/7/734s.png and b/public/images/pokemon/icons/7/734s.png differ diff --git a/public/images/pokemon/icons/7/735.png b/public/images/pokemon/icons/7/735.png index 9b91d51e2e1..aad7b67208c 100644 Binary files a/public/images/pokemon/icons/7/735.png and b/public/images/pokemon/icons/7/735.png differ diff --git a/public/images/pokemon/icons/7/735s.png b/public/images/pokemon/icons/7/735s.png index f8e0ed62515..b720c632b3d 100644 Binary files a/public/images/pokemon/icons/7/735s.png and b/public/images/pokemon/icons/7/735s.png differ diff --git a/public/images/pokemon/icons/7/736.png b/public/images/pokemon/icons/7/736.png index 13ac8357daa..8e14bf0acf0 100644 Binary files a/public/images/pokemon/icons/7/736.png and b/public/images/pokemon/icons/7/736.png differ diff --git a/public/images/pokemon/icons/7/736s.png b/public/images/pokemon/icons/7/736s.png index 36487c1c2a4..e1234d0c309 100644 Binary files a/public/images/pokemon/icons/7/736s.png and b/public/images/pokemon/icons/7/736s.png differ diff --git a/public/images/pokemon/icons/7/737.png b/public/images/pokemon/icons/7/737.png index e0bc51b23eb..9736532b289 100644 Binary files a/public/images/pokemon/icons/7/737.png and b/public/images/pokemon/icons/7/737.png differ diff --git a/public/images/pokemon/icons/7/737s.png b/public/images/pokemon/icons/7/737s.png index ecad379e13b..942ecebe005 100644 Binary files a/public/images/pokemon/icons/7/737s.png and b/public/images/pokemon/icons/7/737s.png differ diff --git a/public/images/pokemon/icons/7/738.png b/public/images/pokemon/icons/7/738.png index 75bf0b2115d..e92665836ac 100644 Binary files a/public/images/pokemon/icons/7/738.png and b/public/images/pokemon/icons/7/738.png differ diff --git a/public/images/pokemon/icons/7/738s.png b/public/images/pokemon/icons/7/738s.png index eebf4cb9b63..92099514fba 100644 Binary files a/public/images/pokemon/icons/7/738s.png and b/public/images/pokemon/icons/7/738s.png differ diff --git a/public/images/pokemon/icons/7/739.png b/public/images/pokemon/icons/7/739.png index b77208571f7..219fae20931 100644 Binary files a/public/images/pokemon/icons/7/739.png and b/public/images/pokemon/icons/7/739.png differ diff --git a/public/images/pokemon/icons/7/739s.png b/public/images/pokemon/icons/7/739s.png index 7aa8097dbce..740b9e4f24e 100644 Binary files a/public/images/pokemon/icons/7/739s.png and b/public/images/pokemon/icons/7/739s.png differ diff --git a/public/images/pokemon/icons/7/740.png b/public/images/pokemon/icons/7/740.png index 42527e7debf..0d646ac638a 100644 Binary files a/public/images/pokemon/icons/7/740.png and b/public/images/pokemon/icons/7/740.png differ diff --git a/public/images/pokemon/icons/7/740s.png b/public/images/pokemon/icons/7/740s.png index b96c8a4a701..1bd6df13121 100644 Binary files a/public/images/pokemon/icons/7/740s.png and b/public/images/pokemon/icons/7/740s.png differ diff --git a/public/images/pokemon/icons/7/741-pau.png b/public/images/pokemon/icons/7/741-pau.png index 44d085985fd..63f6fb49ce0 100644 Binary files a/public/images/pokemon/icons/7/741-pau.png and b/public/images/pokemon/icons/7/741-pau.png differ diff --git a/public/images/pokemon/icons/7/741-pompom.png b/public/images/pokemon/icons/7/741-pompom.png index 6043d9ef00b..7ba493ba013 100644 Binary files a/public/images/pokemon/icons/7/741-pompom.png and b/public/images/pokemon/icons/7/741-pompom.png differ diff --git a/public/images/pokemon/icons/7/741-sensu.png b/public/images/pokemon/icons/7/741-sensu.png index 1ab7031bf4b..abcc02cb5d9 100644 Binary files a/public/images/pokemon/icons/7/741-sensu.png and b/public/images/pokemon/icons/7/741-sensu.png differ diff --git a/public/images/pokemon/icons/7/741.png b/public/images/pokemon/icons/7/741.png index 3381b1ef47c..6a86abbacb3 100644 Binary files a/public/images/pokemon/icons/7/741.png and b/public/images/pokemon/icons/7/741.png differ diff --git a/public/images/pokemon/icons/7/741s-pau.png b/public/images/pokemon/icons/7/741s-pau.png index a5fffb2e7bb..d87386c7173 100644 Binary files a/public/images/pokemon/icons/7/741s-pau.png and b/public/images/pokemon/icons/7/741s-pau.png differ diff --git a/public/images/pokemon/icons/7/741s-pompom.png b/public/images/pokemon/icons/7/741s-pompom.png index b5effb2eddf..0f0763d2f8f 100644 Binary files a/public/images/pokemon/icons/7/741s-pompom.png and b/public/images/pokemon/icons/7/741s-pompom.png differ diff --git a/public/images/pokemon/icons/7/741s-sensu.png b/public/images/pokemon/icons/7/741s-sensu.png index ea5131d5319..0877f53fd01 100644 Binary files a/public/images/pokemon/icons/7/741s-sensu.png and b/public/images/pokemon/icons/7/741s-sensu.png differ diff --git a/public/images/pokemon/icons/7/741s.png b/public/images/pokemon/icons/7/741s.png index 967c1e4ed79..82600634924 100644 Binary files a/public/images/pokemon/icons/7/741s.png and b/public/images/pokemon/icons/7/741s.png differ diff --git a/public/images/pokemon/icons/7/742.png b/public/images/pokemon/icons/7/742.png index c0b79bd248a..ad43fe85af3 100644 Binary files a/public/images/pokemon/icons/7/742.png and b/public/images/pokemon/icons/7/742.png differ diff --git a/public/images/pokemon/icons/7/742s.png b/public/images/pokemon/icons/7/742s.png index 5c663166b16..cfe2e95ebe2 100644 Binary files a/public/images/pokemon/icons/7/742s.png and b/public/images/pokemon/icons/7/742s.png differ diff --git a/public/images/pokemon/icons/7/743.png b/public/images/pokemon/icons/7/743.png index 353ce8d1014..47d8cdf6ef0 100644 Binary files a/public/images/pokemon/icons/7/743.png and b/public/images/pokemon/icons/7/743.png differ diff --git a/public/images/pokemon/icons/7/743s.png b/public/images/pokemon/icons/7/743s.png index 4622dc5bc8f..424c3660d48 100644 Binary files a/public/images/pokemon/icons/7/743s.png and b/public/images/pokemon/icons/7/743s.png differ diff --git a/public/images/pokemon/icons/7/744.png b/public/images/pokemon/icons/7/744.png index 46ad44813d6..82cabb09bd0 100644 Binary files a/public/images/pokemon/icons/7/744.png and b/public/images/pokemon/icons/7/744.png differ diff --git a/public/images/pokemon/icons/7/744s.png b/public/images/pokemon/icons/7/744s.png index 136f79cab2f..290c09d3228 100644 Binary files a/public/images/pokemon/icons/7/744s.png and b/public/images/pokemon/icons/7/744s.png differ diff --git a/public/images/pokemon/icons/7/745-dusk.png b/public/images/pokemon/icons/7/745-dusk.png index 3208ddf3d02..0fd18074dfb 100644 Binary files a/public/images/pokemon/icons/7/745-dusk.png and b/public/images/pokemon/icons/7/745-dusk.png differ diff --git a/public/images/pokemon/icons/7/745-midnight.png b/public/images/pokemon/icons/7/745-midnight.png index a6a491b44aa..c205e20c0a0 100644 Binary files a/public/images/pokemon/icons/7/745-midnight.png and b/public/images/pokemon/icons/7/745-midnight.png differ diff --git a/public/images/pokemon/icons/7/745.png b/public/images/pokemon/icons/7/745.png index 2ce192bb967..930a0501088 100644 Binary files a/public/images/pokemon/icons/7/745.png and b/public/images/pokemon/icons/7/745.png differ diff --git a/public/images/pokemon/icons/7/745s-dusk.png b/public/images/pokemon/icons/7/745s-dusk.png index f0579f004e5..303697a69bc 100644 Binary files a/public/images/pokemon/icons/7/745s-dusk.png and b/public/images/pokemon/icons/7/745s-dusk.png differ diff --git a/public/images/pokemon/icons/7/745s-midnight.png b/public/images/pokemon/icons/7/745s-midnight.png index caea6b0377c..b4fd0b1ab7b 100644 Binary files a/public/images/pokemon/icons/7/745s-midnight.png and b/public/images/pokemon/icons/7/745s-midnight.png differ diff --git a/public/images/pokemon/icons/7/745s.png b/public/images/pokemon/icons/7/745s.png index 50065937003..28dff9c33f9 100644 Binary files a/public/images/pokemon/icons/7/745s.png and b/public/images/pokemon/icons/7/745s.png differ diff --git a/public/images/pokemon/icons/7/746-school.png b/public/images/pokemon/icons/7/746-school.png index d421210c2cf..ef680130689 100644 Binary files a/public/images/pokemon/icons/7/746-school.png and b/public/images/pokemon/icons/7/746-school.png differ diff --git a/public/images/pokemon/icons/7/746.png b/public/images/pokemon/icons/7/746.png index 3912ab26688..486de95bd88 100644 Binary files a/public/images/pokemon/icons/7/746.png and b/public/images/pokemon/icons/7/746.png differ diff --git a/public/images/pokemon/icons/7/746s-school.png b/public/images/pokemon/icons/7/746s-school.png index 14c5f1ac876..16d42b0c955 100644 Binary files a/public/images/pokemon/icons/7/746s-school.png and b/public/images/pokemon/icons/7/746s-school.png differ diff --git a/public/images/pokemon/icons/7/746s.png b/public/images/pokemon/icons/7/746s.png index a608d1ec739..da151d8f386 100644 Binary files a/public/images/pokemon/icons/7/746s.png and b/public/images/pokemon/icons/7/746s.png differ diff --git a/public/images/pokemon/icons/7/747.png b/public/images/pokemon/icons/7/747.png index d541a1dd160..8492c073ab9 100644 Binary files a/public/images/pokemon/icons/7/747.png and b/public/images/pokemon/icons/7/747.png differ diff --git a/public/images/pokemon/icons/7/747s.png b/public/images/pokemon/icons/7/747s.png index 81dd391b764..6c153f550ba 100644 Binary files a/public/images/pokemon/icons/7/747s.png and b/public/images/pokemon/icons/7/747s.png differ diff --git a/public/images/pokemon/icons/7/748.png b/public/images/pokemon/icons/7/748.png index 6d7e469044f..b3eb19a0261 100644 Binary files a/public/images/pokemon/icons/7/748.png and b/public/images/pokemon/icons/7/748.png differ diff --git a/public/images/pokemon/icons/7/748s.png b/public/images/pokemon/icons/7/748s.png index 6987127b7f7..59aa97e24ba 100644 Binary files a/public/images/pokemon/icons/7/748s.png and b/public/images/pokemon/icons/7/748s.png differ diff --git a/public/images/pokemon/icons/7/749.png b/public/images/pokemon/icons/7/749.png index 42007a04cc6..8d49e511110 100644 Binary files a/public/images/pokemon/icons/7/749.png and b/public/images/pokemon/icons/7/749.png differ diff --git a/public/images/pokemon/icons/7/749s.png b/public/images/pokemon/icons/7/749s.png index 17103a8fffe..60ead4ec236 100644 Binary files a/public/images/pokemon/icons/7/749s.png and b/public/images/pokemon/icons/7/749s.png differ diff --git a/public/images/pokemon/icons/7/750.png b/public/images/pokemon/icons/7/750.png index 8ecaf545523..611cd809701 100644 Binary files a/public/images/pokemon/icons/7/750.png and b/public/images/pokemon/icons/7/750.png differ diff --git a/public/images/pokemon/icons/7/750s.png b/public/images/pokemon/icons/7/750s.png index d9f697d0b63..0c89a496707 100644 Binary files a/public/images/pokemon/icons/7/750s.png and b/public/images/pokemon/icons/7/750s.png differ diff --git a/public/images/pokemon/icons/7/751.png b/public/images/pokemon/icons/7/751.png index 362b7298876..63531a0b9f4 100644 Binary files a/public/images/pokemon/icons/7/751.png and b/public/images/pokemon/icons/7/751.png differ diff --git a/public/images/pokemon/icons/7/751s.png b/public/images/pokemon/icons/7/751s.png index 8fe6aa081a0..7ad6746d101 100644 Binary files a/public/images/pokemon/icons/7/751s.png and b/public/images/pokemon/icons/7/751s.png differ diff --git a/public/images/pokemon/icons/7/752.png b/public/images/pokemon/icons/7/752.png index dc281417a54..99157be1894 100644 Binary files a/public/images/pokemon/icons/7/752.png and b/public/images/pokemon/icons/7/752.png differ diff --git a/public/images/pokemon/icons/7/752s.png b/public/images/pokemon/icons/7/752s.png index bba8c2df737..9a474a90ec3 100644 Binary files a/public/images/pokemon/icons/7/752s.png and b/public/images/pokemon/icons/7/752s.png differ diff --git a/public/images/pokemon/icons/7/753.png b/public/images/pokemon/icons/7/753.png index 113619a1ec5..f339421bf3f 100644 Binary files a/public/images/pokemon/icons/7/753.png and b/public/images/pokemon/icons/7/753.png differ diff --git a/public/images/pokemon/icons/7/753s.png b/public/images/pokemon/icons/7/753s.png index 64d576eca9b..bf40737fd06 100644 Binary files a/public/images/pokemon/icons/7/753s.png and b/public/images/pokemon/icons/7/753s.png differ diff --git a/public/images/pokemon/icons/7/754.png b/public/images/pokemon/icons/7/754.png index 7222195ce13..1f862af4b67 100644 Binary files a/public/images/pokemon/icons/7/754.png and b/public/images/pokemon/icons/7/754.png differ diff --git a/public/images/pokemon/icons/7/754s.png b/public/images/pokemon/icons/7/754s.png index 45c68303d29..f257f3f6a69 100644 Binary files a/public/images/pokemon/icons/7/754s.png and b/public/images/pokemon/icons/7/754s.png differ diff --git a/public/images/pokemon/icons/7/755.png b/public/images/pokemon/icons/7/755.png index 12728f2f0ac..18a51dd7c1a 100644 Binary files a/public/images/pokemon/icons/7/755.png and b/public/images/pokemon/icons/7/755.png differ diff --git a/public/images/pokemon/icons/7/755s.png b/public/images/pokemon/icons/7/755s.png index 588d2084074..b0e1b6555e3 100644 Binary files a/public/images/pokemon/icons/7/755s.png and b/public/images/pokemon/icons/7/755s.png differ diff --git a/public/images/pokemon/icons/7/756.png b/public/images/pokemon/icons/7/756.png index 1697ae89581..8adcbe71c5f 100644 Binary files a/public/images/pokemon/icons/7/756.png and b/public/images/pokemon/icons/7/756.png differ diff --git a/public/images/pokemon/icons/7/756s.png b/public/images/pokemon/icons/7/756s.png index c4bc6261113..2bfe067a3ac 100644 Binary files a/public/images/pokemon/icons/7/756s.png and b/public/images/pokemon/icons/7/756s.png differ diff --git a/public/images/pokemon/icons/7/757.png b/public/images/pokemon/icons/7/757.png index d3ba0d5bb03..51614fc464d 100644 Binary files a/public/images/pokemon/icons/7/757.png and b/public/images/pokemon/icons/7/757.png differ diff --git a/public/images/pokemon/icons/7/757s.png b/public/images/pokemon/icons/7/757s.png index f8041d16e50..3102819fe07 100644 Binary files a/public/images/pokemon/icons/7/757s.png and b/public/images/pokemon/icons/7/757s.png differ diff --git a/public/images/pokemon/icons/7/758.png b/public/images/pokemon/icons/7/758.png index 6bdd1a76692..2460a2361d9 100644 Binary files a/public/images/pokemon/icons/7/758.png and b/public/images/pokemon/icons/7/758.png differ diff --git a/public/images/pokemon/icons/7/758s.png b/public/images/pokemon/icons/7/758s.png index 0a1982fddd6..cde97c30fec 100644 Binary files a/public/images/pokemon/icons/7/758s.png and b/public/images/pokemon/icons/7/758s.png differ diff --git a/public/images/pokemon/icons/7/759.png b/public/images/pokemon/icons/7/759.png index 1801ecfaca3..411bdffcdf5 100644 Binary files a/public/images/pokemon/icons/7/759.png and b/public/images/pokemon/icons/7/759.png differ diff --git a/public/images/pokemon/icons/7/759s.png b/public/images/pokemon/icons/7/759s.png index 1c1e3ba835f..8e127920b8e 100644 Binary files a/public/images/pokemon/icons/7/759s.png and b/public/images/pokemon/icons/7/759s.png differ diff --git a/public/images/pokemon/icons/7/760.png b/public/images/pokemon/icons/7/760.png index 4fa2c2aac10..8636b22bd37 100644 Binary files a/public/images/pokemon/icons/7/760.png and b/public/images/pokemon/icons/7/760.png differ diff --git a/public/images/pokemon/icons/7/760s.png b/public/images/pokemon/icons/7/760s.png index 7adcc3905b1..73662d8ec98 100644 Binary files a/public/images/pokemon/icons/7/760s.png and b/public/images/pokemon/icons/7/760s.png differ diff --git a/public/images/pokemon/icons/7/761.png b/public/images/pokemon/icons/7/761.png index b6ba23905d8..97deb52fa17 100644 Binary files a/public/images/pokemon/icons/7/761.png and b/public/images/pokemon/icons/7/761.png differ diff --git a/public/images/pokemon/icons/7/761s.png b/public/images/pokemon/icons/7/761s.png index 889d58ed637..40a0a5259dc 100644 Binary files a/public/images/pokemon/icons/7/761s.png and b/public/images/pokemon/icons/7/761s.png differ diff --git a/public/images/pokemon/icons/7/762.png b/public/images/pokemon/icons/7/762.png index 027ea0ac59e..11215d5f675 100644 Binary files a/public/images/pokemon/icons/7/762.png and b/public/images/pokemon/icons/7/762.png differ diff --git a/public/images/pokemon/icons/7/762s.png b/public/images/pokemon/icons/7/762s.png index 8d967315009..2421ee088ba 100644 Binary files a/public/images/pokemon/icons/7/762s.png and b/public/images/pokemon/icons/7/762s.png differ diff --git a/public/images/pokemon/icons/7/763.png b/public/images/pokemon/icons/7/763.png index e5576649b74..d8b3b4e98bc 100644 Binary files a/public/images/pokemon/icons/7/763.png and b/public/images/pokemon/icons/7/763.png differ diff --git a/public/images/pokemon/icons/7/763s.png b/public/images/pokemon/icons/7/763s.png index a6bf7948146..c9795957a39 100644 Binary files a/public/images/pokemon/icons/7/763s.png and b/public/images/pokemon/icons/7/763s.png differ diff --git a/public/images/pokemon/icons/7/764.png b/public/images/pokemon/icons/7/764.png index 6aac015597a..68a4201143a 100644 Binary files a/public/images/pokemon/icons/7/764.png and b/public/images/pokemon/icons/7/764.png differ diff --git a/public/images/pokemon/icons/7/764s.png b/public/images/pokemon/icons/7/764s.png index 3f7ec35335e..1b487cf945c 100644 Binary files a/public/images/pokemon/icons/7/764s.png and b/public/images/pokemon/icons/7/764s.png differ diff --git a/public/images/pokemon/icons/7/765.png b/public/images/pokemon/icons/7/765.png index 9ca10db9b81..b98c7fb184f 100644 Binary files a/public/images/pokemon/icons/7/765.png and b/public/images/pokemon/icons/7/765.png differ diff --git a/public/images/pokemon/icons/7/765s.png b/public/images/pokemon/icons/7/765s.png index 38b69584d1d..945baf0e333 100644 Binary files a/public/images/pokemon/icons/7/765s.png and b/public/images/pokemon/icons/7/765s.png differ diff --git a/public/images/pokemon/icons/7/766.png b/public/images/pokemon/icons/7/766.png index bdb0791b379..156ec5183df 100644 Binary files a/public/images/pokemon/icons/7/766.png and b/public/images/pokemon/icons/7/766.png differ diff --git a/public/images/pokemon/icons/7/766s.png b/public/images/pokemon/icons/7/766s.png index 3e9b2de9293..11745868201 100644 Binary files a/public/images/pokemon/icons/7/766s.png and b/public/images/pokemon/icons/7/766s.png differ diff --git a/public/images/pokemon/icons/7/767.png b/public/images/pokemon/icons/7/767.png index 81917652f14..3de850bfef8 100644 Binary files a/public/images/pokemon/icons/7/767.png and b/public/images/pokemon/icons/7/767.png differ diff --git a/public/images/pokemon/icons/7/767s.png b/public/images/pokemon/icons/7/767s.png index 789dbc5dac6..7e35cd3d6bf 100644 Binary files a/public/images/pokemon/icons/7/767s.png and b/public/images/pokemon/icons/7/767s.png differ diff --git a/public/images/pokemon/icons/7/768.png b/public/images/pokemon/icons/7/768.png index adba3197a70..90e043ae20f 100644 Binary files a/public/images/pokemon/icons/7/768.png and b/public/images/pokemon/icons/7/768.png differ diff --git a/public/images/pokemon/icons/7/768s.png b/public/images/pokemon/icons/7/768s.png index d0b2498085c..3d89b373b00 100644 Binary files a/public/images/pokemon/icons/7/768s.png and b/public/images/pokemon/icons/7/768s.png differ diff --git a/public/images/pokemon/icons/7/769.png b/public/images/pokemon/icons/7/769.png index 0546f5391dd..9391ab19413 100644 Binary files a/public/images/pokemon/icons/7/769.png and b/public/images/pokemon/icons/7/769.png differ diff --git a/public/images/pokemon/icons/7/769s.png b/public/images/pokemon/icons/7/769s.png index 727ee6a042c..89578dc9b97 100644 Binary files a/public/images/pokemon/icons/7/769s.png and b/public/images/pokemon/icons/7/769s.png differ diff --git a/public/images/pokemon/icons/7/770.png b/public/images/pokemon/icons/7/770.png index c2e6c6f8403..c4391ea2462 100644 Binary files a/public/images/pokemon/icons/7/770.png and b/public/images/pokemon/icons/7/770.png differ diff --git a/public/images/pokemon/icons/7/770s.png b/public/images/pokemon/icons/7/770s.png index f06adb7baab..26789c0fa57 100644 Binary files a/public/images/pokemon/icons/7/770s.png and b/public/images/pokemon/icons/7/770s.png differ diff --git a/public/images/pokemon/icons/7/771.png b/public/images/pokemon/icons/7/771.png index 6b3a1785c40..851422216da 100644 Binary files a/public/images/pokemon/icons/7/771.png and b/public/images/pokemon/icons/7/771.png differ diff --git a/public/images/pokemon/icons/7/771s.png b/public/images/pokemon/icons/7/771s.png index a27ca2a0657..cd646109d6b 100644 Binary files a/public/images/pokemon/icons/7/771s.png and b/public/images/pokemon/icons/7/771s.png differ diff --git a/public/images/pokemon/icons/7/772.png b/public/images/pokemon/icons/7/772.png index 05d4d916cf6..3f5a88b8860 100644 Binary files a/public/images/pokemon/icons/7/772.png and b/public/images/pokemon/icons/7/772.png differ diff --git a/public/images/pokemon/icons/7/772s.png b/public/images/pokemon/icons/7/772s.png index 1b30d5e9733..376d0f62f5a 100644 Binary files a/public/images/pokemon/icons/7/772s.png and b/public/images/pokemon/icons/7/772s.png differ diff --git a/public/images/pokemon/icons/7/773-bug.png b/public/images/pokemon/icons/7/773-bug.png index 0c5b3a622df..b880a5f0098 100644 Binary files a/public/images/pokemon/icons/7/773-bug.png and b/public/images/pokemon/icons/7/773-bug.png differ diff --git a/public/images/pokemon/icons/7/773-dark.png b/public/images/pokemon/icons/7/773-dark.png index 15ac0c08307..23f659fb1be 100644 Binary files a/public/images/pokemon/icons/7/773-dark.png and b/public/images/pokemon/icons/7/773-dark.png differ diff --git a/public/images/pokemon/icons/7/773-dragon.png b/public/images/pokemon/icons/7/773-dragon.png index 7d7f80724ef..50851be2522 100644 Binary files a/public/images/pokemon/icons/7/773-dragon.png and b/public/images/pokemon/icons/7/773-dragon.png differ diff --git a/public/images/pokemon/icons/7/773-electric.png b/public/images/pokemon/icons/7/773-electric.png index 18ad943dab2..7209baa818e 100644 Binary files a/public/images/pokemon/icons/7/773-electric.png and b/public/images/pokemon/icons/7/773-electric.png differ diff --git a/public/images/pokemon/icons/7/773-fairy.png b/public/images/pokemon/icons/7/773-fairy.png index e76a42b231e..097b82f603f 100644 Binary files a/public/images/pokemon/icons/7/773-fairy.png and b/public/images/pokemon/icons/7/773-fairy.png differ diff --git a/public/images/pokemon/icons/7/773-fighting.png b/public/images/pokemon/icons/7/773-fighting.png index c30ca373bb3..9d2a6cfbeb9 100644 Binary files a/public/images/pokemon/icons/7/773-fighting.png and b/public/images/pokemon/icons/7/773-fighting.png differ diff --git a/public/images/pokemon/icons/7/773-fire.png b/public/images/pokemon/icons/7/773-fire.png index ca203648ddf..1b01e5d25d9 100644 Binary files a/public/images/pokemon/icons/7/773-fire.png and b/public/images/pokemon/icons/7/773-fire.png differ diff --git a/public/images/pokemon/icons/7/773-flying.png b/public/images/pokemon/icons/7/773-flying.png index 0c103f5ea72..1138a6105d1 100644 Binary files a/public/images/pokemon/icons/7/773-flying.png and b/public/images/pokemon/icons/7/773-flying.png differ diff --git a/public/images/pokemon/icons/7/773-ghost.png b/public/images/pokemon/icons/7/773-ghost.png index c0bb841a804..dc7be558094 100644 Binary files a/public/images/pokemon/icons/7/773-ghost.png and b/public/images/pokemon/icons/7/773-ghost.png differ diff --git a/public/images/pokemon/icons/7/773-grass.png b/public/images/pokemon/icons/7/773-grass.png index 36a70016f2e..7294055f6f4 100644 Binary files a/public/images/pokemon/icons/7/773-grass.png and b/public/images/pokemon/icons/7/773-grass.png differ diff --git a/public/images/pokemon/icons/7/773-ground.png b/public/images/pokemon/icons/7/773-ground.png index 0ff443a72c8..b761d0f202b 100644 Binary files a/public/images/pokemon/icons/7/773-ground.png and b/public/images/pokemon/icons/7/773-ground.png differ diff --git a/public/images/pokemon/icons/7/773-ice.png b/public/images/pokemon/icons/7/773-ice.png index ec43b1f3a21..0ea0e8c50d9 100644 Binary files a/public/images/pokemon/icons/7/773-ice.png and b/public/images/pokemon/icons/7/773-ice.png differ diff --git a/public/images/pokemon/icons/7/773-poison.png b/public/images/pokemon/icons/7/773-poison.png index 610fa7386c4..c7224c53b02 100644 Binary files a/public/images/pokemon/icons/7/773-poison.png and b/public/images/pokemon/icons/7/773-poison.png differ diff --git a/public/images/pokemon/icons/7/773-psychic.png b/public/images/pokemon/icons/7/773-psychic.png index cf76c60f4ef..9ec6cc3d3a4 100644 Binary files a/public/images/pokemon/icons/7/773-psychic.png and b/public/images/pokemon/icons/7/773-psychic.png differ diff --git a/public/images/pokemon/icons/7/773-rock.png b/public/images/pokemon/icons/7/773-rock.png index 24141755926..a2176499efc 100644 Binary files a/public/images/pokemon/icons/7/773-rock.png and b/public/images/pokemon/icons/7/773-rock.png differ diff --git a/public/images/pokemon/icons/7/773-steel.png b/public/images/pokemon/icons/7/773-steel.png index 4e45b3b44e3..fc935920299 100644 Binary files a/public/images/pokemon/icons/7/773-steel.png and b/public/images/pokemon/icons/7/773-steel.png differ diff --git a/public/images/pokemon/icons/7/773-water.png b/public/images/pokemon/icons/7/773-water.png index ad522b4252a..9876157de8c 100644 Binary files a/public/images/pokemon/icons/7/773-water.png and b/public/images/pokemon/icons/7/773-water.png differ diff --git a/public/images/pokemon/icons/7/773.png b/public/images/pokemon/icons/7/773.png index b0b11b75063..b18749c95c4 100644 Binary files a/public/images/pokemon/icons/7/773.png and b/public/images/pokemon/icons/7/773.png differ diff --git a/public/images/pokemon/icons/7/773s-bug.png b/public/images/pokemon/icons/7/773s-bug.png index 75cd3719ca9..34e0d057cbf 100644 Binary files a/public/images/pokemon/icons/7/773s-bug.png and b/public/images/pokemon/icons/7/773s-bug.png differ diff --git a/public/images/pokemon/icons/7/773s-dark.png b/public/images/pokemon/icons/7/773s-dark.png index 55ded245185..06f598e50c9 100644 Binary files a/public/images/pokemon/icons/7/773s-dark.png and b/public/images/pokemon/icons/7/773s-dark.png differ diff --git a/public/images/pokemon/icons/7/773s-dragon.png b/public/images/pokemon/icons/7/773s-dragon.png index 72b4273fdc2..925b29e0456 100644 Binary files a/public/images/pokemon/icons/7/773s-dragon.png and b/public/images/pokemon/icons/7/773s-dragon.png differ diff --git a/public/images/pokemon/icons/7/773s-electric.png b/public/images/pokemon/icons/7/773s-electric.png index 249568d7f79..8ed2d04e1e5 100644 Binary files a/public/images/pokemon/icons/7/773s-electric.png and b/public/images/pokemon/icons/7/773s-electric.png differ diff --git a/public/images/pokemon/icons/7/773s-fairy.png b/public/images/pokemon/icons/7/773s-fairy.png index e386378798f..8ba0dd26560 100644 Binary files a/public/images/pokemon/icons/7/773s-fairy.png and b/public/images/pokemon/icons/7/773s-fairy.png differ diff --git a/public/images/pokemon/icons/7/773s-fighting.png b/public/images/pokemon/icons/7/773s-fighting.png index a5ce3d32bdf..5c6fa27d86a 100644 Binary files a/public/images/pokemon/icons/7/773s-fighting.png and b/public/images/pokemon/icons/7/773s-fighting.png differ diff --git a/public/images/pokemon/icons/7/773s-fire.png b/public/images/pokemon/icons/7/773s-fire.png index 32552c02ca2..b474d26d6c8 100644 Binary files a/public/images/pokemon/icons/7/773s-fire.png and b/public/images/pokemon/icons/7/773s-fire.png differ diff --git a/public/images/pokemon/icons/7/773s-flying.png b/public/images/pokemon/icons/7/773s-flying.png index 3a39cfc6103..3f8a62ee15f 100644 Binary files a/public/images/pokemon/icons/7/773s-flying.png and b/public/images/pokemon/icons/7/773s-flying.png differ diff --git a/public/images/pokemon/icons/7/773s-ghost.png b/public/images/pokemon/icons/7/773s-ghost.png index 9b481f785cb..40240fb3603 100644 Binary files a/public/images/pokemon/icons/7/773s-ghost.png and b/public/images/pokemon/icons/7/773s-ghost.png differ diff --git a/public/images/pokemon/icons/7/773s-grass.png b/public/images/pokemon/icons/7/773s-grass.png index 5ae202eed55..18249ce0f6a 100644 Binary files a/public/images/pokemon/icons/7/773s-grass.png and b/public/images/pokemon/icons/7/773s-grass.png differ diff --git a/public/images/pokemon/icons/7/773s-ground.png b/public/images/pokemon/icons/7/773s-ground.png index 87ba2830cd2..a5ce7843e73 100644 Binary files a/public/images/pokemon/icons/7/773s-ground.png and b/public/images/pokemon/icons/7/773s-ground.png differ diff --git a/public/images/pokemon/icons/7/773s-ice.png b/public/images/pokemon/icons/7/773s-ice.png index 7a48d4e2ac2..fa7723241ca 100644 Binary files a/public/images/pokemon/icons/7/773s-ice.png and b/public/images/pokemon/icons/7/773s-ice.png differ diff --git a/public/images/pokemon/icons/7/773s-poison.png b/public/images/pokemon/icons/7/773s-poison.png index ad95629a8f0..d4a13115661 100644 Binary files a/public/images/pokemon/icons/7/773s-poison.png and b/public/images/pokemon/icons/7/773s-poison.png differ diff --git a/public/images/pokemon/icons/7/773s-psychic.png b/public/images/pokemon/icons/7/773s-psychic.png index dc05689bace..cd3da221e70 100644 Binary files a/public/images/pokemon/icons/7/773s-psychic.png and b/public/images/pokemon/icons/7/773s-psychic.png differ diff --git a/public/images/pokemon/icons/7/773s-rock.png b/public/images/pokemon/icons/7/773s-rock.png index d61559837c9..de7d37fc98a 100644 Binary files a/public/images/pokemon/icons/7/773s-rock.png and b/public/images/pokemon/icons/7/773s-rock.png differ diff --git a/public/images/pokemon/icons/7/773s-steel.png b/public/images/pokemon/icons/7/773s-steel.png index fd27db6fdf3..45c556bdef2 100644 Binary files a/public/images/pokemon/icons/7/773s-steel.png and b/public/images/pokemon/icons/7/773s-steel.png differ diff --git a/public/images/pokemon/icons/7/773s-water.png b/public/images/pokemon/icons/7/773s-water.png index 21e1eeb0170..7b43dd0d02f 100644 Binary files a/public/images/pokemon/icons/7/773s-water.png and b/public/images/pokemon/icons/7/773s-water.png differ diff --git a/public/images/pokemon/icons/7/773s.png b/public/images/pokemon/icons/7/773s.png index 5a89b25702f..98d2e0fc69c 100644 Binary files a/public/images/pokemon/icons/7/773s.png and b/public/images/pokemon/icons/7/773s.png differ diff --git a/public/images/pokemon/icons/7/774-blue-meteor.png b/public/images/pokemon/icons/7/774-blue-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-blue-meteor.png and b/public/images/pokemon/icons/7/774-blue-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-blue.png b/public/images/pokemon/icons/7/774-blue.png index 007bfca7255..ea1cd30b4dc 100644 Binary files a/public/images/pokemon/icons/7/774-blue.png and b/public/images/pokemon/icons/7/774-blue.png differ diff --git a/public/images/pokemon/icons/7/774-green-meteor.png b/public/images/pokemon/icons/7/774-green-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-green-meteor.png and b/public/images/pokemon/icons/7/774-green-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-green.png b/public/images/pokemon/icons/7/774-green.png index 3fb221d8efc..bc8fa59a98c 100644 Binary files a/public/images/pokemon/icons/7/774-green.png and b/public/images/pokemon/icons/7/774-green.png differ diff --git a/public/images/pokemon/icons/7/774-indigo-meteor.png b/public/images/pokemon/icons/7/774-indigo-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-indigo-meteor.png and b/public/images/pokemon/icons/7/774-indigo-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-indigo.png b/public/images/pokemon/icons/7/774-indigo.png index 7da68c0ec0d..67a0d94b973 100644 Binary files a/public/images/pokemon/icons/7/774-indigo.png and b/public/images/pokemon/icons/7/774-indigo.png differ diff --git a/public/images/pokemon/icons/7/774-orange-meteor.png b/public/images/pokemon/icons/7/774-orange-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-orange-meteor.png and b/public/images/pokemon/icons/7/774-orange-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-orange.png b/public/images/pokemon/icons/7/774-orange.png index 7c2f294a047..8bc7879fa96 100644 Binary files a/public/images/pokemon/icons/7/774-orange.png and b/public/images/pokemon/icons/7/774-orange.png differ diff --git a/public/images/pokemon/icons/7/774-red-meteor.png b/public/images/pokemon/icons/7/774-red-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-red-meteor.png and b/public/images/pokemon/icons/7/774-red-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-red.png b/public/images/pokemon/icons/7/774-red.png index d6f998bcaf1..f99cba48157 100644 Binary files a/public/images/pokemon/icons/7/774-red.png and b/public/images/pokemon/icons/7/774-red.png differ diff --git a/public/images/pokemon/icons/7/774-violet-meteor.png b/public/images/pokemon/icons/7/774-violet-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-violet-meteor.png and b/public/images/pokemon/icons/7/774-violet-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-violet.png b/public/images/pokemon/icons/7/774-violet.png index 18372f1463c..be39ebbae98 100644 Binary files a/public/images/pokemon/icons/7/774-violet.png and b/public/images/pokemon/icons/7/774-violet.png differ diff --git a/public/images/pokemon/icons/7/774-yellow-meteor.png b/public/images/pokemon/icons/7/774-yellow-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774-yellow-meteor.png and b/public/images/pokemon/icons/7/774-yellow-meteor.png differ diff --git a/public/images/pokemon/icons/7/774-yellow.png b/public/images/pokemon/icons/7/774-yellow.png index 6a2df810bf6..8fe6699bead 100644 Binary files a/public/images/pokemon/icons/7/774-yellow.png and b/public/images/pokemon/icons/7/774-yellow.png differ diff --git a/public/images/pokemon/icons/7/774.png b/public/images/pokemon/icons/7/774.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774.png and b/public/images/pokemon/icons/7/774.png differ diff --git a/public/images/pokemon/icons/7/774s-blue-meteor.png b/public/images/pokemon/icons/7/774s-blue-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-blue-meteor.png and b/public/images/pokemon/icons/7/774s-blue-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-blue.png b/public/images/pokemon/icons/7/774s-blue.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-blue.png and b/public/images/pokemon/icons/7/774s-blue.png differ diff --git a/public/images/pokemon/icons/7/774s-green-meteor.png b/public/images/pokemon/icons/7/774s-green-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-green-meteor.png and b/public/images/pokemon/icons/7/774s-green-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-green.png b/public/images/pokemon/icons/7/774s-green.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-green.png and b/public/images/pokemon/icons/7/774s-green.png differ diff --git a/public/images/pokemon/icons/7/774s-indigo-meteor.png b/public/images/pokemon/icons/7/774s-indigo-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-indigo-meteor.png and b/public/images/pokemon/icons/7/774s-indigo-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-indigo.png b/public/images/pokemon/icons/7/774s-indigo.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-indigo.png and b/public/images/pokemon/icons/7/774s-indigo.png differ diff --git a/public/images/pokemon/icons/7/774s-orange-meteor.png b/public/images/pokemon/icons/7/774s-orange-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-orange-meteor.png and b/public/images/pokemon/icons/7/774s-orange-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-orange.png b/public/images/pokemon/icons/7/774s-orange.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-orange.png and b/public/images/pokemon/icons/7/774s-orange.png differ diff --git a/public/images/pokemon/icons/7/774s-red-meteor.png b/public/images/pokemon/icons/7/774s-red-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-red-meteor.png and b/public/images/pokemon/icons/7/774s-red-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-red.png b/public/images/pokemon/icons/7/774s-red.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-red.png and b/public/images/pokemon/icons/7/774s-red.png differ diff --git a/public/images/pokemon/icons/7/774s-violet-meteor.png b/public/images/pokemon/icons/7/774s-violet-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-violet-meteor.png and b/public/images/pokemon/icons/7/774s-violet-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-violet.png b/public/images/pokemon/icons/7/774s-violet.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-violet.png and b/public/images/pokemon/icons/7/774s-violet.png differ diff --git a/public/images/pokemon/icons/7/774s-yellow-meteor.png b/public/images/pokemon/icons/7/774s-yellow-meteor.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s-yellow-meteor.png and b/public/images/pokemon/icons/7/774s-yellow-meteor.png differ diff --git a/public/images/pokemon/icons/7/774s-yellow.png b/public/images/pokemon/icons/7/774s-yellow.png index 6b97dc055ac..419737020a1 100644 Binary files a/public/images/pokemon/icons/7/774s-yellow.png and b/public/images/pokemon/icons/7/774s-yellow.png differ diff --git a/public/images/pokemon/icons/7/774s.png b/public/images/pokemon/icons/7/774s.png index e506fe3a3ce..930996b90e3 100644 Binary files a/public/images/pokemon/icons/7/774s.png and b/public/images/pokemon/icons/7/774s.png differ diff --git a/public/images/pokemon/icons/7/775.png b/public/images/pokemon/icons/7/775.png index a4733dc2a9b..91b5a1ed550 100644 Binary files a/public/images/pokemon/icons/7/775.png and b/public/images/pokemon/icons/7/775.png differ diff --git a/public/images/pokemon/icons/7/775s.png b/public/images/pokemon/icons/7/775s.png index 76cd18169b7..f04c2926e7b 100644 Binary files a/public/images/pokemon/icons/7/775s.png and b/public/images/pokemon/icons/7/775s.png differ diff --git a/public/images/pokemon/icons/7/776.png b/public/images/pokemon/icons/7/776.png index c6c0f24aafe..813b707b3d0 100644 Binary files a/public/images/pokemon/icons/7/776.png and b/public/images/pokemon/icons/7/776.png differ diff --git a/public/images/pokemon/icons/7/776s.png b/public/images/pokemon/icons/7/776s.png index 24fab972bb3..a8b4568e963 100644 Binary files a/public/images/pokemon/icons/7/776s.png and b/public/images/pokemon/icons/7/776s.png differ diff --git a/public/images/pokemon/icons/7/777.png b/public/images/pokemon/icons/7/777.png index a6d655d3f79..bb33b217842 100644 Binary files a/public/images/pokemon/icons/7/777.png and b/public/images/pokemon/icons/7/777.png differ diff --git a/public/images/pokemon/icons/7/777s.png b/public/images/pokemon/icons/7/777s.png index f33f3ff1750..57e917d3b1d 100644 Binary files a/public/images/pokemon/icons/7/777s.png and b/public/images/pokemon/icons/7/777s.png differ diff --git a/public/images/pokemon/icons/7/778-busted.png b/public/images/pokemon/icons/7/778-busted.png index 20bcc0176cd..2f8cf943109 100644 Binary files a/public/images/pokemon/icons/7/778-busted.png and b/public/images/pokemon/icons/7/778-busted.png differ diff --git a/public/images/pokemon/icons/7/778-disguised.png b/public/images/pokemon/icons/7/778-disguised.png index 6f66946e104..018da460aa0 100644 Binary files a/public/images/pokemon/icons/7/778-disguised.png and b/public/images/pokemon/icons/7/778-disguised.png differ diff --git a/public/images/pokemon/icons/7/778s-busted.png b/public/images/pokemon/icons/7/778s-busted.png index 97048167703..1f20a96cc3a 100644 Binary files a/public/images/pokemon/icons/7/778s-busted.png and b/public/images/pokemon/icons/7/778s-busted.png differ diff --git a/public/images/pokemon/icons/7/778s-disguised.png b/public/images/pokemon/icons/7/778s-disguised.png index 40260efb694..21eb0f5c491 100644 Binary files a/public/images/pokemon/icons/7/778s-disguised.png and b/public/images/pokemon/icons/7/778s-disguised.png differ diff --git a/public/images/pokemon/icons/7/779.png b/public/images/pokemon/icons/7/779.png index 738596b8c04..d9261d47643 100644 Binary files a/public/images/pokemon/icons/7/779.png and b/public/images/pokemon/icons/7/779.png differ diff --git a/public/images/pokemon/icons/7/779s.png b/public/images/pokemon/icons/7/779s.png index 32a661b953d..f39fd5848df 100644 Binary files a/public/images/pokemon/icons/7/779s.png and b/public/images/pokemon/icons/7/779s.png differ diff --git a/public/images/pokemon/icons/7/780.png b/public/images/pokemon/icons/7/780.png index 511a9c10d55..a73175ea870 100644 Binary files a/public/images/pokemon/icons/7/780.png and b/public/images/pokemon/icons/7/780.png differ diff --git a/public/images/pokemon/icons/7/780s.png b/public/images/pokemon/icons/7/780s.png index 525e9d25302..df2067e852e 100644 Binary files a/public/images/pokemon/icons/7/780s.png and b/public/images/pokemon/icons/7/780s.png differ diff --git a/public/images/pokemon/icons/7/781.png b/public/images/pokemon/icons/7/781.png index 5bc621975fb..a8dae02567a 100644 Binary files a/public/images/pokemon/icons/7/781.png and b/public/images/pokemon/icons/7/781.png differ diff --git a/public/images/pokemon/icons/7/781s.png b/public/images/pokemon/icons/7/781s.png index f6ec7caa8d4..899f0c049a7 100644 Binary files a/public/images/pokemon/icons/7/781s.png and b/public/images/pokemon/icons/7/781s.png differ diff --git a/public/images/pokemon/icons/7/782.png b/public/images/pokemon/icons/7/782.png index 87b8272ad67..83d389b17ee 100644 Binary files a/public/images/pokemon/icons/7/782.png and b/public/images/pokemon/icons/7/782.png differ diff --git a/public/images/pokemon/icons/7/782s.png b/public/images/pokemon/icons/7/782s.png index 14cce864aa0..7314dd0b742 100644 Binary files a/public/images/pokemon/icons/7/782s.png and b/public/images/pokemon/icons/7/782s.png differ diff --git a/public/images/pokemon/icons/7/783.png b/public/images/pokemon/icons/7/783.png index ef34104a4c1..1bbbd3536dd 100644 Binary files a/public/images/pokemon/icons/7/783.png and b/public/images/pokemon/icons/7/783.png differ diff --git a/public/images/pokemon/icons/7/783s.png b/public/images/pokemon/icons/7/783s.png index 1705179e1a0..f08144a9d39 100644 Binary files a/public/images/pokemon/icons/7/783s.png and b/public/images/pokemon/icons/7/783s.png differ diff --git a/public/images/pokemon/icons/7/784.png b/public/images/pokemon/icons/7/784.png index 387cbc7b0e2..3643bda1e3c 100644 Binary files a/public/images/pokemon/icons/7/784.png and b/public/images/pokemon/icons/7/784.png differ diff --git a/public/images/pokemon/icons/7/784s.png b/public/images/pokemon/icons/7/784s.png index 18f5903d4a3..70b0391a219 100644 Binary files a/public/images/pokemon/icons/7/784s.png and b/public/images/pokemon/icons/7/784s.png differ diff --git a/public/images/pokemon/icons/7/785.png b/public/images/pokemon/icons/7/785.png index bb5be7f46ee..7a2778a81c9 100644 Binary files a/public/images/pokemon/icons/7/785.png and b/public/images/pokemon/icons/7/785.png differ diff --git a/public/images/pokemon/icons/7/785s.png b/public/images/pokemon/icons/7/785s.png index 6a45edbb532..d434c9a2042 100644 Binary files a/public/images/pokemon/icons/7/785s.png and b/public/images/pokemon/icons/7/785s.png differ diff --git a/public/images/pokemon/icons/7/786.png b/public/images/pokemon/icons/7/786.png index 1269f08b5e4..1a0ce4245ea 100644 Binary files a/public/images/pokemon/icons/7/786.png and b/public/images/pokemon/icons/7/786.png differ diff --git a/public/images/pokemon/icons/7/786s.png b/public/images/pokemon/icons/7/786s.png index 747ca06c110..48b68d02e19 100644 Binary files a/public/images/pokemon/icons/7/786s.png and b/public/images/pokemon/icons/7/786s.png differ diff --git a/public/images/pokemon/icons/7/787.png b/public/images/pokemon/icons/7/787.png index e3183a5291f..362c7f7099d 100644 Binary files a/public/images/pokemon/icons/7/787.png and b/public/images/pokemon/icons/7/787.png differ diff --git a/public/images/pokemon/icons/7/787s.png b/public/images/pokemon/icons/7/787s.png index 642b5117edd..bde33acf7f1 100644 Binary files a/public/images/pokemon/icons/7/787s.png and b/public/images/pokemon/icons/7/787s.png differ diff --git a/public/images/pokemon/icons/7/788.png b/public/images/pokemon/icons/7/788.png index 2733e17253c..d2a7195fd87 100644 Binary files a/public/images/pokemon/icons/7/788.png and b/public/images/pokemon/icons/7/788.png differ diff --git a/public/images/pokemon/icons/7/788s.png b/public/images/pokemon/icons/7/788s.png index 79f00d37798..2fb129efca5 100644 Binary files a/public/images/pokemon/icons/7/788s.png and b/public/images/pokemon/icons/7/788s.png differ diff --git a/public/images/pokemon/icons/7/789.png b/public/images/pokemon/icons/7/789.png index c394bd340fe..350ce7364d7 100644 Binary files a/public/images/pokemon/icons/7/789.png and b/public/images/pokemon/icons/7/789.png differ diff --git a/public/images/pokemon/icons/7/789s.png b/public/images/pokemon/icons/7/789s.png index 8e98ebe2993..c2ca0762592 100644 Binary files a/public/images/pokemon/icons/7/789s.png and b/public/images/pokemon/icons/7/789s.png differ diff --git a/public/images/pokemon/icons/7/790.png b/public/images/pokemon/icons/7/790.png index a23ef2e38eb..95090b40a5a 100644 Binary files a/public/images/pokemon/icons/7/790.png and b/public/images/pokemon/icons/7/790.png differ diff --git a/public/images/pokemon/icons/7/790s.png b/public/images/pokemon/icons/7/790s.png index e2385d6d4e0..a298b1cc42f 100644 Binary files a/public/images/pokemon/icons/7/790s.png and b/public/images/pokemon/icons/7/790s.png differ diff --git a/public/images/pokemon/icons/7/791.png b/public/images/pokemon/icons/7/791.png index 8532b4df76b..0c2a10824a9 100644 Binary files a/public/images/pokemon/icons/7/791.png and b/public/images/pokemon/icons/7/791.png differ diff --git a/public/images/pokemon/icons/7/791s.png b/public/images/pokemon/icons/7/791s.png index 0b936ab7797..3f1dd74569e 100644 Binary files a/public/images/pokemon/icons/7/791s.png and b/public/images/pokemon/icons/7/791s.png differ diff --git a/public/images/pokemon/icons/7/792.png b/public/images/pokemon/icons/7/792.png index 3e7ca740b10..3a67984dfbf 100644 Binary files a/public/images/pokemon/icons/7/792.png and b/public/images/pokemon/icons/7/792.png differ diff --git a/public/images/pokemon/icons/7/792s.png b/public/images/pokemon/icons/7/792s.png index 00e3d49f03d..5e9603152d4 100644 Binary files a/public/images/pokemon/icons/7/792s.png and b/public/images/pokemon/icons/7/792s.png differ diff --git a/public/images/pokemon/icons/7/793.png b/public/images/pokemon/icons/7/793.png index 0249033bc43..f92835444dd 100644 Binary files a/public/images/pokemon/icons/7/793.png and b/public/images/pokemon/icons/7/793.png differ diff --git a/public/images/pokemon/icons/7/793s.png b/public/images/pokemon/icons/7/793s.png index 3b85a0cdf57..89f4d0aa3d2 100644 Binary files a/public/images/pokemon/icons/7/793s.png and b/public/images/pokemon/icons/7/793s.png differ diff --git a/public/images/pokemon/icons/7/794.png b/public/images/pokemon/icons/7/794.png index 21df2c2f48b..d7aa7df9847 100644 Binary files a/public/images/pokemon/icons/7/794.png and b/public/images/pokemon/icons/7/794.png differ diff --git a/public/images/pokemon/icons/7/794s.png b/public/images/pokemon/icons/7/794s.png index 5fbf8814d58..9f4e6f390f5 100644 Binary files a/public/images/pokemon/icons/7/794s.png and b/public/images/pokemon/icons/7/794s.png differ diff --git a/public/images/pokemon/icons/7/795.png b/public/images/pokemon/icons/7/795.png index dcbe3d38e3e..a67fc5326e2 100644 Binary files a/public/images/pokemon/icons/7/795.png and b/public/images/pokemon/icons/7/795.png differ diff --git a/public/images/pokemon/icons/7/795s.png b/public/images/pokemon/icons/7/795s.png index e2181cc24e2..3a7cedc5de9 100644 Binary files a/public/images/pokemon/icons/7/795s.png and b/public/images/pokemon/icons/7/795s.png differ diff --git a/public/images/pokemon/icons/7/796.png b/public/images/pokemon/icons/7/796.png index 16b9ecd6a71..ce7bd2ab582 100644 Binary files a/public/images/pokemon/icons/7/796.png and b/public/images/pokemon/icons/7/796.png differ diff --git a/public/images/pokemon/icons/7/796s.png b/public/images/pokemon/icons/7/796s.png index 4ae7e4a1796..642d1ef7b10 100644 Binary files a/public/images/pokemon/icons/7/796s.png and b/public/images/pokemon/icons/7/796s.png differ diff --git a/public/images/pokemon/icons/7/797.png b/public/images/pokemon/icons/7/797.png index 32a861ebf20..e107d1ca6fe 100644 Binary files a/public/images/pokemon/icons/7/797.png and b/public/images/pokemon/icons/7/797.png differ diff --git a/public/images/pokemon/icons/7/797s.png b/public/images/pokemon/icons/7/797s.png index 4293999b6eb..d00091e3218 100644 Binary files a/public/images/pokemon/icons/7/797s.png and b/public/images/pokemon/icons/7/797s.png differ diff --git a/public/images/pokemon/icons/7/798.png b/public/images/pokemon/icons/7/798.png index a1500af9b2f..4495100a452 100644 Binary files a/public/images/pokemon/icons/7/798.png and b/public/images/pokemon/icons/7/798.png differ diff --git a/public/images/pokemon/icons/7/798s.png b/public/images/pokemon/icons/7/798s.png index 53cfc79797c..7a5c9fd2212 100644 Binary files a/public/images/pokemon/icons/7/798s.png and b/public/images/pokemon/icons/7/798s.png differ diff --git a/public/images/pokemon/icons/7/799.png b/public/images/pokemon/icons/7/799.png index 0051602c1a0..0ae9c7b32d8 100644 Binary files a/public/images/pokemon/icons/7/799.png and b/public/images/pokemon/icons/7/799.png differ diff --git a/public/images/pokemon/icons/7/799s.png b/public/images/pokemon/icons/7/799s.png index 78999146c62..e38ebc3aedd 100644 Binary files a/public/images/pokemon/icons/7/799s.png and b/public/images/pokemon/icons/7/799s.png differ diff --git a/public/images/pokemon/icons/7/800-dawn-wings.png b/public/images/pokemon/icons/7/800-dawn-wings.png index 8ef7ee0540f..9d7192c15b0 100644 Binary files a/public/images/pokemon/icons/7/800-dawn-wings.png and b/public/images/pokemon/icons/7/800-dawn-wings.png differ diff --git a/public/images/pokemon/icons/7/800-dusk-mane.png b/public/images/pokemon/icons/7/800-dusk-mane.png index f7ff07b5f10..2526e34152c 100644 Binary files a/public/images/pokemon/icons/7/800-dusk-mane.png and b/public/images/pokemon/icons/7/800-dusk-mane.png differ diff --git a/public/images/pokemon/icons/7/800-ultra.png b/public/images/pokemon/icons/7/800-ultra.png index 85215a6f7e5..8eb4d45af80 100644 Binary files a/public/images/pokemon/icons/7/800-ultra.png and b/public/images/pokemon/icons/7/800-ultra.png differ diff --git a/public/images/pokemon/icons/7/800.png b/public/images/pokemon/icons/7/800.png index 924319bb10f..db0b2a2b70e 100644 Binary files a/public/images/pokemon/icons/7/800.png and b/public/images/pokemon/icons/7/800.png differ diff --git a/public/images/pokemon/icons/7/800s-dawn-wings.png b/public/images/pokemon/icons/7/800s-dawn-wings.png index 867389e897d..992f2011635 100644 Binary files a/public/images/pokemon/icons/7/800s-dawn-wings.png and b/public/images/pokemon/icons/7/800s-dawn-wings.png differ diff --git a/public/images/pokemon/icons/7/800s-dusk-mane.png b/public/images/pokemon/icons/7/800s-dusk-mane.png index 61e492922e5..d24b7c9eee5 100644 Binary files a/public/images/pokemon/icons/7/800s-dusk-mane.png and b/public/images/pokemon/icons/7/800s-dusk-mane.png differ diff --git a/public/images/pokemon/icons/7/800s-ultra.png b/public/images/pokemon/icons/7/800s-ultra.png index f71d3354561..af65bb47dca 100644 Binary files a/public/images/pokemon/icons/7/800s-ultra.png and b/public/images/pokemon/icons/7/800s-ultra.png differ diff --git a/public/images/pokemon/icons/7/800s.png b/public/images/pokemon/icons/7/800s.png index 4fda7467d01..8ec04fc1fee 100644 Binary files a/public/images/pokemon/icons/7/800s.png and b/public/images/pokemon/icons/7/800s.png differ diff --git a/public/images/pokemon/icons/7/801-original.png b/public/images/pokemon/icons/7/801-original.png index c19acaf01bb..c3a58577bd3 100644 Binary files a/public/images/pokemon/icons/7/801-original.png and b/public/images/pokemon/icons/7/801-original.png differ diff --git a/public/images/pokemon/icons/7/801.png b/public/images/pokemon/icons/7/801.png index 7a2ab25f596..c27f9de262f 100644 Binary files a/public/images/pokemon/icons/7/801.png and b/public/images/pokemon/icons/7/801.png differ diff --git a/public/images/pokemon/icons/7/801s-original.png b/public/images/pokemon/icons/7/801s-original.png index 81a36ed58a0..33433a82d1b 100644 Binary files a/public/images/pokemon/icons/7/801s-original.png and b/public/images/pokemon/icons/7/801s-original.png differ diff --git a/public/images/pokemon/icons/7/801s.png b/public/images/pokemon/icons/7/801s.png index 99a69418178..703e7b5dc9f 100644 Binary files a/public/images/pokemon/icons/7/801s.png and b/public/images/pokemon/icons/7/801s.png differ diff --git a/public/images/pokemon/icons/7/802-zenith.png b/public/images/pokemon/icons/7/802-zenith.png index 7e0fee2d609..b99709015f1 100644 Binary files a/public/images/pokemon/icons/7/802-zenith.png and b/public/images/pokemon/icons/7/802-zenith.png differ diff --git a/public/images/pokemon/icons/7/802.png b/public/images/pokemon/icons/7/802.png index 76b1a87aefe..10a22d322f4 100644 Binary files a/public/images/pokemon/icons/7/802.png and b/public/images/pokemon/icons/7/802.png differ diff --git a/public/images/pokemon/icons/7/802s-zenith.png b/public/images/pokemon/icons/7/802s-zenith.png index 7e0fee2d609..b99709015f1 100644 Binary files a/public/images/pokemon/icons/7/802s-zenith.png and b/public/images/pokemon/icons/7/802s-zenith.png differ diff --git a/public/images/pokemon/icons/7/802s.png b/public/images/pokemon/icons/7/802s.png index 7feaad69a42..42c3c3a9bba 100644 Binary files a/public/images/pokemon/icons/7/802s.png and b/public/images/pokemon/icons/7/802s.png differ diff --git a/public/images/pokemon/icons/7/803.png b/public/images/pokemon/icons/7/803.png index 2468c127a42..c6aef49153a 100644 Binary files a/public/images/pokemon/icons/7/803.png and b/public/images/pokemon/icons/7/803.png differ diff --git a/public/images/pokemon/icons/7/803s.png b/public/images/pokemon/icons/7/803s.png index 5ce7f03c0fc..dd1b27be880 100644 Binary files a/public/images/pokemon/icons/7/803s.png and b/public/images/pokemon/icons/7/803s.png differ diff --git a/public/images/pokemon/icons/7/804.png b/public/images/pokemon/icons/7/804.png index 4688c37991c..03ef3a51379 100644 Binary files a/public/images/pokemon/icons/7/804.png and b/public/images/pokemon/icons/7/804.png differ diff --git a/public/images/pokemon/icons/7/804s.png b/public/images/pokemon/icons/7/804s.png index 8ba9fe64bf6..c44102a0824 100644 Binary files a/public/images/pokemon/icons/7/804s.png and b/public/images/pokemon/icons/7/804s.png differ diff --git a/public/images/pokemon/icons/7/805.png b/public/images/pokemon/icons/7/805.png index 22cd2daf75e..c00c441cf9b 100644 Binary files a/public/images/pokemon/icons/7/805.png and b/public/images/pokemon/icons/7/805.png differ diff --git a/public/images/pokemon/icons/7/805s.png b/public/images/pokemon/icons/7/805s.png index f3d4dccb6fb..28d0cef764a 100644 Binary files a/public/images/pokemon/icons/7/805s.png and b/public/images/pokemon/icons/7/805s.png differ diff --git a/public/images/pokemon/icons/7/806.png b/public/images/pokemon/icons/7/806.png index a0683f9d4d5..4a8d1a88f65 100644 Binary files a/public/images/pokemon/icons/7/806.png and b/public/images/pokemon/icons/7/806.png differ diff --git a/public/images/pokemon/icons/7/806s.png b/public/images/pokemon/icons/7/806s.png index 6e776fac9c3..85372558d1b 100644 Binary files a/public/images/pokemon/icons/7/806s.png and b/public/images/pokemon/icons/7/806s.png differ diff --git a/public/images/pokemon/icons/7/807.png b/public/images/pokemon/icons/7/807.png index 01c49d0d464..fdddad495e9 100644 Binary files a/public/images/pokemon/icons/7/807.png and b/public/images/pokemon/icons/7/807.png differ diff --git a/public/images/pokemon/icons/7/807s.png b/public/images/pokemon/icons/7/807s.png index aab0e93e852..220cb51dd6d 100644 Binary files a/public/images/pokemon/icons/7/807s.png and b/public/images/pokemon/icons/7/807s.png differ diff --git a/public/images/pokemon/icons/7/808.png b/public/images/pokemon/icons/7/808.png index 025fafdaf9e..7ae1a48f401 100644 Binary files a/public/images/pokemon/icons/7/808.png and b/public/images/pokemon/icons/7/808.png differ diff --git a/public/images/pokemon/icons/7/808s.png b/public/images/pokemon/icons/7/808s.png index bf2c03c26ea..a02d3532aea 100644 Binary files a/public/images/pokemon/icons/7/808s.png and b/public/images/pokemon/icons/7/808s.png differ diff --git a/public/images/pokemon/icons/7/809-gigantamax.png b/public/images/pokemon/icons/7/809-gigantamax.png index 05052750919..d4bb89c1bcc 100644 Binary files a/public/images/pokemon/icons/7/809-gigantamax.png and b/public/images/pokemon/icons/7/809-gigantamax.png differ diff --git a/public/images/pokemon/icons/7/809.png b/public/images/pokemon/icons/7/809.png index bd77e966e8c..17d6491d364 100644 Binary files a/public/images/pokemon/icons/7/809.png and b/public/images/pokemon/icons/7/809.png differ diff --git a/public/images/pokemon/icons/7/809s-gigantamax.png b/public/images/pokemon/icons/7/809s-gigantamax.png index d841f418ff1..e6c48704bf5 100644 Binary files a/public/images/pokemon/icons/7/809s-gigantamax.png and b/public/images/pokemon/icons/7/809s-gigantamax.png differ diff --git a/public/images/pokemon/icons/7/809s.png b/public/images/pokemon/icons/7/809s.png index eb9819414a7..be53c6d9e37 100644 Binary files a/public/images/pokemon/icons/7/809s.png and b/public/images/pokemon/icons/7/809s.png differ diff --git a/public/images/pokemon/icons/8/4052.png b/public/images/pokemon/icons/8/4052.png index 6cde27bbc76..85153a73486 100644 Binary files a/public/images/pokemon/icons/8/4052.png and b/public/images/pokemon/icons/8/4052.png differ diff --git a/public/images/pokemon/icons/8/4052s.png b/public/images/pokemon/icons/8/4052s.png index 7f6235835be..225bd46b654 100644 Binary files a/public/images/pokemon/icons/8/4052s.png and b/public/images/pokemon/icons/8/4052s.png differ diff --git a/public/images/pokemon/icons/8/4077.png b/public/images/pokemon/icons/8/4077.png index d72877a5cd8..dd584ca70bf 100644 Binary files a/public/images/pokemon/icons/8/4077.png and b/public/images/pokemon/icons/8/4077.png differ diff --git a/public/images/pokemon/icons/8/4077s.png b/public/images/pokemon/icons/8/4077s.png index 3b1a57ecbd6..fe699781dfd 100644 Binary files a/public/images/pokemon/icons/8/4077s.png and b/public/images/pokemon/icons/8/4077s.png differ diff --git a/public/images/pokemon/icons/8/4078.png b/public/images/pokemon/icons/8/4078.png index 063d2c2b525..a436b9b9e2b 100644 Binary files a/public/images/pokemon/icons/8/4078.png and b/public/images/pokemon/icons/8/4078.png differ diff --git a/public/images/pokemon/icons/8/4078s.png b/public/images/pokemon/icons/8/4078s.png index 536c47548ff..1fb4f15a822 100644 Binary files a/public/images/pokemon/icons/8/4078s.png and b/public/images/pokemon/icons/8/4078s.png differ diff --git a/public/images/pokemon/icons/8/4079.png b/public/images/pokemon/icons/8/4079.png index c9cef6cc16f..555c265fed6 100644 Binary files a/public/images/pokemon/icons/8/4079.png and b/public/images/pokemon/icons/8/4079.png differ diff --git a/public/images/pokemon/icons/8/4079s.png b/public/images/pokemon/icons/8/4079s.png index 34ed2d26687..0666848cb20 100644 Binary files a/public/images/pokemon/icons/8/4079s.png and b/public/images/pokemon/icons/8/4079s.png differ diff --git a/public/images/pokemon/icons/8/4080.png b/public/images/pokemon/icons/8/4080.png index f89081f4720..9b6ed0cfcef 100644 Binary files a/public/images/pokemon/icons/8/4080.png and b/public/images/pokemon/icons/8/4080.png differ diff --git a/public/images/pokemon/icons/8/4080s.png b/public/images/pokemon/icons/8/4080s.png index 9e16903f9a2..34dd146c55d 100644 Binary files a/public/images/pokemon/icons/8/4080s.png and b/public/images/pokemon/icons/8/4080s.png differ diff --git a/public/images/pokemon/icons/8/4083.png b/public/images/pokemon/icons/8/4083.png index ab9dadf062b..f7bd32b93b4 100644 Binary files a/public/images/pokemon/icons/8/4083.png and b/public/images/pokemon/icons/8/4083.png differ diff --git a/public/images/pokemon/icons/8/4083s.png b/public/images/pokemon/icons/8/4083s.png index 198257c58b9..4170accd0ec 100644 Binary files a/public/images/pokemon/icons/8/4083s.png and b/public/images/pokemon/icons/8/4083s.png differ diff --git a/public/images/pokemon/icons/8/4110.png b/public/images/pokemon/icons/8/4110.png index bcd324faa48..014ee9f8320 100644 Binary files a/public/images/pokemon/icons/8/4110.png and b/public/images/pokemon/icons/8/4110.png differ diff --git a/public/images/pokemon/icons/8/4110s.png b/public/images/pokemon/icons/8/4110s.png index 88166cdfb4c..07199289827 100644 Binary files a/public/images/pokemon/icons/8/4110s.png and b/public/images/pokemon/icons/8/4110s.png differ diff --git a/public/images/pokemon/icons/8/4122.png b/public/images/pokemon/icons/8/4122.png index b89ee5dfc66..5cfc48c8ce2 100644 Binary files a/public/images/pokemon/icons/8/4122.png and b/public/images/pokemon/icons/8/4122.png differ diff --git a/public/images/pokemon/icons/8/4122s.png b/public/images/pokemon/icons/8/4122s.png index 6cb77320020..2ef1f75641f 100644 Binary files a/public/images/pokemon/icons/8/4122s.png and b/public/images/pokemon/icons/8/4122s.png differ diff --git a/public/images/pokemon/icons/8/4144.png b/public/images/pokemon/icons/8/4144.png index 19e16130d58..affb0e5f3fb 100644 Binary files a/public/images/pokemon/icons/8/4144.png and b/public/images/pokemon/icons/8/4144.png differ diff --git a/public/images/pokemon/icons/8/4144s.png b/public/images/pokemon/icons/8/4144s.png index fc5c8239474..408debee42d 100644 Binary files a/public/images/pokemon/icons/8/4144s.png and b/public/images/pokemon/icons/8/4144s.png differ diff --git a/public/images/pokemon/icons/8/4145.png b/public/images/pokemon/icons/8/4145.png index bb4c423a2f9..c89904e1862 100644 Binary files a/public/images/pokemon/icons/8/4145.png and b/public/images/pokemon/icons/8/4145.png differ diff --git a/public/images/pokemon/icons/8/4145s.png b/public/images/pokemon/icons/8/4145s.png index 443474c07ee..fc08e2da47c 100644 Binary files a/public/images/pokemon/icons/8/4145s.png and b/public/images/pokemon/icons/8/4145s.png differ diff --git a/public/images/pokemon/icons/8/4146.png b/public/images/pokemon/icons/8/4146.png index 62e2cbd0dc0..62b6893260b 100644 Binary files a/public/images/pokemon/icons/8/4146.png and b/public/images/pokemon/icons/8/4146.png differ diff --git a/public/images/pokemon/icons/8/4146s.png b/public/images/pokemon/icons/8/4146s.png index 58ed2acc9b7..5155cb0ee9f 100644 Binary files a/public/images/pokemon/icons/8/4146s.png and b/public/images/pokemon/icons/8/4146s.png differ diff --git a/public/images/pokemon/icons/8/4199.png b/public/images/pokemon/icons/8/4199.png index f1c51894d23..03dee0980ec 100644 Binary files a/public/images/pokemon/icons/8/4199.png and b/public/images/pokemon/icons/8/4199.png differ diff --git a/public/images/pokemon/icons/8/4199s.png b/public/images/pokemon/icons/8/4199s.png index b20cedb6627..046123ed91d 100644 Binary files a/public/images/pokemon/icons/8/4199s.png and b/public/images/pokemon/icons/8/4199s.png differ diff --git a/public/images/pokemon/icons/8/4222.png b/public/images/pokemon/icons/8/4222.png index 93f82507bd9..df94682c566 100644 Binary files a/public/images/pokemon/icons/8/4222.png and b/public/images/pokemon/icons/8/4222.png differ diff --git a/public/images/pokemon/icons/8/4222s.png b/public/images/pokemon/icons/8/4222s.png index d95b555959f..95387297037 100644 Binary files a/public/images/pokemon/icons/8/4222s.png and b/public/images/pokemon/icons/8/4222s.png differ diff --git a/public/images/pokemon/icons/8/4263.png b/public/images/pokemon/icons/8/4263.png index 69acda7671e..3e0e41b6e0a 100644 Binary files a/public/images/pokemon/icons/8/4263.png and b/public/images/pokemon/icons/8/4263.png differ diff --git a/public/images/pokemon/icons/8/4263s.png b/public/images/pokemon/icons/8/4263s.png index bd6d68e11aa..f8a5503b6ea 100644 Binary files a/public/images/pokemon/icons/8/4263s.png and b/public/images/pokemon/icons/8/4263s.png differ diff --git a/public/images/pokemon/icons/8/4264.png b/public/images/pokemon/icons/8/4264.png index 8f93d0d7fbc..27d7d4bad87 100644 Binary files a/public/images/pokemon/icons/8/4264.png and b/public/images/pokemon/icons/8/4264.png differ diff --git a/public/images/pokemon/icons/8/4264s.png b/public/images/pokemon/icons/8/4264s.png index 2fd0c461488..5511821f764 100644 Binary files a/public/images/pokemon/icons/8/4264s.png and b/public/images/pokemon/icons/8/4264s.png differ diff --git a/public/images/pokemon/icons/8/4554.png b/public/images/pokemon/icons/8/4554.png index 3df7688e03e..498278241b6 100644 Binary files a/public/images/pokemon/icons/8/4554.png and b/public/images/pokemon/icons/8/4554.png differ diff --git a/public/images/pokemon/icons/8/4554s.png b/public/images/pokemon/icons/8/4554s.png index 76cfaf558e6..b06318b512c 100644 Binary files a/public/images/pokemon/icons/8/4554s.png and b/public/images/pokemon/icons/8/4554s.png differ diff --git a/public/images/pokemon/icons/8/4555-zen.png b/public/images/pokemon/icons/8/4555-zen.png index 3ddc77e0cd3..ee772c7b19d 100644 Binary files a/public/images/pokemon/icons/8/4555-zen.png and b/public/images/pokemon/icons/8/4555-zen.png differ diff --git a/public/images/pokemon/icons/8/4555.png b/public/images/pokemon/icons/8/4555.png index 948e91049f3..791a5606d0f 100644 Binary files a/public/images/pokemon/icons/8/4555.png and b/public/images/pokemon/icons/8/4555.png differ diff --git a/public/images/pokemon/icons/8/4555s-zen.png b/public/images/pokemon/icons/8/4555s-zen.png index ebf564d4c12..6e7ceaad0f6 100644 Binary files a/public/images/pokemon/icons/8/4555s-zen.png and b/public/images/pokemon/icons/8/4555s-zen.png differ diff --git a/public/images/pokemon/icons/8/4555s.png b/public/images/pokemon/icons/8/4555s.png index 6e7c3eabc48..6f60deeee28 100644 Binary files a/public/images/pokemon/icons/8/4555s.png and b/public/images/pokemon/icons/8/4555s.png differ diff --git a/public/images/pokemon/icons/8/4562.png b/public/images/pokemon/icons/8/4562.png index b80e2630aae..74a79a2942b 100644 Binary files a/public/images/pokemon/icons/8/4562.png and b/public/images/pokemon/icons/8/4562.png differ diff --git a/public/images/pokemon/icons/8/4562s.png b/public/images/pokemon/icons/8/4562s.png index c46507d4e08..0f94615f9c9 100644 Binary files a/public/images/pokemon/icons/8/4562s.png and b/public/images/pokemon/icons/8/4562s.png differ diff --git a/public/images/pokemon/icons/8/4618.png b/public/images/pokemon/icons/8/4618.png index e5f81014e6f..4d1d9f84375 100644 Binary files a/public/images/pokemon/icons/8/4618.png and b/public/images/pokemon/icons/8/4618.png differ diff --git a/public/images/pokemon/icons/8/4618s.png b/public/images/pokemon/icons/8/4618s.png index b5e3ad617a4..a01d99f9fa8 100644 Binary files a/public/images/pokemon/icons/8/4618s.png and b/public/images/pokemon/icons/8/4618s.png differ diff --git a/public/images/pokemon/icons/8/6058.png b/public/images/pokemon/icons/8/6058.png index 410c172f62f..25ba74a19b1 100644 Binary files a/public/images/pokemon/icons/8/6058.png and b/public/images/pokemon/icons/8/6058.png differ diff --git a/public/images/pokemon/icons/8/6058s.png b/public/images/pokemon/icons/8/6058s.png index b11775dc4e5..85ba60e58f5 100644 Binary files a/public/images/pokemon/icons/8/6058s.png and b/public/images/pokemon/icons/8/6058s.png differ diff --git a/public/images/pokemon/icons/8/6059.png b/public/images/pokemon/icons/8/6059.png index 1c5e047fc87..d548e10df08 100644 Binary files a/public/images/pokemon/icons/8/6059.png and b/public/images/pokemon/icons/8/6059.png differ diff --git a/public/images/pokemon/icons/8/6059s.png b/public/images/pokemon/icons/8/6059s.png index 7cffe42def1..65bebcbecf5 100644 Binary files a/public/images/pokemon/icons/8/6059s.png and b/public/images/pokemon/icons/8/6059s.png differ diff --git a/public/images/pokemon/icons/8/6100.png b/public/images/pokemon/icons/8/6100.png index 88b3db7968d..070f8d2970f 100644 Binary files a/public/images/pokemon/icons/8/6100.png and b/public/images/pokemon/icons/8/6100.png differ diff --git a/public/images/pokemon/icons/8/6100s.png b/public/images/pokemon/icons/8/6100s.png index 6d304b4e633..6adf4ceb00b 100644 Binary files a/public/images/pokemon/icons/8/6100s.png and b/public/images/pokemon/icons/8/6100s.png differ diff --git a/public/images/pokemon/icons/8/6101.png b/public/images/pokemon/icons/8/6101.png index 7b1ccdb3863..42ec2b358dc 100644 Binary files a/public/images/pokemon/icons/8/6101.png and b/public/images/pokemon/icons/8/6101.png differ diff --git a/public/images/pokemon/icons/8/6101s.png b/public/images/pokemon/icons/8/6101s.png index f9d589b27a9..0b8c4d4d1bc 100644 Binary files a/public/images/pokemon/icons/8/6101s.png and b/public/images/pokemon/icons/8/6101s.png differ diff --git a/public/images/pokemon/icons/8/6157.png b/public/images/pokemon/icons/8/6157.png index 7b1f77470a3..40c2491ca49 100644 Binary files a/public/images/pokemon/icons/8/6157.png and b/public/images/pokemon/icons/8/6157.png differ diff --git a/public/images/pokemon/icons/8/6157s.png b/public/images/pokemon/icons/8/6157s.png index b473bb46d66..7f6063b7ea0 100644 Binary files a/public/images/pokemon/icons/8/6157s.png and b/public/images/pokemon/icons/8/6157s.png differ diff --git a/public/images/pokemon/icons/8/6211.png b/public/images/pokemon/icons/8/6211.png index 118302c9715..0696fe7b9ee 100644 Binary files a/public/images/pokemon/icons/8/6211.png and b/public/images/pokemon/icons/8/6211.png differ diff --git a/public/images/pokemon/icons/8/6211s.png b/public/images/pokemon/icons/8/6211s.png index e15a2f09116..c62e1e8769f 100644 Binary files a/public/images/pokemon/icons/8/6211s.png and b/public/images/pokemon/icons/8/6211s.png differ diff --git a/public/images/pokemon/icons/8/6215.png b/public/images/pokemon/icons/8/6215.png index b08a4d1f879..4686eac6c56 100644 Binary files a/public/images/pokemon/icons/8/6215.png and b/public/images/pokemon/icons/8/6215.png differ diff --git a/public/images/pokemon/icons/8/6215s.png b/public/images/pokemon/icons/8/6215s.png index 5427002b9a5..e1b19d7bda5 100644 Binary files a/public/images/pokemon/icons/8/6215s.png and b/public/images/pokemon/icons/8/6215s.png differ diff --git a/public/images/pokemon/icons/8/6503.png b/public/images/pokemon/icons/8/6503.png index 71e3e7eb232..1c669deda4e 100644 Binary files a/public/images/pokemon/icons/8/6503.png and b/public/images/pokemon/icons/8/6503.png differ diff --git a/public/images/pokemon/icons/8/6503s.png b/public/images/pokemon/icons/8/6503s.png index efaa4245088..64f4740c239 100644 Binary files a/public/images/pokemon/icons/8/6503s.png and b/public/images/pokemon/icons/8/6503s.png differ diff --git a/public/images/pokemon/icons/8/6549.png b/public/images/pokemon/icons/8/6549.png index 0ea475882b0..639c557e0da 100644 Binary files a/public/images/pokemon/icons/8/6549.png and b/public/images/pokemon/icons/8/6549.png differ diff --git a/public/images/pokemon/icons/8/6549s.png b/public/images/pokemon/icons/8/6549s.png index 91be5510a47..7d1e5a23af9 100644 Binary files a/public/images/pokemon/icons/8/6549s.png and b/public/images/pokemon/icons/8/6549s.png differ diff --git a/public/images/pokemon/icons/8/6570.png b/public/images/pokemon/icons/8/6570.png index 1b6be6ead4c..7008b8c71c7 100644 Binary files a/public/images/pokemon/icons/8/6570.png and b/public/images/pokemon/icons/8/6570.png differ diff --git a/public/images/pokemon/icons/8/6570s.png b/public/images/pokemon/icons/8/6570s.png index 07c92b031ba..87f20a514da 100644 Binary files a/public/images/pokemon/icons/8/6570s.png and b/public/images/pokemon/icons/8/6570s.png differ diff --git a/public/images/pokemon/icons/8/6571.png b/public/images/pokemon/icons/8/6571.png index 808489a7afe..9b756a2f322 100644 Binary files a/public/images/pokemon/icons/8/6571.png and b/public/images/pokemon/icons/8/6571.png differ diff --git a/public/images/pokemon/icons/8/6571s.png b/public/images/pokemon/icons/8/6571s.png index 104e76c56b9..b58a848432d 100644 Binary files a/public/images/pokemon/icons/8/6571s.png and b/public/images/pokemon/icons/8/6571s.png differ diff --git a/public/images/pokemon/icons/8/6628.png b/public/images/pokemon/icons/8/6628.png index 2ba7c0aa4e0..5932459f3f8 100644 Binary files a/public/images/pokemon/icons/8/6628.png and b/public/images/pokemon/icons/8/6628.png differ diff --git a/public/images/pokemon/icons/8/6628s.png b/public/images/pokemon/icons/8/6628s.png index 4c137c34961..86e520d2d7e 100644 Binary files a/public/images/pokemon/icons/8/6628s.png and b/public/images/pokemon/icons/8/6628s.png differ diff --git a/public/images/pokemon/icons/8/6705.png b/public/images/pokemon/icons/8/6705.png index 15225e34112..b27e06e96a5 100644 Binary files a/public/images/pokemon/icons/8/6705.png and b/public/images/pokemon/icons/8/6705.png differ diff --git a/public/images/pokemon/icons/8/6705s.png b/public/images/pokemon/icons/8/6705s.png index 9fe4bde1b32..cfcd81b107b 100644 Binary files a/public/images/pokemon/icons/8/6705s.png and b/public/images/pokemon/icons/8/6705s.png differ diff --git a/public/images/pokemon/icons/8/6706.png b/public/images/pokemon/icons/8/6706.png index 9fe9871c884..6732daac76b 100644 Binary files a/public/images/pokemon/icons/8/6706.png and b/public/images/pokemon/icons/8/6706.png differ diff --git a/public/images/pokemon/icons/8/6706s.png b/public/images/pokemon/icons/8/6706s.png index cca81f50d30..7a2081a5310 100644 Binary files a/public/images/pokemon/icons/8/6706s.png and b/public/images/pokemon/icons/8/6706s.png differ diff --git a/public/images/pokemon/icons/8/6713.png b/public/images/pokemon/icons/8/6713.png index 2694131b1b1..ce31d9c9d92 100644 Binary files a/public/images/pokemon/icons/8/6713.png and b/public/images/pokemon/icons/8/6713.png differ diff --git a/public/images/pokemon/icons/8/6713s.png b/public/images/pokemon/icons/8/6713s.png index 7a83bb3420f..1bebf2ec6da 100644 Binary files a/public/images/pokemon/icons/8/6713s.png and b/public/images/pokemon/icons/8/6713s.png differ diff --git a/public/images/pokemon/icons/8/6724.png b/public/images/pokemon/icons/8/6724.png index ae85bd601c5..6df7c0cb3a7 100644 Binary files a/public/images/pokemon/icons/8/6724.png and b/public/images/pokemon/icons/8/6724.png differ diff --git a/public/images/pokemon/icons/8/6724s.png b/public/images/pokemon/icons/8/6724s.png index 1ed31daf9ab..d584224e881 100644 Binary files a/public/images/pokemon/icons/8/6724s.png and b/public/images/pokemon/icons/8/6724s.png differ diff --git a/public/images/pokemon/icons/8/716-active.png b/public/images/pokemon/icons/8/716-active.png index 1cf8dfa0ce7..9d3378f1490 100644 Binary files a/public/images/pokemon/icons/8/716-active.png and b/public/images/pokemon/icons/8/716-active.png differ diff --git a/public/images/pokemon/icons/8/716s-active.png b/public/images/pokemon/icons/8/716s-active.png index 342af7e2399..949a1669b91 100644 Binary files a/public/images/pokemon/icons/8/716s-active.png and b/public/images/pokemon/icons/8/716s-active.png differ diff --git a/public/images/pokemon/icons/8/810.png b/public/images/pokemon/icons/8/810.png index 608d3c35ba4..bd2d1c810d0 100644 Binary files a/public/images/pokemon/icons/8/810.png and b/public/images/pokemon/icons/8/810.png differ diff --git a/public/images/pokemon/icons/8/810s.png b/public/images/pokemon/icons/8/810s.png index 468eb2740e4..ca017158440 100644 Binary files a/public/images/pokemon/icons/8/810s.png and b/public/images/pokemon/icons/8/810s.png differ diff --git a/public/images/pokemon/icons/8/811.png b/public/images/pokemon/icons/8/811.png index 0115fcdc2c7..747580b95e8 100644 Binary files a/public/images/pokemon/icons/8/811.png and b/public/images/pokemon/icons/8/811.png differ diff --git a/public/images/pokemon/icons/8/811s.png b/public/images/pokemon/icons/8/811s.png index 0f896c08d0f..cbd6ebe4ae7 100644 Binary files a/public/images/pokemon/icons/8/811s.png and b/public/images/pokemon/icons/8/811s.png differ diff --git a/public/images/pokemon/icons/8/812-gigantamax.png b/public/images/pokemon/icons/8/812-gigantamax.png index fe9e09f0a8d..a256fec5c09 100644 Binary files a/public/images/pokemon/icons/8/812-gigantamax.png and b/public/images/pokemon/icons/8/812-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/812.png b/public/images/pokemon/icons/8/812.png index aa4a28182d6..8a6e16a61ad 100644 Binary files a/public/images/pokemon/icons/8/812.png and b/public/images/pokemon/icons/8/812.png differ diff --git a/public/images/pokemon/icons/8/812s-gigantamax.png b/public/images/pokemon/icons/8/812s-gigantamax.png index cb9eea56296..2d58a193657 100644 Binary files a/public/images/pokemon/icons/8/812s-gigantamax.png and b/public/images/pokemon/icons/8/812s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/812s.png b/public/images/pokemon/icons/8/812s.png index e305ea05d5d..80cdb958bd5 100644 Binary files a/public/images/pokemon/icons/8/812s.png and b/public/images/pokemon/icons/8/812s.png differ diff --git a/public/images/pokemon/icons/8/813.png b/public/images/pokemon/icons/8/813.png index 8791ff7eacc..161e3f60508 100644 Binary files a/public/images/pokemon/icons/8/813.png and b/public/images/pokemon/icons/8/813.png differ diff --git a/public/images/pokemon/icons/8/813s.png b/public/images/pokemon/icons/8/813s.png index 4b4f7cb21bb..914c11ebcfa 100644 Binary files a/public/images/pokemon/icons/8/813s.png and b/public/images/pokemon/icons/8/813s.png differ diff --git a/public/images/pokemon/icons/8/814.png b/public/images/pokemon/icons/8/814.png index 8f01ffcc679..1c6374d2b7b 100644 Binary files a/public/images/pokemon/icons/8/814.png and b/public/images/pokemon/icons/8/814.png differ diff --git a/public/images/pokemon/icons/8/814s.png b/public/images/pokemon/icons/8/814s.png index bfc38cdddec..41d6c732d9c 100644 Binary files a/public/images/pokemon/icons/8/814s.png and b/public/images/pokemon/icons/8/814s.png differ diff --git a/public/images/pokemon/icons/8/815-gigantamax.png b/public/images/pokemon/icons/8/815-gigantamax.png index dbf5e645a09..afa019898b6 100644 Binary files a/public/images/pokemon/icons/8/815-gigantamax.png and b/public/images/pokemon/icons/8/815-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/815.png b/public/images/pokemon/icons/8/815.png index 5bf67790cc9..5dfe09f2440 100644 Binary files a/public/images/pokemon/icons/8/815.png and b/public/images/pokemon/icons/8/815.png differ diff --git a/public/images/pokemon/icons/8/815s-gigantamax.png b/public/images/pokemon/icons/8/815s-gigantamax.png index 17621be48d3..b53db5ed195 100644 Binary files a/public/images/pokemon/icons/8/815s-gigantamax.png and b/public/images/pokemon/icons/8/815s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/815s.png b/public/images/pokemon/icons/8/815s.png index b5190c77068..4dc631ee8dd 100644 Binary files a/public/images/pokemon/icons/8/815s.png and b/public/images/pokemon/icons/8/815s.png differ diff --git a/public/images/pokemon/icons/8/816.png b/public/images/pokemon/icons/8/816.png index 36f331d7aa3..cd1bf869aaf 100644 Binary files a/public/images/pokemon/icons/8/816.png and b/public/images/pokemon/icons/8/816.png differ diff --git a/public/images/pokemon/icons/8/816s.png b/public/images/pokemon/icons/8/816s.png index 828fb95979d..5b828b29f47 100644 Binary files a/public/images/pokemon/icons/8/816s.png and b/public/images/pokemon/icons/8/816s.png differ diff --git a/public/images/pokemon/icons/8/817.png b/public/images/pokemon/icons/8/817.png index 46edb341059..edc662570a2 100644 Binary files a/public/images/pokemon/icons/8/817.png and b/public/images/pokemon/icons/8/817.png differ diff --git a/public/images/pokemon/icons/8/817s.png b/public/images/pokemon/icons/8/817s.png index f34dda007c3..ae7f45ce4f4 100644 Binary files a/public/images/pokemon/icons/8/817s.png and b/public/images/pokemon/icons/8/817s.png differ diff --git a/public/images/pokemon/icons/8/818-gigantamax.png b/public/images/pokemon/icons/8/818-gigantamax.png index 8049f682137..e75b80c56c5 100644 Binary files a/public/images/pokemon/icons/8/818-gigantamax.png and b/public/images/pokemon/icons/8/818-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/818.png b/public/images/pokemon/icons/8/818.png index 7edb90eeb00..41d57c1e547 100644 Binary files a/public/images/pokemon/icons/8/818.png and b/public/images/pokemon/icons/8/818.png differ diff --git a/public/images/pokemon/icons/8/818s-gigantamax.png b/public/images/pokemon/icons/8/818s-gigantamax.png index fc4abb92bea..a432488fb5b 100644 Binary files a/public/images/pokemon/icons/8/818s-gigantamax.png and b/public/images/pokemon/icons/8/818s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/818s.png b/public/images/pokemon/icons/8/818s.png index 807c8fd6e3f..fadd6120c67 100644 Binary files a/public/images/pokemon/icons/8/818s.png and b/public/images/pokemon/icons/8/818s.png differ diff --git a/public/images/pokemon/icons/8/819.png b/public/images/pokemon/icons/8/819.png index 1d3f703d7b2..2f2050d1751 100644 Binary files a/public/images/pokemon/icons/8/819.png and b/public/images/pokemon/icons/8/819.png differ diff --git a/public/images/pokemon/icons/8/819s.png b/public/images/pokemon/icons/8/819s.png index 45363fe378e..7d3b3e1dd1a 100644 Binary files a/public/images/pokemon/icons/8/819s.png and b/public/images/pokemon/icons/8/819s.png differ diff --git a/public/images/pokemon/icons/8/820.png b/public/images/pokemon/icons/8/820.png index 9fba0dba2c3..f984ff2e005 100644 Binary files a/public/images/pokemon/icons/8/820.png and b/public/images/pokemon/icons/8/820.png differ diff --git a/public/images/pokemon/icons/8/820s.png b/public/images/pokemon/icons/8/820s.png index 1385611ec09..5f018577a91 100644 Binary files a/public/images/pokemon/icons/8/820s.png and b/public/images/pokemon/icons/8/820s.png differ diff --git a/public/images/pokemon/icons/8/821.png b/public/images/pokemon/icons/8/821.png index ec8300ee44e..c4d672ac2d2 100644 Binary files a/public/images/pokemon/icons/8/821.png and b/public/images/pokemon/icons/8/821.png differ diff --git a/public/images/pokemon/icons/8/821s.png b/public/images/pokemon/icons/8/821s.png index 984b767cc3b..af1350b78d3 100644 Binary files a/public/images/pokemon/icons/8/821s.png and b/public/images/pokemon/icons/8/821s.png differ diff --git a/public/images/pokemon/icons/8/822.png b/public/images/pokemon/icons/8/822.png index f0cb06cc3ae..3facea05f68 100644 Binary files a/public/images/pokemon/icons/8/822.png and b/public/images/pokemon/icons/8/822.png differ diff --git a/public/images/pokemon/icons/8/822s.png b/public/images/pokemon/icons/8/822s.png index 1676005573f..3337d2e610a 100644 Binary files a/public/images/pokemon/icons/8/822s.png and b/public/images/pokemon/icons/8/822s.png differ diff --git a/public/images/pokemon/icons/8/823-gigantamax.png b/public/images/pokemon/icons/8/823-gigantamax.png index 5c1b5797aa1..291b9c01ed9 100644 Binary files a/public/images/pokemon/icons/8/823-gigantamax.png and b/public/images/pokemon/icons/8/823-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/823.png b/public/images/pokemon/icons/8/823.png index 55238e75e27..d2a5427b241 100644 Binary files a/public/images/pokemon/icons/8/823.png and b/public/images/pokemon/icons/8/823.png differ diff --git a/public/images/pokemon/icons/8/823s-gigantamax.png b/public/images/pokemon/icons/8/823s-gigantamax.png index 5ab98a8ba71..c8fe5502ea1 100644 Binary files a/public/images/pokemon/icons/8/823s-gigantamax.png and b/public/images/pokemon/icons/8/823s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/823s.png b/public/images/pokemon/icons/8/823s.png index 9f8f726f090..f1dfa7b662b 100644 Binary files a/public/images/pokemon/icons/8/823s.png and b/public/images/pokemon/icons/8/823s.png differ diff --git a/public/images/pokemon/icons/8/824.png b/public/images/pokemon/icons/8/824.png index d0624a938fa..0aa20d9a31b 100644 Binary files a/public/images/pokemon/icons/8/824.png and b/public/images/pokemon/icons/8/824.png differ diff --git a/public/images/pokemon/icons/8/824s.png b/public/images/pokemon/icons/8/824s.png index 4729954cbfd..d591607ead9 100644 Binary files a/public/images/pokemon/icons/8/824s.png and b/public/images/pokemon/icons/8/824s.png differ diff --git a/public/images/pokemon/icons/8/825.png b/public/images/pokemon/icons/8/825.png index 63452802586..9606c091ea6 100644 Binary files a/public/images/pokemon/icons/8/825.png and b/public/images/pokemon/icons/8/825.png differ diff --git a/public/images/pokemon/icons/8/825s.png b/public/images/pokemon/icons/8/825s.png index dc5bce305ed..796574bd529 100644 Binary files a/public/images/pokemon/icons/8/825s.png and b/public/images/pokemon/icons/8/825s.png differ diff --git a/public/images/pokemon/icons/8/826-gigantamax.png b/public/images/pokemon/icons/8/826-gigantamax.png index 76421072ab2..0c65453b786 100644 Binary files a/public/images/pokemon/icons/8/826-gigantamax.png and b/public/images/pokemon/icons/8/826-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/826.png b/public/images/pokemon/icons/8/826.png index c946c456459..5768e0bdb50 100644 Binary files a/public/images/pokemon/icons/8/826.png and b/public/images/pokemon/icons/8/826.png differ diff --git a/public/images/pokemon/icons/8/826s-gigantamax.png b/public/images/pokemon/icons/8/826s-gigantamax.png index c951275b2da..4add57dfab9 100644 Binary files a/public/images/pokemon/icons/8/826s-gigantamax.png and b/public/images/pokemon/icons/8/826s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/826s.png b/public/images/pokemon/icons/8/826s.png index a6dc466def5..f89afaab84b 100644 Binary files a/public/images/pokemon/icons/8/826s.png and b/public/images/pokemon/icons/8/826s.png differ diff --git a/public/images/pokemon/icons/8/827.png b/public/images/pokemon/icons/8/827.png index 0072868b0df..edaaa3ffb68 100644 Binary files a/public/images/pokemon/icons/8/827.png and b/public/images/pokemon/icons/8/827.png differ diff --git a/public/images/pokemon/icons/8/827s.png b/public/images/pokemon/icons/8/827s.png index 485b98e02e1..48124b0deb4 100644 Binary files a/public/images/pokemon/icons/8/827s.png and b/public/images/pokemon/icons/8/827s.png differ diff --git a/public/images/pokemon/icons/8/828.png b/public/images/pokemon/icons/8/828.png index 4db6ffa67a6..bdd554df9f3 100644 Binary files a/public/images/pokemon/icons/8/828.png and b/public/images/pokemon/icons/8/828.png differ diff --git a/public/images/pokemon/icons/8/828s.png b/public/images/pokemon/icons/8/828s.png index 62a52b05d78..976b9a9948b 100644 Binary files a/public/images/pokemon/icons/8/828s.png and b/public/images/pokemon/icons/8/828s.png differ diff --git a/public/images/pokemon/icons/8/829.png b/public/images/pokemon/icons/8/829.png index 677d5bb73a2..4a9d070618c 100644 Binary files a/public/images/pokemon/icons/8/829.png and b/public/images/pokemon/icons/8/829.png differ diff --git a/public/images/pokemon/icons/8/829s.png b/public/images/pokemon/icons/8/829s.png index 42d097fa9b7..3c89fb59726 100644 Binary files a/public/images/pokemon/icons/8/829s.png and b/public/images/pokemon/icons/8/829s.png differ diff --git a/public/images/pokemon/icons/8/830.png b/public/images/pokemon/icons/8/830.png index 898cc5f7a47..9973f1279e9 100644 Binary files a/public/images/pokemon/icons/8/830.png and b/public/images/pokemon/icons/8/830.png differ diff --git a/public/images/pokemon/icons/8/830s.png b/public/images/pokemon/icons/8/830s.png index 86c1d5d5280..d3afbb51901 100644 Binary files a/public/images/pokemon/icons/8/830s.png and b/public/images/pokemon/icons/8/830s.png differ diff --git a/public/images/pokemon/icons/8/831.png b/public/images/pokemon/icons/8/831.png index 3bb3156978c..792d01a6a23 100644 Binary files a/public/images/pokemon/icons/8/831.png and b/public/images/pokemon/icons/8/831.png differ diff --git a/public/images/pokemon/icons/8/831s.png b/public/images/pokemon/icons/8/831s.png index f777a8d395c..b6229d57c3e 100644 Binary files a/public/images/pokemon/icons/8/831s.png and b/public/images/pokemon/icons/8/831s.png differ diff --git a/public/images/pokemon/icons/8/832.png b/public/images/pokemon/icons/8/832.png index d7ed6fb18e8..e54915a62dd 100644 Binary files a/public/images/pokemon/icons/8/832.png and b/public/images/pokemon/icons/8/832.png differ diff --git a/public/images/pokemon/icons/8/832s.png b/public/images/pokemon/icons/8/832s.png index b406ee078ab..81a94ae87aa 100644 Binary files a/public/images/pokemon/icons/8/832s.png and b/public/images/pokemon/icons/8/832s.png differ diff --git a/public/images/pokemon/icons/8/833.png b/public/images/pokemon/icons/8/833.png index 6df2530a4a7..a7ad5e5c782 100644 Binary files a/public/images/pokemon/icons/8/833.png and b/public/images/pokemon/icons/8/833.png differ diff --git a/public/images/pokemon/icons/8/833s.png b/public/images/pokemon/icons/8/833s.png index 14482b0f368..c1330599020 100644 Binary files a/public/images/pokemon/icons/8/833s.png and b/public/images/pokemon/icons/8/833s.png differ diff --git a/public/images/pokemon/icons/8/834-gigantamax.png b/public/images/pokemon/icons/8/834-gigantamax.png index 7144f377701..422edef1c18 100644 Binary files a/public/images/pokemon/icons/8/834-gigantamax.png and b/public/images/pokemon/icons/8/834-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/834.png b/public/images/pokemon/icons/8/834.png index cf699e5e733..19ccaf365d8 100644 Binary files a/public/images/pokemon/icons/8/834.png and b/public/images/pokemon/icons/8/834.png differ diff --git a/public/images/pokemon/icons/8/834s-gigantamax.png b/public/images/pokemon/icons/8/834s-gigantamax.png index 2363815ece7..62d9b699c73 100644 Binary files a/public/images/pokemon/icons/8/834s-gigantamax.png and b/public/images/pokemon/icons/8/834s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/834s.png b/public/images/pokemon/icons/8/834s.png index ce54f106a73..057a9fa81d8 100644 Binary files a/public/images/pokemon/icons/8/834s.png and b/public/images/pokemon/icons/8/834s.png differ diff --git a/public/images/pokemon/icons/8/835.png b/public/images/pokemon/icons/8/835.png index 6e36f344e70..fe9987e87c4 100644 Binary files a/public/images/pokemon/icons/8/835.png and b/public/images/pokemon/icons/8/835.png differ diff --git a/public/images/pokemon/icons/8/835s.png b/public/images/pokemon/icons/8/835s.png index 6fde8123d2c..cc98576e75c 100644 Binary files a/public/images/pokemon/icons/8/835s.png and b/public/images/pokemon/icons/8/835s.png differ diff --git a/public/images/pokemon/icons/8/836.png b/public/images/pokemon/icons/8/836.png index a715ad736c5..a64a37bb17b 100644 Binary files a/public/images/pokemon/icons/8/836.png and b/public/images/pokemon/icons/8/836.png differ diff --git a/public/images/pokemon/icons/8/836s.png b/public/images/pokemon/icons/8/836s.png index b49b06b3220..f710875c021 100644 Binary files a/public/images/pokemon/icons/8/836s.png and b/public/images/pokemon/icons/8/836s.png differ diff --git a/public/images/pokemon/icons/8/837.png b/public/images/pokemon/icons/8/837.png index 52d4a37fb7a..36fe1c401b6 100644 Binary files a/public/images/pokemon/icons/8/837.png and b/public/images/pokemon/icons/8/837.png differ diff --git a/public/images/pokemon/icons/8/837s.png b/public/images/pokemon/icons/8/837s.png index dae3256fd56..827f163b22b 100644 Binary files a/public/images/pokemon/icons/8/837s.png and b/public/images/pokemon/icons/8/837s.png differ diff --git a/public/images/pokemon/icons/8/838.png b/public/images/pokemon/icons/8/838.png index c131197a972..e4b1ec14afc 100644 Binary files a/public/images/pokemon/icons/8/838.png and b/public/images/pokemon/icons/8/838.png differ diff --git a/public/images/pokemon/icons/8/838s.png b/public/images/pokemon/icons/8/838s.png index 540aebdf03f..f9989104baa 100644 Binary files a/public/images/pokemon/icons/8/838s.png and b/public/images/pokemon/icons/8/838s.png differ diff --git a/public/images/pokemon/icons/8/839-gigantamax.png b/public/images/pokemon/icons/8/839-gigantamax.png index c4543965a5c..68a5e5ede5e 100644 Binary files a/public/images/pokemon/icons/8/839-gigantamax.png and b/public/images/pokemon/icons/8/839-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/839.png b/public/images/pokemon/icons/8/839.png index 869aea89acf..66e06f3fb63 100644 Binary files a/public/images/pokemon/icons/8/839.png and b/public/images/pokemon/icons/8/839.png differ diff --git a/public/images/pokemon/icons/8/839s-gigantamax.png b/public/images/pokemon/icons/8/839s-gigantamax.png index c4543965a5c..68a5e5ede5e 100644 Binary files a/public/images/pokemon/icons/8/839s-gigantamax.png and b/public/images/pokemon/icons/8/839s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/839s.png b/public/images/pokemon/icons/8/839s.png index 9b7a6c421e4..e7512bd0c1e 100644 Binary files a/public/images/pokemon/icons/8/839s.png and b/public/images/pokemon/icons/8/839s.png differ diff --git a/public/images/pokemon/icons/8/840.png b/public/images/pokemon/icons/8/840.png index 8dfc5f0d734..162d724f075 100644 Binary files a/public/images/pokemon/icons/8/840.png and b/public/images/pokemon/icons/8/840.png differ diff --git a/public/images/pokemon/icons/8/840s.png b/public/images/pokemon/icons/8/840s.png index f106b4c8edb..8110c36917c 100644 Binary files a/public/images/pokemon/icons/8/840s.png and b/public/images/pokemon/icons/8/840s.png differ diff --git a/public/images/pokemon/icons/8/841-gigantamax.png b/public/images/pokemon/icons/8/841-gigantamax.png index 54a320d7615..f1da0a0da1c 100644 Binary files a/public/images/pokemon/icons/8/841-gigantamax.png and b/public/images/pokemon/icons/8/841-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/841.png b/public/images/pokemon/icons/8/841.png index b62affaf49d..ff90ddad8a0 100644 Binary files a/public/images/pokemon/icons/8/841.png and b/public/images/pokemon/icons/8/841.png differ diff --git a/public/images/pokemon/icons/8/841s-gigantamax.png b/public/images/pokemon/icons/8/841s-gigantamax.png index f767cded2de..ed192f1c34c 100644 Binary files a/public/images/pokemon/icons/8/841s-gigantamax.png and b/public/images/pokemon/icons/8/841s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/841s.png b/public/images/pokemon/icons/8/841s.png index f25e28a9fef..2b4a08167de 100644 Binary files a/public/images/pokemon/icons/8/841s.png and b/public/images/pokemon/icons/8/841s.png differ diff --git a/public/images/pokemon/icons/8/842-gigantamax.png b/public/images/pokemon/icons/8/842-gigantamax.png index 54a320d7615..f1da0a0da1c 100644 Binary files a/public/images/pokemon/icons/8/842-gigantamax.png and b/public/images/pokemon/icons/8/842-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/842.png b/public/images/pokemon/icons/8/842.png index bc0e102d2d5..34803375cbb 100644 Binary files a/public/images/pokemon/icons/8/842.png and b/public/images/pokemon/icons/8/842.png differ diff --git a/public/images/pokemon/icons/8/842s-gigantamax.png b/public/images/pokemon/icons/8/842s-gigantamax.png index f767cded2de..ed192f1c34c 100644 Binary files a/public/images/pokemon/icons/8/842s-gigantamax.png and b/public/images/pokemon/icons/8/842s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/842s.png b/public/images/pokemon/icons/8/842s.png index ff891d9b45d..2a7ca445835 100644 Binary files a/public/images/pokemon/icons/8/842s.png and b/public/images/pokemon/icons/8/842s.png differ diff --git a/public/images/pokemon/icons/8/843.png b/public/images/pokemon/icons/8/843.png index 918aa7257ee..31ce53a691d 100644 Binary files a/public/images/pokemon/icons/8/843.png and b/public/images/pokemon/icons/8/843.png differ diff --git a/public/images/pokemon/icons/8/843s.png b/public/images/pokemon/icons/8/843s.png index ce97a30597d..552386722c2 100644 Binary files a/public/images/pokemon/icons/8/843s.png and b/public/images/pokemon/icons/8/843s.png differ diff --git a/public/images/pokemon/icons/8/844-gigantamax.png b/public/images/pokemon/icons/8/844-gigantamax.png index ba833ba33a3..dbe92a377dd 100644 Binary files a/public/images/pokemon/icons/8/844-gigantamax.png and b/public/images/pokemon/icons/8/844-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/844.png b/public/images/pokemon/icons/8/844.png index 150877f69fc..95abf88913e 100644 Binary files a/public/images/pokemon/icons/8/844.png and b/public/images/pokemon/icons/8/844.png differ diff --git a/public/images/pokemon/icons/8/844s-gigantamax.png b/public/images/pokemon/icons/8/844s-gigantamax.png index d80ceb92df8..eb1f33964eb 100644 Binary files a/public/images/pokemon/icons/8/844s-gigantamax.png and b/public/images/pokemon/icons/8/844s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/844s.png b/public/images/pokemon/icons/8/844s.png index 830bafc00a9..0caf5b2581b 100644 Binary files a/public/images/pokemon/icons/8/844s.png and b/public/images/pokemon/icons/8/844s.png differ diff --git a/public/images/pokemon/icons/8/845-gorging.png b/public/images/pokemon/icons/8/845-gorging.png index f4c7658f0a2..484cb3bfe97 100644 Binary files a/public/images/pokemon/icons/8/845-gorging.png and b/public/images/pokemon/icons/8/845-gorging.png differ diff --git a/public/images/pokemon/icons/8/845-gulping.png b/public/images/pokemon/icons/8/845-gulping.png index 29d0cab91c3..195c83ad6ad 100644 Binary files a/public/images/pokemon/icons/8/845-gulping.png and b/public/images/pokemon/icons/8/845-gulping.png differ diff --git a/public/images/pokemon/icons/8/845.png b/public/images/pokemon/icons/8/845.png index 530d8024e3d..8532b7d83dc 100644 Binary files a/public/images/pokemon/icons/8/845.png and b/public/images/pokemon/icons/8/845.png differ diff --git a/public/images/pokemon/icons/8/845s-gorging.png b/public/images/pokemon/icons/8/845s-gorging.png index a039519f414..084145a0525 100644 Binary files a/public/images/pokemon/icons/8/845s-gorging.png and b/public/images/pokemon/icons/8/845s-gorging.png differ diff --git a/public/images/pokemon/icons/8/845s-gulping.png b/public/images/pokemon/icons/8/845s-gulping.png index 0562443b57a..638441ba6a7 100644 Binary files a/public/images/pokemon/icons/8/845s-gulping.png and b/public/images/pokemon/icons/8/845s-gulping.png differ diff --git a/public/images/pokemon/icons/8/845s.png b/public/images/pokemon/icons/8/845s.png index 5efb63f5658..ee61c315223 100644 Binary files a/public/images/pokemon/icons/8/845s.png and b/public/images/pokemon/icons/8/845s.png differ diff --git a/public/images/pokemon/icons/8/846.png b/public/images/pokemon/icons/8/846.png index 20d820532e1..c63bf5c4e7e 100644 Binary files a/public/images/pokemon/icons/8/846.png and b/public/images/pokemon/icons/8/846.png differ diff --git a/public/images/pokemon/icons/8/846s.png b/public/images/pokemon/icons/8/846s.png index ffaf5aaa1da..5d4d2039647 100644 Binary files a/public/images/pokemon/icons/8/846s.png and b/public/images/pokemon/icons/8/846s.png differ diff --git a/public/images/pokemon/icons/8/847.png b/public/images/pokemon/icons/8/847.png index d8ffac678ae..65c5b4fc83c 100644 Binary files a/public/images/pokemon/icons/8/847.png and b/public/images/pokemon/icons/8/847.png differ diff --git a/public/images/pokemon/icons/8/847s.png b/public/images/pokemon/icons/8/847s.png index ac7f8466779..f6a28c69dde 100644 Binary files a/public/images/pokemon/icons/8/847s.png and b/public/images/pokemon/icons/8/847s.png differ diff --git a/public/images/pokemon/icons/8/848.png b/public/images/pokemon/icons/8/848.png index efc736652e3..d4c39fadc92 100644 Binary files a/public/images/pokemon/icons/8/848.png and b/public/images/pokemon/icons/8/848.png differ diff --git a/public/images/pokemon/icons/8/848s.png b/public/images/pokemon/icons/8/848s.png index 74a8142ead5..cbfd6dbe49c 100644 Binary files a/public/images/pokemon/icons/8/848s.png and b/public/images/pokemon/icons/8/848s.png differ diff --git a/public/images/pokemon/icons/8/849-gigantamax.png b/public/images/pokemon/icons/8/849-gigantamax.png index f2d3f6db933..e8d626d3459 100644 Binary files a/public/images/pokemon/icons/8/849-gigantamax.png and b/public/images/pokemon/icons/8/849-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/849-lowkey.png b/public/images/pokemon/icons/8/849-lowkey.png index ab095f59c96..2a3f31d1283 100644 Binary files a/public/images/pokemon/icons/8/849-lowkey.png and b/public/images/pokemon/icons/8/849-lowkey.png differ diff --git a/public/images/pokemon/icons/8/849.png b/public/images/pokemon/icons/8/849.png index 48503c7e3fb..4ba0f8f1e55 100644 Binary files a/public/images/pokemon/icons/8/849.png and b/public/images/pokemon/icons/8/849.png differ diff --git a/public/images/pokemon/icons/8/849s-gigantamax.png b/public/images/pokemon/icons/8/849s-gigantamax.png index 4ec3aa54c0d..938e2cc144e 100644 Binary files a/public/images/pokemon/icons/8/849s-gigantamax.png and b/public/images/pokemon/icons/8/849s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/849s-lowkey.png b/public/images/pokemon/icons/8/849s-lowkey.png index 7953cf5251e..14a4693b981 100644 Binary files a/public/images/pokemon/icons/8/849s-lowkey.png and b/public/images/pokemon/icons/8/849s-lowkey.png differ diff --git a/public/images/pokemon/icons/8/849s.png b/public/images/pokemon/icons/8/849s.png index 17428a3adb1..79a824142b6 100644 Binary files a/public/images/pokemon/icons/8/849s.png and b/public/images/pokemon/icons/8/849s.png differ diff --git a/public/images/pokemon/icons/8/850.png b/public/images/pokemon/icons/8/850.png index 21db0175f76..5f596370a06 100644 Binary files a/public/images/pokemon/icons/8/850.png and b/public/images/pokemon/icons/8/850.png differ diff --git a/public/images/pokemon/icons/8/850s.png b/public/images/pokemon/icons/8/850s.png index f9e990170f5..bafc4eb1940 100644 Binary files a/public/images/pokemon/icons/8/850s.png and b/public/images/pokemon/icons/8/850s.png differ diff --git a/public/images/pokemon/icons/8/851-gigantamax.png b/public/images/pokemon/icons/8/851-gigantamax.png index e106c3b2b2e..fdd6b4bb289 100644 Binary files a/public/images/pokemon/icons/8/851-gigantamax.png and b/public/images/pokemon/icons/8/851-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/851.png b/public/images/pokemon/icons/8/851.png index 8a46b72c2f4..e24f0aeca54 100644 Binary files a/public/images/pokemon/icons/8/851.png and b/public/images/pokemon/icons/8/851.png differ diff --git a/public/images/pokemon/icons/8/851s-gigantamax.png b/public/images/pokemon/icons/8/851s-gigantamax.png index e106c3b2b2e..fdd6b4bb289 100644 Binary files a/public/images/pokemon/icons/8/851s-gigantamax.png and b/public/images/pokemon/icons/8/851s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/851s.png b/public/images/pokemon/icons/8/851s.png index 047a7caa6e3..e7474aac010 100644 Binary files a/public/images/pokemon/icons/8/851s.png and b/public/images/pokemon/icons/8/851s.png differ diff --git a/public/images/pokemon/icons/8/852.png b/public/images/pokemon/icons/8/852.png index 8b50e1cbe12..adbd3823545 100644 Binary files a/public/images/pokemon/icons/8/852.png and b/public/images/pokemon/icons/8/852.png differ diff --git a/public/images/pokemon/icons/8/852s.png b/public/images/pokemon/icons/8/852s.png index ca05553d443..3492c4ac626 100644 Binary files a/public/images/pokemon/icons/8/852s.png and b/public/images/pokemon/icons/8/852s.png differ diff --git a/public/images/pokemon/icons/8/853.png b/public/images/pokemon/icons/8/853.png index 0f2da0e9b80..de2fd19dfdd 100644 Binary files a/public/images/pokemon/icons/8/853.png and b/public/images/pokemon/icons/8/853.png differ diff --git a/public/images/pokemon/icons/8/853s.png b/public/images/pokemon/icons/8/853s.png index 45d2162fc28..7d3de362783 100644 Binary files a/public/images/pokemon/icons/8/853s.png and b/public/images/pokemon/icons/8/853s.png differ diff --git a/public/images/pokemon/icons/8/854.png b/public/images/pokemon/icons/8/854.png index 83960b21bcb..8471fa6a2c3 100644 Binary files a/public/images/pokemon/icons/8/854.png and b/public/images/pokemon/icons/8/854.png differ diff --git a/public/images/pokemon/icons/8/854s.png b/public/images/pokemon/icons/8/854s.png index 43d271b8b47..fbbf8c9b054 100644 Binary files a/public/images/pokemon/icons/8/854s.png and b/public/images/pokemon/icons/8/854s.png differ diff --git a/public/images/pokemon/icons/8/855.png b/public/images/pokemon/icons/8/855.png index f62268f9ed8..e2d52df15dd 100644 Binary files a/public/images/pokemon/icons/8/855.png and b/public/images/pokemon/icons/8/855.png differ diff --git a/public/images/pokemon/icons/8/855s.png b/public/images/pokemon/icons/8/855s.png index 100c8622c03..1428a0f7d82 100644 Binary files a/public/images/pokemon/icons/8/855s.png and b/public/images/pokemon/icons/8/855s.png differ diff --git a/public/images/pokemon/icons/8/856.png b/public/images/pokemon/icons/8/856.png index ab412104d69..4c1857db232 100644 Binary files a/public/images/pokemon/icons/8/856.png and b/public/images/pokemon/icons/8/856.png differ diff --git a/public/images/pokemon/icons/8/856s.png b/public/images/pokemon/icons/8/856s.png index 49b6fd76c00..6667f3862e7 100644 Binary files a/public/images/pokemon/icons/8/856s.png and b/public/images/pokemon/icons/8/856s.png differ diff --git a/public/images/pokemon/icons/8/857.png b/public/images/pokemon/icons/8/857.png index 39564a3bfc9..c06d64bd9de 100644 Binary files a/public/images/pokemon/icons/8/857.png and b/public/images/pokemon/icons/8/857.png differ diff --git a/public/images/pokemon/icons/8/857s.png b/public/images/pokemon/icons/8/857s.png index 85c7219e1c8..43ef9bf708c 100644 Binary files a/public/images/pokemon/icons/8/857s.png and b/public/images/pokemon/icons/8/857s.png differ diff --git a/public/images/pokemon/icons/8/858-gigantamax.png b/public/images/pokemon/icons/8/858-gigantamax.png index c85b9eabb3b..ba3f1ffad1a 100644 Binary files a/public/images/pokemon/icons/8/858-gigantamax.png and b/public/images/pokemon/icons/8/858-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/858.png b/public/images/pokemon/icons/8/858.png index 81b076df066..f4ea06a8c12 100644 Binary files a/public/images/pokemon/icons/8/858.png and b/public/images/pokemon/icons/8/858.png differ diff --git a/public/images/pokemon/icons/8/858s-gigantamax.png b/public/images/pokemon/icons/8/858s-gigantamax.png index 00c380516ee..76228976128 100644 Binary files a/public/images/pokemon/icons/8/858s-gigantamax.png and b/public/images/pokemon/icons/8/858s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/858s.png b/public/images/pokemon/icons/8/858s.png index 80418ec8677..32267948722 100644 Binary files a/public/images/pokemon/icons/8/858s.png and b/public/images/pokemon/icons/8/858s.png differ diff --git a/public/images/pokemon/icons/8/859.png b/public/images/pokemon/icons/8/859.png index be31fc5bec9..3e0820a8373 100644 Binary files a/public/images/pokemon/icons/8/859.png and b/public/images/pokemon/icons/8/859.png differ diff --git a/public/images/pokemon/icons/8/859s.png b/public/images/pokemon/icons/8/859s.png index e516097c26d..428fcc14242 100644 Binary files a/public/images/pokemon/icons/8/859s.png and b/public/images/pokemon/icons/8/859s.png differ diff --git a/public/images/pokemon/icons/8/860.png b/public/images/pokemon/icons/8/860.png index b704402b71b..abddbf0d147 100644 Binary files a/public/images/pokemon/icons/8/860.png and b/public/images/pokemon/icons/8/860.png differ diff --git a/public/images/pokemon/icons/8/860s.png b/public/images/pokemon/icons/8/860s.png index 79578c9cc67..83e5f9f5c81 100644 Binary files a/public/images/pokemon/icons/8/860s.png and b/public/images/pokemon/icons/8/860s.png differ diff --git a/public/images/pokemon/icons/8/861-gigantamax.png b/public/images/pokemon/icons/8/861-gigantamax.png index 5a338685d4a..a2640b59602 100644 Binary files a/public/images/pokemon/icons/8/861-gigantamax.png and b/public/images/pokemon/icons/8/861-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/861.png b/public/images/pokemon/icons/8/861.png index c92c66ed0dc..adddbd4c369 100644 Binary files a/public/images/pokemon/icons/8/861.png and b/public/images/pokemon/icons/8/861.png differ diff --git a/public/images/pokemon/icons/8/861s-gigantamax.png b/public/images/pokemon/icons/8/861s-gigantamax.png index 4b31f288ec0..2ce778e34ad 100644 Binary files a/public/images/pokemon/icons/8/861s-gigantamax.png and b/public/images/pokemon/icons/8/861s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/861s.png b/public/images/pokemon/icons/8/861s.png index 2cea6171d31..8a32ea3268e 100644 Binary files a/public/images/pokemon/icons/8/861s.png and b/public/images/pokemon/icons/8/861s.png differ diff --git a/public/images/pokemon/icons/8/862.png b/public/images/pokemon/icons/8/862.png index 6a7c0fdca91..de2ba36a045 100644 Binary files a/public/images/pokemon/icons/8/862.png and b/public/images/pokemon/icons/8/862.png differ diff --git a/public/images/pokemon/icons/8/862s.png b/public/images/pokemon/icons/8/862s.png index 2174579c131..86821835448 100644 Binary files a/public/images/pokemon/icons/8/862s.png and b/public/images/pokemon/icons/8/862s.png differ diff --git a/public/images/pokemon/icons/8/863.png b/public/images/pokemon/icons/8/863.png index a3818871d24..c8b613218e2 100644 Binary files a/public/images/pokemon/icons/8/863.png and b/public/images/pokemon/icons/8/863.png differ diff --git a/public/images/pokemon/icons/8/863s.png b/public/images/pokemon/icons/8/863s.png index 8ba72f0b1eb..5cd06805379 100644 Binary files a/public/images/pokemon/icons/8/863s.png and b/public/images/pokemon/icons/8/863s.png differ diff --git a/public/images/pokemon/icons/8/864.png b/public/images/pokemon/icons/8/864.png index ce0d9854039..3a5353f7934 100644 Binary files a/public/images/pokemon/icons/8/864.png and b/public/images/pokemon/icons/8/864.png differ diff --git a/public/images/pokemon/icons/8/864s.png b/public/images/pokemon/icons/8/864s.png index 361d8a76214..e84d0dc16fc 100644 Binary files a/public/images/pokemon/icons/8/864s.png and b/public/images/pokemon/icons/8/864s.png differ diff --git a/public/images/pokemon/icons/8/865.png b/public/images/pokemon/icons/8/865.png index ec318c082b2..a8342f693c1 100644 Binary files a/public/images/pokemon/icons/8/865.png and b/public/images/pokemon/icons/8/865.png differ diff --git a/public/images/pokemon/icons/8/865s.png b/public/images/pokemon/icons/8/865s.png index caa750a2086..7c922b0554b 100644 Binary files a/public/images/pokemon/icons/8/865s.png and b/public/images/pokemon/icons/8/865s.png differ diff --git a/public/images/pokemon/icons/8/866.png b/public/images/pokemon/icons/8/866.png index 94c5982dc7c..0bf07f47ee6 100644 Binary files a/public/images/pokemon/icons/8/866.png and b/public/images/pokemon/icons/8/866.png differ diff --git a/public/images/pokemon/icons/8/866s.png b/public/images/pokemon/icons/8/866s.png index f79e7f705ae..4956a259041 100644 Binary files a/public/images/pokemon/icons/8/866s.png and b/public/images/pokemon/icons/8/866s.png differ diff --git a/public/images/pokemon/icons/8/867.png b/public/images/pokemon/icons/8/867.png index 5c8dd6fbab4..2777e5e264c 100644 Binary files a/public/images/pokemon/icons/8/867.png and b/public/images/pokemon/icons/8/867.png differ diff --git a/public/images/pokemon/icons/8/867s.png b/public/images/pokemon/icons/8/867s.png index fbb07f39fc4..3fbf727f5ad 100644 Binary files a/public/images/pokemon/icons/8/867s.png and b/public/images/pokemon/icons/8/867s.png differ diff --git a/public/images/pokemon/icons/8/868.png b/public/images/pokemon/icons/8/868.png index 1fea3e99a98..32c523856c4 100644 Binary files a/public/images/pokemon/icons/8/868.png and b/public/images/pokemon/icons/8/868.png differ diff --git a/public/images/pokemon/icons/8/868s.png b/public/images/pokemon/icons/8/868s.png index e85980cf7bb..c6cc05d6cfc 100644 Binary files a/public/images/pokemon/icons/8/868s.png and b/public/images/pokemon/icons/8/868s.png differ diff --git a/public/images/pokemon/icons/8/869-caramel-swirl.png b/public/images/pokemon/icons/8/869-caramel-swirl.png index 6d6dcd5725f..d3b226afaa8 100644 Binary files a/public/images/pokemon/icons/8/869-caramel-swirl.png and b/public/images/pokemon/icons/8/869-caramel-swirl.png differ diff --git a/public/images/pokemon/icons/8/869-gigantamax.png b/public/images/pokemon/icons/8/869-gigantamax.png index c83cf0525a1..89530c3d783 100644 Binary files a/public/images/pokemon/icons/8/869-gigantamax.png and b/public/images/pokemon/icons/8/869-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/869-lemon-cream.png b/public/images/pokemon/icons/8/869-lemon-cream.png index 798adc029c9..1c90eb69a74 100644 Binary files a/public/images/pokemon/icons/8/869-lemon-cream.png and b/public/images/pokemon/icons/8/869-lemon-cream.png differ diff --git a/public/images/pokemon/icons/8/869-matcha-cream.png b/public/images/pokemon/icons/8/869-matcha-cream.png index 961e3ef4810..782ac7c435e 100644 Binary files a/public/images/pokemon/icons/8/869-matcha-cream.png and b/public/images/pokemon/icons/8/869-matcha-cream.png differ diff --git a/public/images/pokemon/icons/8/869-mint-cream.png b/public/images/pokemon/icons/8/869-mint-cream.png index 2cdff2c233a..bb55fe59a16 100644 Binary files a/public/images/pokemon/icons/8/869-mint-cream.png and b/public/images/pokemon/icons/8/869-mint-cream.png differ diff --git a/public/images/pokemon/icons/8/869-rainbow-swirl.png b/public/images/pokemon/icons/8/869-rainbow-swirl.png index 2646f4807cb..e87c7ea4f48 100644 Binary files a/public/images/pokemon/icons/8/869-rainbow-swirl.png and b/public/images/pokemon/icons/8/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/icons/8/869-ruby-cream.png b/public/images/pokemon/icons/8/869-ruby-cream.png index 27bc10bd65a..77f3aa118dd 100644 Binary files a/public/images/pokemon/icons/8/869-ruby-cream.png and b/public/images/pokemon/icons/8/869-ruby-cream.png differ diff --git a/public/images/pokemon/icons/8/869-ruby-swirl.png b/public/images/pokemon/icons/8/869-ruby-swirl.png index c0d90466bba..aa30bb6c57f 100644 Binary files a/public/images/pokemon/icons/8/869-ruby-swirl.png and b/public/images/pokemon/icons/8/869-ruby-swirl.png differ diff --git a/public/images/pokemon/icons/8/869-salted-cream.png b/public/images/pokemon/icons/8/869-salted-cream.png index b876c05b484..88c1f127606 100644 Binary files a/public/images/pokemon/icons/8/869-salted-cream.png and b/public/images/pokemon/icons/8/869-salted-cream.png differ diff --git a/public/images/pokemon/icons/8/869.png b/public/images/pokemon/icons/8/869.png index b823b192bdc..3ab78d687e5 100644 Binary files a/public/images/pokemon/icons/8/869.png and b/public/images/pokemon/icons/8/869.png differ diff --git a/public/images/pokemon/icons/8/869s-caramel-swirl.png b/public/images/pokemon/icons/8/869s-caramel-swirl.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-caramel-swirl.png and b/public/images/pokemon/icons/8/869s-caramel-swirl.png differ diff --git a/public/images/pokemon/icons/8/869s-gigantamax.png b/public/images/pokemon/icons/8/869s-gigantamax.png index 566a6a0c024..4cef18b2694 100644 Binary files a/public/images/pokemon/icons/8/869s-gigantamax.png and b/public/images/pokemon/icons/8/869s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/869s-lemon-cream.png b/public/images/pokemon/icons/8/869s-lemon-cream.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-lemon-cream.png and b/public/images/pokemon/icons/8/869s-lemon-cream.png differ diff --git a/public/images/pokemon/icons/8/869s-matcha-cream.png b/public/images/pokemon/icons/8/869s-matcha-cream.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-matcha-cream.png and b/public/images/pokemon/icons/8/869s-matcha-cream.png differ diff --git a/public/images/pokemon/icons/8/869s-mint-cream.png b/public/images/pokemon/icons/8/869s-mint-cream.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-mint-cream.png and b/public/images/pokemon/icons/8/869s-mint-cream.png differ diff --git a/public/images/pokemon/icons/8/869s-rainbow-swirl.png b/public/images/pokemon/icons/8/869s-rainbow-swirl.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-rainbow-swirl.png and b/public/images/pokemon/icons/8/869s-rainbow-swirl.png differ diff --git a/public/images/pokemon/icons/8/869s-ruby-cream.png b/public/images/pokemon/icons/8/869s-ruby-cream.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-ruby-cream.png and b/public/images/pokemon/icons/8/869s-ruby-cream.png differ diff --git a/public/images/pokemon/icons/8/869s-ruby-swirl.png b/public/images/pokemon/icons/8/869s-ruby-swirl.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-ruby-swirl.png and b/public/images/pokemon/icons/8/869s-ruby-swirl.png differ diff --git a/public/images/pokemon/icons/8/869s-salted-cream.png b/public/images/pokemon/icons/8/869s-salted-cream.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s-salted-cream.png and b/public/images/pokemon/icons/8/869s-salted-cream.png differ diff --git a/public/images/pokemon/icons/8/869s.png b/public/images/pokemon/icons/8/869s.png index 32cb4cc7d56..b7fa8101613 100644 Binary files a/public/images/pokemon/icons/8/869s.png and b/public/images/pokemon/icons/8/869s.png differ diff --git a/public/images/pokemon/icons/8/870.png b/public/images/pokemon/icons/8/870.png index 7571b5e3f48..1d85ade0045 100644 Binary files a/public/images/pokemon/icons/8/870.png and b/public/images/pokemon/icons/8/870.png differ diff --git a/public/images/pokemon/icons/8/870s.png b/public/images/pokemon/icons/8/870s.png index 57a705a182f..592969a0359 100644 Binary files a/public/images/pokemon/icons/8/870s.png and b/public/images/pokemon/icons/8/870s.png differ diff --git a/public/images/pokemon/icons/8/871.png b/public/images/pokemon/icons/8/871.png index 635afdce683..bbf6a01037e 100644 Binary files a/public/images/pokemon/icons/8/871.png and b/public/images/pokemon/icons/8/871.png differ diff --git a/public/images/pokemon/icons/8/871s.png b/public/images/pokemon/icons/8/871s.png index 30befeb4bea..b0a6fbb1c8d 100644 Binary files a/public/images/pokemon/icons/8/871s.png and b/public/images/pokemon/icons/8/871s.png differ diff --git a/public/images/pokemon/icons/8/872.png b/public/images/pokemon/icons/8/872.png index 1b9c51852b4..dbfeaf15820 100644 Binary files a/public/images/pokemon/icons/8/872.png and b/public/images/pokemon/icons/8/872.png differ diff --git a/public/images/pokemon/icons/8/872s.png b/public/images/pokemon/icons/8/872s.png index 071f32ae1e7..113b3864f0d 100644 Binary files a/public/images/pokemon/icons/8/872s.png and b/public/images/pokemon/icons/8/872s.png differ diff --git a/public/images/pokemon/icons/8/873.png b/public/images/pokemon/icons/8/873.png index 46880bdac2e..4a5f2f908a8 100644 Binary files a/public/images/pokemon/icons/8/873.png and b/public/images/pokemon/icons/8/873.png differ diff --git a/public/images/pokemon/icons/8/873s.png b/public/images/pokemon/icons/8/873s.png index cb438619c87..c026a64be94 100644 Binary files a/public/images/pokemon/icons/8/873s.png and b/public/images/pokemon/icons/8/873s.png differ diff --git a/public/images/pokemon/icons/8/874.png b/public/images/pokemon/icons/8/874.png index 97a97918c73..c293492eb12 100644 Binary files a/public/images/pokemon/icons/8/874.png and b/public/images/pokemon/icons/8/874.png differ diff --git a/public/images/pokemon/icons/8/874s.png b/public/images/pokemon/icons/8/874s.png index bd0fc05059c..ff6d53686a0 100644 Binary files a/public/images/pokemon/icons/8/874s.png and b/public/images/pokemon/icons/8/874s.png differ diff --git a/public/images/pokemon/icons/8/875-no-ice.png b/public/images/pokemon/icons/8/875-no-ice.png index fc894c9305e..d5f29c6d071 100644 Binary files a/public/images/pokemon/icons/8/875-no-ice.png and b/public/images/pokemon/icons/8/875-no-ice.png differ diff --git a/public/images/pokemon/icons/8/875.png b/public/images/pokemon/icons/8/875.png index 9de4280b9d7..2e3a03c4606 100644 Binary files a/public/images/pokemon/icons/8/875.png and b/public/images/pokemon/icons/8/875.png differ diff --git a/public/images/pokemon/icons/8/875s-no-ice.png b/public/images/pokemon/icons/8/875s-no-ice.png index b9d3d294826..324409e518b 100644 Binary files a/public/images/pokemon/icons/8/875s-no-ice.png and b/public/images/pokemon/icons/8/875s-no-ice.png differ diff --git a/public/images/pokemon/icons/8/875s.png b/public/images/pokemon/icons/8/875s.png index 4785c3e75e8..512f49dc4d4 100644 Binary files a/public/images/pokemon/icons/8/875s.png and b/public/images/pokemon/icons/8/875s.png differ diff --git a/public/images/pokemon/icons/8/876-female.png b/public/images/pokemon/icons/8/876-female.png index 5ddf6f4f409..31debc53d55 100644 Binary files a/public/images/pokemon/icons/8/876-female.png and b/public/images/pokemon/icons/8/876-female.png differ diff --git a/public/images/pokemon/icons/8/876.png b/public/images/pokemon/icons/8/876.png index d48d711c527..d3d08ebad05 100644 Binary files a/public/images/pokemon/icons/8/876.png and b/public/images/pokemon/icons/8/876.png differ diff --git a/public/images/pokemon/icons/8/876s-female.png b/public/images/pokemon/icons/8/876s-female.png index 73b9664fc99..ef593f8f118 100644 Binary files a/public/images/pokemon/icons/8/876s-female.png and b/public/images/pokemon/icons/8/876s-female.png differ diff --git a/public/images/pokemon/icons/8/876s.png b/public/images/pokemon/icons/8/876s.png index 115286d027b..eb230d85cf0 100644 Binary files a/public/images/pokemon/icons/8/876s.png and b/public/images/pokemon/icons/8/876s.png differ diff --git a/public/images/pokemon/icons/8/877-hangry.png b/public/images/pokemon/icons/8/877-hangry.png index 8e1e3fc9417..e13a4578801 100644 Binary files a/public/images/pokemon/icons/8/877-hangry.png and b/public/images/pokemon/icons/8/877-hangry.png differ diff --git a/public/images/pokemon/icons/8/877.png b/public/images/pokemon/icons/8/877.png index 67d9176e1d6..5a8c5a9cfc9 100644 Binary files a/public/images/pokemon/icons/8/877.png and b/public/images/pokemon/icons/8/877.png differ diff --git a/public/images/pokemon/icons/8/877s-hangry.png b/public/images/pokemon/icons/8/877s-hangry.png index 2a104542ce1..ca6499bbad4 100644 Binary files a/public/images/pokemon/icons/8/877s-hangry.png and b/public/images/pokemon/icons/8/877s-hangry.png differ diff --git a/public/images/pokemon/icons/8/877s.png b/public/images/pokemon/icons/8/877s.png index 30332ace937..a5cb5df778f 100644 Binary files a/public/images/pokemon/icons/8/877s.png and b/public/images/pokemon/icons/8/877s.png differ diff --git a/public/images/pokemon/icons/8/878.png b/public/images/pokemon/icons/8/878.png index 8042c4aca22..b6afafc63df 100644 Binary files a/public/images/pokemon/icons/8/878.png and b/public/images/pokemon/icons/8/878.png differ diff --git a/public/images/pokemon/icons/8/878s.png b/public/images/pokemon/icons/8/878s.png index 9f49ce957d0..d2e178f6281 100644 Binary files a/public/images/pokemon/icons/8/878s.png and b/public/images/pokemon/icons/8/878s.png differ diff --git a/public/images/pokemon/icons/8/879-gigantamax.png b/public/images/pokemon/icons/8/879-gigantamax.png index fd39a7dbc61..12cd3d514ed 100644 Binary files a/public/images/pokemon/icons/8/879-gigantamax.png and b/public/images/pokemon/icons/8/879-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/879.png b/public/images/pokemon/icons/8/879.png index 63466d1b235..61dd2a855cd 100644 Binary files a/public/images/pokemon/icons/8/879.png and b/public/images/pokemon/icons/8/879.png differ diff --git a/public/images/pokemon/icons/8/879s-gigantamax.png b/public/images/pokemon/icons/8/879s-gigantamax.png index d4401b64b5a..161908fb3cb 100644 Binary files a/public/images/pokemon/icons/8/879s-gigantamax.png and b/public/images/pokemon/icons/8/879s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/879s.png b/public/images/pokemon/icons/8/879s.png index 4bd2626e79c..dbb99088f1f 100644 Binary files a/public/images/pokemon/icons/8/879s.png and b/public/images/pokemon/icons/8/879s.png differ diff --git a/public/images/pokemon/icons/8/880.png b/public/images/pokemon/icons/8/880.png index 6f9acf20e8b..b8154e02326 100644 Binary files a/public/images/pokemon/icons/8/880.png and b/public/images/pokemon/icons/8/880.png differ diff --git a/public/images/pokemon/icons/8/880s.png b/public/images/pokemon/icons/8/880s.png index 3bac75a0bea..bff093d5515 100644 Binary files a/public/images/pokemon/icons/8/880s.png and b/public/images/pokemon/icons/8/880s.png differ diff --git a/public/images/pokemon/icons/8/881.png b/public/images/pokemon/icons/8/881.png index e41510632fb..3b3c81fd82e 100644 Binary files a/public/images/pokemon/icons/8/881.png and b/public/images/pokemon/icons/8/881.png differ diff --git a/public/images/pokemon/icons/8/881s.png b/public/images/pokemon/icons/8/881s.png index 45910a13709..061b740c535 100644 Binary files a/public/images/pokemon/icons/8/881s.png and b/public/images/pokemon/icons/8/881s.png differ diff --git a/public/images/pokemon/icons/8/882.png b/public/images/pokemon/icons/8/882.png index ca1a0aa0427..b1a55b3a23f 100644 Binary files a/public/images/pokemon/icons/8/882.png and b/public/images/pokemon/icons/8/882.png differ diff --git a/public/images/pokemon/icons/8/882s.png b/public/images/pokemon/icons/8/882s.png index beaee0e5215..e41c75617bd 100644 Binary files a/public/images/pokemon/icons/8/882s.png and b/public/images/pokemon/icons/8/882s.png differ diff --git a/public/images/pokemon/icons/8/883.png b/public/images/pokemon/icons/8/883.png index 0333c08f150..10ee305c860 100644 Binary files a/public/images/pokemon/icons/8/883.png and b/public/images/pokemon/icons/8/883.png differ diff --git a/public/images/pokemon/icons/8/883s.png b/public/images/pokemon/icons/8/883s.png index 38d2aedb683..483b02f9369 100644 Binary files a/public/images/pokemon/icons/8/883s.png and b/public/images/pokemon/icons/8/883s.png differ diff --git a/public/images/pokemon/icons/8/884-gigantamax.png b/public/images/pokemon/icons/8/884-gigantamax.png index ba394df95fe..2db1d38e107 100644 Binary files a/public/images/pokemon/icons/8/884-gigantamax.png and b/public/images/pokemon/icons/8/884-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/884.png b/public/images/pokemon/icons/8/884.png index aa5f1bc5f89..231b40a6e18 100644 Binary files a/public/images/pokemon/icons/8/884.png and b/public/images/pokemon/icons/8/884.png differ diff --git a/public/images/pokemon/icons/8/884s-gigantamax.png b/public/images/pokemon/icons/8/884s-gigantamax.png index e612f11181e..f1658217a6f 100644 Binary files a/public/images/pokemon/icons/8/884s-gigantamax.png and b/public/images/pokemon/icons/8/884s-gigantamax.png differ diff --git a/public/images/pokemon/icons/8/884s.png b/public/images/pokemon/icons/8/884s.png index 3868d29ae4e..879fa42adfb 100644 Binary files a/public/images/pokemon/icons/8/884s.png and b/public/images/pokemon/icons/8/884s.png differ diff --git a/public/images/pokemon/icons/8/885.png b/public/images/pokemon/icons/8/885.png index b0800a4b43a..822823f579c 100644 Binary files a/public/images/pokemon/icons/8/885.png and b/public/images/pokemon/icons/8/885.png differ diff --git a/public/images/pokemon/icons/8/885s.png b/public/images/pokemon/icons/8/885s.png index 5ed58078887..3ac9113c104 100644 Binary files a/public/images/pokemon/icons/8/885s.png and b/public/images/pokemon/icons/8/885s.png differ diff --git a/public/images/pokemon/icons/8/886.png b/public/images/pokemon/icons/8/886.png index 6b03c70f9b1..3ca2ea49f27 100644 Binary files a/public/images/pokemon/icons/8/886.png and b/public/images/pokemon/icons/8/886.png differ diff --git a/public/images/pokemon/icons/8/886s.png b/public/images/pokemon/icons/8/886s.png index 29241b0ebf1..b9487a6a81c 100644 Binary files a/public/images/pokemon/icons/8/886s.png and b/public/images/pokemon/icons/8/886s.png differ diff --git a/public/images/pokemon/icons/8/887.png b/public/images/pokemon/icons/8/887.png index c9c7deac00b..86d0b8cc636 100644 Binary files a/public/images/pokemon/icons/8/887.png and b/public/images/pokemon/icons/8/887.png differ diff --git a/public/images/pokemon/icons/8/887s.png b/public/images/pokemon/icons/8/887s.png index 60bd7faaea0..863f28048d6 100644 Binary files a/public/images/pokemon/icons/8/887s.png and b/public/images/pokemon/icons/8/887s.png differ diff --git a/public/images/pokemon/icons/8/888-crowned.png b/public/images/pokemon/icons/8/888-crowned.png index 713f4a497d3..a2fa2c5372c 100644 Binary files a/public/images/pokemon/icons/8/888-crowned.png and b/public/images/pokemon/icons/8/888-crowned.png differ diff --git a/public/images/pokemon/icons/8/888.png b/public/images/pokemon/icons/8/888.png index e8bf1bb054c..34e73d5ff7a 100644 Binary files a/public/images/pokemon/icons/8/888.png and b/public/images/pokemon/icons/8/888.png differ diff --git a/public/images/pokemon/icons/8/888s-crowned.png b/public/images/pokemon/icons/8/888s-crowned.png index 8cddbf64202..6848a494eb8 100644 Binary files a/public/images/pokemon/icons/8/888s-crowned.png and b/public/images/pokemon/icons/8/888s-crowned.png differ diff --git a/public/images/pokemon/icons/8/888s.png b/public/images/pokemon/icons/8/888s.png index dc43ea2e200..d389c0cf489 100644 Binary files a/public/images/pokemon/icons/8/888s.png and b/public/images/pokemon/icons/8/888s.png differ diff --git a/public/images/pokemon/icons/8/889-crowned.png b/public/images/pokemon/icons/8/889-crowned.png index 20ce560a75f..5261412c8c0 100644 Binary files a/public/images/pokemon/icons/8/889-crowned.png and b/public/images/pokemon/icons/8/889-crowned.png differ diff --git a/public/images/pokemon/icons/8/889.png b/public/images/pokemon/icons/8/889.png index 0ce4501b99f..03390b4c0f5 100644 Binary files a/public/images/pokemon/icons/8/889.png and b/public/images/pokemon/icons/8/889.png differ diff --git a/public/images/pokemon/icons/8/889s-crowned.png b/public/images/pokemon/icons/8/889s-crowned.png index 86d09641984..ba008493051 100644 Binary files a/public/images/pokemon/icons/8/889s-crowned.png and b/public/images/pokemon/icons/8/889s-crowned.png differ diff --git a/public/images/pokemon/icons/8/889s.png b/public/images/pokemon/icons/8/889s.png index 5591590049b..2e3e58b7e34 100644 Binary files a/public/images/pokemon/icons/8/889s.png and b/public/images/pokemon/icons/8/889s.png differ diff --git a/public/images/pokemon/icons/8/890-eternamax.png b/public/images/pokemon/icons/8/890-eternamax.png index 120f164c16d..c5e39fbd6e3 100644 Binary files a/public/images/pokemon/icons/8/890-eternamax.png and b/public/images/pokemon/icons/8/890-eternamax.png differ diff --git a/public/images/pokemon/icons/8/890.png b/public/images/pokemon/icons/8/890.png index bb5d9b74d6e..058753d338e 100644 Binary files a/public/images/pokemon/icons/8/890.png and b/public/images/pokemon/icons/8/890.png differ diff --git a/public/images/pokemon/icons/8/890s-eternamax.png b/public/images/pokemon/icons/8/890s-eternamax.png index 30f668a92a1..b5c8efb7d6a 100644 Binary files a/public/images/pokemon/icons/8/890s-eternamax.png and b/public/images/pokemon/icons/8/890s-eternamax.png differ diff --git a/public/images/pokemon/icons/8/890s.png b/public/images/pokemon/icons/8/890s.png index 7f7e41c5900..0806012ec5e 100644 Binary files a/public/images/pokemon/icons/8/890s.png and b/public/images/pokemon/icons/8/890s.png differ diff --git a/public/images/pokemon/icons/8/891.png b/public/images/pokemon/icons/8/891.png index 88d5f7f534a..7e72bb91845 100644 Binary files a/public/images/pokemon/icons/8/891.png and b/public/images/pokemon/icons/8/891.png differ diff --git a/public/images/pokemon/icons/8/891s.png b/public/images/pokemon/icons/8/891s.png index f36832a2d0b..3e179635b6b 100644 Binary files a/public/images/pokemon/icons/8/891s.png and b/public/images/pokemon/icons/8/891s.png differ diff --git a/public/images/pokemon/icons/8/892-gigantamax-rapid.png b/public/images/pokemon/icons/8/892-gigantamax-rapid.png index 14a33f166d1..0ba681fa73e 100644 Binary files a/public/images/pokemon/icons/8/892-gigantamax-rapid.png and b/public/images/pokemon/icons/8/892-gigantamax-rapid.png differ diff --git a/public/images/pokemon/icons/8/892-gigantamax-single.png b/public/images/pokemon/icons/8/892-gigantamax-single.png index 48ef6c1f252..84336b11a7c 100644 Binary files a/public/images/pokemon/icons/8/892-gigantamax-single.png and b/public/images/pokemon/icons/8/892-gigantamax-single.png differ diff --git a/public/images/pokemon/icons/8/892-rapid-strike.png b/public/images/pokemon/icons/8/892-rapid-strike.png index f60711ead56..efa39e2d63d 100644 Binary files a/public/images/pokemon/icons/8/892-rapid-strike.png and b/public/images/pokemon/icons/8/892-rapid-strike.png differ diff --git a/public/images/pokemon/icons/8/892.png b/public/images/pokemon/icons/8/892.png index 1ffb30fd82a..67293f9b6bf 100644 Binary files a/public/images/pokemon/icons/8/892.png and b/public/images/pokemon/icons/8/892.png differ diff --git a/public/images/pokemon/icons/8/892s-gigantamax-rapid.png b/public/images/pokemon/icons/8/892s-gigantamax-rapid.png index 93d747d2c14..0abc2d68644 100644 Binary files a/public/images/pokemon/icons/8/892s-gigantamax-rapid.png and b/public/images/pokemon/icons/8/892s-gigantamax-rapid.png differ diff --git a/public/images/pokemon/icons/8/892s-gigantamax-single.png b/public/images/pokemon/icons/8/892s-gigantamax-single.png index 1f779ba8ed4..d51f23d55ee 100644 Binary files a/public/images/pokemon/icons/8/892s-gigantamax-single.png and b/public/images/pokemon/icons/8/892s-gigantamax-single.png differ diff --git a/public/images/pokemon/icons/8/892s-rapid-strike.png b/public/images/pokemon/icons/8/892s-rapid-strike.png index 59753c149fe..a11232569ea 100644 Binary files a/public/images/pokemon/icons/8/892s-rapid-strike.png and b/public/images/pokemon/icons/8/892s-rapid-strike.png differ diff --git a/public/images/pokemon/icons/8/892s.png b/public/images/pokemon/icons/8/892s.png index 8e4b9e67f24..8ea4b849171 100644 Binary files a/public/images/pokemon/icons/8/892s.png and b/public/images/pokemon/icons/8/892s.png differ diff --git a/public/images/pokemon/icons/8/893-dada.png b/public/images/pokemon/icons/8/893-dada.png index eb9457f8d8e..fd6f13af7b4 100644 Binary files a/public/images/pokemon/icons/8/893-dada.png and b/public/images/pokemon/icons/8/893-dada.png differ diff --git a/public/images/pokemon/icons/8/893.png b/public/images/pokemon/icons/8/893.png index a28497c095d..d472b670e9c 100644 Binary files a/public/images/pokemon/icons/8/893.png and b/public/images/pokemon/icons/8/893.png differ diff --git a/public/images/pokemon/icons/8/893s-dada.png b/public/images/pokemon/icons/8/893s-dada.png index b2bc8aefd37..14a43affc43 100644 Binary files a/public/images/pokemon/icons/8/893s-dada.png and b/public/images/pokemon/icons/8/893s-dada.png differ diff --git a/public/images/pokemon/icons/8/893s.png b/public/images/pokemon/icons/8/893s.png index 4245e17d987..dd4cad0e4fa 100644 Binary files a/public/images/pokemon/icons/8/893s.png and b/public/images/pokemon/icons/8/893s.png differ diff --git a/public/images/pokemon/icons/8/894.png b/public/images/pokemon/icons/8/894.png index 50d2fd6d58c..1ece6e67b37 100644 Binary files a/public/images/pokemon/icons/8/894.png and b/public/images/pokemon/icons/8/894.png differ diff --git a/public/images/pokemon/icons/8/894s.png b/public/images/pokemon/icons/8/894s.png index 9d8c9355232..28399d04950 100644 Binary files a/public/images/pokemon/icons/8/894s.png and b/public/images/pokemon/icons/8/894s.png differ diff --git a/public/images/pokemon/icons/8/895.png b/public/images/pokemon/icons/8/895.png index ccdda20fe18..cbd299fca8b 100644 Binary files a/public/images/pokemon/icons/8/895.png and b/public/images/pokemon/icons/8/895.png differ diff --git a/public/images/pokemon/icons/8/895s.png b/public/images/pokemon/icons/8/895s.png index 92d23036d90..00b44fd3bd3 100644 Binary files a/public/images/pokemon/icons/8/895s.png and b/public/images/pokemon/icons/8/895s.png differ diff --git a/public/images/pokemon/icons/8/896.png b/public/images/pokemon/icons/8/896.png index a95d149acda..6750c678c05 100644 Binary files a/public/images/pokemon/icons/8/896.png and b/public/images/pokemon/icons/8/896.png differ diff --git a/public/images/pokemon/icons/8/896s.png b/public/images/pokemon/icons/8/896s.png index bc5be7c3119..e4ffddaccac 100644 Binary files a/public/images/pokemon/icons/8/896s.png and b/public/images/pokemon/icons/8/896s.png differ diff --git a/public/images/pokemon/icons/8/897.png b/public/images/pokemon/icons/8/897.png index 126514e23e1..6c2719d608a 100644 Binary files a/public/images/pokemon/icons/8/897.png and b/public/images/pokemon/icons/8/897.png differ diff --git a/public/images/pokemon/icons/8/897s.png b/public/images/pokemon/icons/8/897s.png index 0b339ded249..4aaa5de05a9 100644 Binary files a/public/images/pokemon/icons/8/897s.png and b/public/images/pokemon/icons/8/897s.png differ diff --git a/public/images/pokemon/icons/8/898-ice.png b/public/images/pokemon/icons/8/898-ice.png index 8380cee0c02..35fab38e5db 100644 Binary files a/public/images/pokemon/icons/8/898-ice.png and b/public/images/pokemon/icons/8/898-ice.png differ diff --git a/public/images/pokemon/icons/8/898-shadow.png b/public/images/pokemon/icons/8/898-shadow.png index 479ad11c70d..d323e330090 100644 Binary files a/public/images/pokemon/icons/8/898-shadow.png and b/public/images/pokemon/icons/8/898-shadow.png differ diff --git a/public/images/pokemon/icons/8/898.png b/public/images/pokemon/icons/8/898.png index dbe17489367..8f6605fca1a 100644 Binary files a/public/images/pokemon/icons/8/898.png and b/public/images/pokemon/icons/8/898.png differ diff --git a/public/images/pokemon/icons/8/898s-ice.png b/public/images/pokemon/icons/8/898s-ice.png index 2fe5008f4cb..d9f11d794c2 100644 Binary files a/public/images/pokemon/icons/8/898s-ice.png and b/public/images/pokemon/icons/8/898s-ice.png differ diff --git a/public/images/pokemon/icons/8/898s-shadow.png b/public/images/pokemon/icons/8/898s-shadow.png index 1cc0f7ed4de..6944f4ac2be 100644 Binary files a/public/images/pokemon/icons/8/898s-shadow.png and b/public/images/pokemon/icons/8/898s-shadow.png differ diff --git a/public/images/pokemon/icons/8/898s.png b/public/images/pokemon/icons/8/898s.png index 2ee4015c12c..f8faec12172 100644 Binary files a/public/images/pokemon/icons/8/898s.png and b/public/images/pokemon/icons/8/898s.png differ diff --git a/public/images/pokemon/icons/8/899.png b/public/images/pokemon/icons/8/899.png index e08cb3165c0..0beca32472b 100644 Binary files a/public/images/pokemon/icons/8/899.png and b/public/images/pokemon/icons/8/899.png differ diff --git a/public/images/pokemon/icons/8/899s.png b/public/images/pokemon/icons/8/899s.png index 424be3c3fb8..8ae1bf51bdb 100644 Binary files a/public/images/pokemon/icons/8/899s.png and b/public/images/pokemon/icons/8/899s.png differ diff --git a/public/images/pokemon/icons/8/900.png b/public/images/pokemon/icons/8/900.png index ffe142438d0..cf3c9e94ccb 100644 Binary files a/public/images/pokemon/icons/8/900.png and b/public/images/pokemon/icons/8/900.png differ diff --git a/public/images/pokemon/icons/8/900s.png b/public/images/pokemon/icons/8/900s.png index 7e2397ba49c..aef88b8f318 100644 Binary files a/public/images/pokemon/icons/8/900s.png and b/public/images/pokemon/icons/8/900s.png differ diff --git a/public/images/pokemon/icons/8/901.png b/public/images/pokemon/icons/8/901.png index c0da21e6a27..b75627bcaed 100644 Binary files a/public/images/pokemon/icons/8/901.png and b/public/images/pokemon/icons/8/901.png differ diff --git a/public/images/pokemon/icons/8/901s.png b/public/images/pokemon/icons/8/901s.png index 620fdab39b2..7df94491d14 100644 Binary files a/public/images/pokemon/icons/8/901s.png and b/public/images/pokemon/icons/8/901s.png differ diff --git a/public/images/pokemon/icons/8/902-female.png b/public/images/pokemon/icons/8/902-female.png index 2b0ed6ec875..be91d6b2465 100644 Binary files a/public/images/pokemon/icons/8/902-female.png and b/public/images/pokemon/icons/8/902-female.png differ diff --git a/public/images/pokemon/icons/8/902.png b/public/images/pokemon/icons/8/902.png index 94e5481bf46..42cd0183740 100644 Binary files a/public/images/pokemon/icons/8/902.png and b/public/images/pokemon/icons/8/902.png differ diff --git a/public/images/pokemon/icons/8/902s-female.png b/public/images/pokemon/icons/8/902s-female.png index a930eafa0dd..80f8f042d96 100644 Binary files a/public/images/pokemon/icons/8/902s-female.png and b/public/images/pokemon/icons/8/902s-female.png differ diff --git a/public/images/pokemon/icons/8/902s.png b/public/images/pokemon/icons/8/902s.png index a0795bfdecd..3299477222a 100644 Binary files a/public/images/pokemon/icons/8/902s.png and b/public/images/pokemon/icons/8/902s.png differ diff --git a/public/images/pokemon/icons/8/903.png b/public/images/pokemon/icons/8/903.png index c012022a962..4a617749bb9 100644 Binary files a/public/images/pokemon/icons/8/903.png and b/public/images/pokemon/icons/8/903.png differ diff --git a/public/images/pokemon/icons/8/903s.png b/public/images/pokemon/icons/8/903s.png index d358691f589..618250c27df 100644 Binary files a/public/images/pokemon/icons/8/903s.png and b/public/images/pokemon/icons/8/903s.png differ diff --git a/public/images/pokemon/icons/8/904.png b/public/images/pokemon/icons/8/904.png index bf478251f15..091b02607a7 100644 Binary files a/public/images/pokemon/icons/8/904.png and b/public/images/pokemon/icons/8/904.png differ diff --git a/public/images/pokemon/icons/8/904s.png b/public/images/pokemon/icons/8/904s.png index 2ed9f785314..311ad7e3e1b 100644 Binary files a/public/images/pokemon/icons/8/904s.png and b/public/images/pokemon/icons/8/904s.png differ diff --git a/public/images/pokemon/icons/8/905-incarnate.png b/public/images/pokemon/icons/8/905-incarnate.png index aa618f4b908..6cf913ffcfd 100644 Binary files a/public/images/pokemon/icons/8/905-incarnate.png and b/public/images/pokemon/icons/8/905-incarnate.png differ diff --git a/public/images/pokemon/icons/8/905-therian.png b/public/images/pokemon/icons/8/905-therian.png index 3782dfe465f..36b8111869c 100644 Binary files a/public/images/pokemon/icons/8/905-therian.png and b/public/images/pokemon/icons/8/905-therian.png differ diff --git a/public/images/pokemon/icons/8/905s-incarnate.png b/public/images/pokemon/icons/8/905s-incarnate.png index 40b4784f8cd..3a65961709e 100644 Binary files a/public/images/pokemon/icons/8/905s-incarnate.png and b/public/images/pokemon/icons/8/905s-incarnate.png differ diff --git a/public/images/pokemon/icons/8/905s-therian.png b/public/images/pokemon/icons/8/905s-therian.png index 26d37ff82ec..e3f057a8306 100644 Binary files a/public/images/pokemon/icons/8/905s-therian.png and b/public/images/pokemon/icons/8/905s-therian.png differ diff --git a/public/images/pokemon/icons/9/1000.png b/public/images/pokemon/icons/9/1000.png index 0704419fbe1..320b44cb0c7 100644 Binary files a/public/images/pokemon/icons/9/1000.png and b/public/images/pokemon/icons/9/1000.png differ diff --git a/public/images/pokemon/icons/9/1000s.png b/public/images/pokemon/icons/9/1000s.png index 3d77145e9c2..784c9152d0c 100644 Binary files a/public/images/pokemon/icons/9/1000s.png and b/public/images/pokemon/icons/9/1000s.png differ diff --git a/public/images/pokemon/icons/9/1001.png b/public/images/pokemon/icons/9/1001.png index 4f738dfaa93..031d36561bc 100644 Binary files a/public/images/pokemon/icons/9/1001.png and b/public/images/pokemon/icons/9/1001.png differ diff --git a/public/images/pokemon/icons/9/1001s.png b/public/images/pokemon/icons/9/1001s.png index 2d49a2086eb..3e579536387 100644 Binary files a/public/images/pokemon/icons/9/1001s.png and b/public/images/pokemon/icons/9/1001s.png differ diff --git a/public/images/pokemon/icons/9/1002.png b/public/images/pokemon/icons/9/1002.png index 3534350a6f3..db46de292d7 100644 Binary files a/public/images/pokemon/icons/9/1002.png and b/public/images/pokemon/icons/9/1002.png differ diff --git a/public/images/pokemon/icons/9/1002s.png b/public/images/pokemon/icons/9/1002s.png index ae3bf5fe6f6..8619d6e7807 100644 Binary files a/public/images/pokemon/icons/9/1002s.png and b/public/images/pokemon/icons/9/1002s.png differ diff --git a/public/images/pokemon/icons/9/1003.png b/public/images/pokemon/icons/9/1003.png index b0d97595a24..47e5d5e9513 100644 Binary files a/public/images/pokemon/icons/9/1003.png and b/public/images/pokemon/icons/9/1003.png differ diff --git a/public/images/pokemon/icons/9/1003s.png b/public/images/pokemon/icons/9/1003s.png index 50fed79fbf7..7dd358c55c7 100644 Binary files a/public/images/pokemon/icons/9/1003s.png and b/public/images/pokemon/icons/9/1003s.png differ diff --git a/public/images/pokemon/icons/9/1004.png b/public/images/pokemon/icons/9/1004.png index 5d26c4d46c4..cd695496adf 100644 Binary files a/public/images/pokemon/icons/9/1004.png and b/public/images/pokemon/icons/9/1004.png differ diff --git a/public/images/pokemon/icons/9/1004s.png b/public/images/pokemon/icons/9/1004s.png index e42e91539ab..e7e5ae95c75 100644 Binary files a/public/images/pokemon/icons/9/1004s.png and b/public/images/pokemon/icons/9/1004s.png differ diff --git a/public/images/pokemon/icons/9/1005.png b/public/images/pokemon/icons/9/1005.png index d6945e348bf..258fc87827c 100644 Binary files a/public/images/pokemon/icons/9/1005.png and b/public/images/pokemon/icons/9/1005.png differ diff --git a/public/images/pokemon/icons/9/1005s.png b/public/images/pokemon/icons/9/1005s.png index 361499236eb..9ab436133b1 100644 Binary files a/public/images/pokemon/icons/9/1005s.png and b/public/images/pokemon/icons/9/1005s.png differ diff --git a/public/images/pokemon/icons/9/1006.png b/public/images/pokemon/icons/9/1006.png index fa83c08fd5f..7256b3aea03 100644 Binary files a/public/images/pokemon/icons/9/1006.png and b/public/images/pokemon/icons/9/1006.png differ diff --git a/public/images/pokemon/icons/9/1006s.png b/public/images/pokemon/icons/9/1006s.png index 51c61ceaa25..c80de778103 100644 Binary files a/public/images/pokemon/icons/9/1006s.png and b/public/images/pokemon/icons/9/1006s.png differ diff --git a/public/images/pokemon/icons/9/1007-apex-build.png b/public/images/pokemon/icons/9/1007-apex-build.png index 62c76e2d871..b2f529c1fbe 100644 Binary files a/public/images/pokemon/icons/9/1007-apex-build.png and b/public/images/pokemon/icons/9/1007-apex-build.png differ diff --git a/public/images/pokemon/icons/9/1007s-apex-build.png b/public/images/pokemon/icons/9/1007s-apex-build.png index 633b961a0e3..b4afde94dfc 100644 Binary files a/public/images/pokemon/icons/9/1007s-apex-build.png and b/public/images/pokemon/icons/9/1007s-apex-build.png differ diff --git a/public/images/pokemon/icons/9/1008-ultimate-mode.png b/public/images/pokemon/icons/9/1008-ultimate-mode.png index 10f8ac83a07..5078b466eee 100644 Binary files a/public/images/pokemon/icons/9/1008-ultimate-mode.png and b/public/images/pokemon/icons/9/1008-ultimate-mode.png differ diff --git a/public/images/pokemon/icons/9/1008s-ultimate-mode.png b/public/images/pokemon/icons/9/1008s-ultimate-mode.png index 342ab3e9abb..ec918a4b92d 100644 Binary files a/public/images/pokemon/icons/9/1008s-ultimate-mode.png and b/public/images/pokemon/icons/9/1008s-ultimate-mode.png differ diff --git a/public/images/pokemon/icons/9/1009.png b/public/images/pokemon/icons/9/1009.png index 782cb53eeec..ce6de78a3cf 100644 Binary files a/public/images/pokemon/icons/9/1009.png and b/public/images/pokemon/icons/9/1009.png differ diff --git a/public/images/pokemon/icons/9/1009s.png b/public/images/pokemon/icons/9/1009s.png index 71a1c3980b5..b147074f9fd 100644 Binary files a/public/images/pokemon/icons/9/1009s.png and b/public/images/pokemon/icons/9/1009s.png differ diff --git a/public/images/pokemon/icons/9/1010.png b/public/images/pokemon/icons/9/1010.png index 5db511cee98..28747d897c5 100644 Binary files a/public/images/pokemon/icons/9/1010.png and b/public/images/pokemon/icons/9/1010.png differ diff --git a/public/images/pokemon/icons/9/1010s.png b/public/images/pokemon/icons/9/1010s.png index 040a9454b82..be5a538f004 100644 Binary files a/public/images/pokemon/icons/9/1010s.png and b/public/images/pokemon/icons/9/1010s.png differ diff --git a/public/images/pokemon/icons/9/1011.png b/public/images/pokemon/icons/9/1011.png index c62591c5401..6910ad1e059 100644 Binary files a/public/images/pokemon/icons/9/1011.png and b/public/images/pokemon/icons/9/1011.png differ diff --git a/public/images/pokemon/icons/9/1011s.png b/public/images/pokemon/icons/9/1011s.png index 40a0ab7c82c..9a77e7add2e 100644 Binary files a/public/images/pokemon/icons/9/1011s.png and b/public/images/pokemon/icons/9/1011s.png differ diff --git a/public/images/pokemon/icons/9/1012-artisan.png b/public/images/pokemon/icons/9/1012-artisan.png index 0eed79df1f2..9cf5df77457 100644 Binary files a/public/images/pokemon/icons/9/1012-artisan.png and b/public/images/pokemon/icons/9/1012-artisan.png differ diff --git a/public/images/pokemon/icons/9/1012-counterfeit.png b/public/images/pokemon/icons/9/1012-counterfeit.png index 0eed79df1f2..9cf5df77457 100644 Binary files a/public/images/pokemon/icons/9/1012-counterfeit.png and b/public/images/pokemon/icons/9/1012-counterfeit.png differ diff --git a/public/images/pokemon/icons/9/1012s-artisan.png b/public/images/pokemon/icons/9/1012s-artisan.png index 43d0f32a0c4..e134ee8f33a 100644 Binary files a/public/images/pokemon/icons/9/1012s-artisan.png and b/public/images/pokemon/icons/9/1012s-artisan.png differ diff --git a/public/images/pokemon/icons/9/1012s-counterfeit.png b/public/images/pokemon/icons/9/1012s-counterfeit.png index 94a663d1279..e134ee8f33a 100644 Binary files a/public/images/pokemon/icons/9/1012s-counterfeit.png and b/public/images/pokemon/icons/9/1012s-counterfeit.png differ diff --git a/public/images/pokemon/icons/9/1013-masterpiece.png b/public/images/pokemon/icons/9/1013-masterpiece.png index 7f5ee1fddd1..bc5db9f5d9a 100644 Binary files a/public/images/pokemon/icons/9/1013-masterpiece.png and b/public/images/pokemon/icons/9/1013-masterpiece.png differ diff --git a/public/images/pokemon/icons/9/1013-unremarkable.png b/public/images/pokemon/icons/9/1013-unremarkable.png index 9f4ec0cce34..5938626654f 100644 Binary files a/public/images/pokemon/icons/9/1013-unremarkable.png and b/public/images/pokemon/icons/9/1013-unremarkable.png differ diff --git a/public/images/pokemon/icons/9/1013s-masterpiece.png b/public/images/pokemon/icons/9/1013s-masterpiece.png index 85edbb60ae0..f9f89d6f7a2 100644 Binary files a/public/images/pokemon/icons/9/1013s-masterpiece.png and b/public/images/pokemon/icons/9/1013s-masterpiece.png differ diff --git a/public/images/pokemon/icons/9/1013s-unremarkable.png b/public/images/pokemon/icons/9/1013s-unremarkable.png index f0d03e2d671..f9f89d6f7a2 100644 Binary files a/public/images/pokemon/icons/9/1013s-unremarkable.png and b/public/images/pokemon/icons/9/1013s-unremarkable.png differ diff --git a/public/images/pokemon/icons/9/1014.png b/public/images/pokemon/icons/9/1014.png index 991e8fa4132..26aca721258 100644 Binary files a/public/images/pokemon/icons/9/1014.png and b/public/images/pokemon/icons/9/1014.png differ diff --git a/public/images/pokemon/icons/9/1014s.png b/public/images/pokemon/icons/9/1014s.png index a265f7d5baa..7bd1ac8b21e 100644 Binary files a/public/images/pokemon/icons/9/1014s.png and b/public/images/pokemon/icons/9/1014s.png differ diff --git a/public/images/pokemon/icons/9/1015.png b/public/images/pokemon/icons/9/1015.png index cfd55b88e6c..bd99c2c33d2 100644 Binary files a/public/images/pokemon/icons/9/1015.png and b/public/images/pokemon/icons/9/1015.png differ diff --git a/public/images/pokemon/icons/9/1015s.png b/public/images/pokemon/icons/9/1015s.png index 349d4872192..86a312a150e 100644 Binary files a/public/images/pokemon/icons/9/1015s.png and b/public/images/pokemon/icons/9/1015s.png differ diff --git a/public/images/pokemon/icons/9/1016.png b/public/images/pokemon/icons/9/1016.png index 4b9fb400670..46bbee70fb4 100644 Binary files a/public/images/pokemon/icons/9/1016.png and b/public/images/pokemon/icons/9/1016.png differ diff --git a/public/images/pokemon/icons/9/1016s.png b/public/images/pokemon/icons/9/1016s.png index a5006bf4400..20534894d41 100644 Binary files a/public/images/pokemon/icons/9/1016s.png and b/public/images/pokemon/icons/9/1016s.png differ diff --git a/public/images/pokemon/icons/9/1017-cornerstone-mask-tera.png b/public/images/pokemon/icons/9/1017-cornerstone-mask-tera.png index 0a9f20f573f..20ddbb7de0e 100644 Binary files a/public/images/pokemon/icons/9/1017-cornerstone-mask-tera.png and b/public/images/pokemon/icons/9/1017-cornerstone-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017-cornerstone-mask.png b/public/images/pokemon/icons/9/1017-cornerstone-mask.png index 0a9f20f573f..20ddbb7de0e 100644 Binary files a/public/images/pokemon/icons/9/1017-cornerstone-mask.png and b/public/images/pokemon/icons/9/1017-cornerstone-mask.png differ diff --git a/public/images/pokemon/icons/9/1017-hearthflame-mask-tera.png b/public/images/pokemon/icons/9/1017-hearthflame-mask-tera.png index 5ea6af5c054..2f90314ec20 100644 Binary files a/public/images/pokemon/icons/9/1017-hearthflame-mask-tera.png and b/public/images/pokemon/icons/9/1017-hearthflame-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017-hearthflame-mask.png b/public/images/pokemon/icons/9/1017-hearthflame-mask.png index 5ea6af5c054..2f90314ec20 100644 Binary files a/public/images/pokemon/icons/9/1017-hearthflame-mask.png and b/public/images/pokemon/icons/9/1017-hearthflame-mask.png differ diff --git a/public/images/pokemon/icons/9/1017-teal-mask-tera.png b/public/images/pokemon/icons/9/1017-teal-mask-tera.png index 32f67cbb404..e13de699d61 100644 Binary files a/public/images/pokemon/icons/9/1017-teal-mask-tera.png and b/public/images/pokemon/icons/9/1017-teal-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017-teal-mask.png b/public/images/pokemon/icons/9/1017-teal-mask.png index 32f67cbb404..e13de699d61 100644 Binary files a/public/images/pokemon/icons/9/1017-teal-mask.png and b/public/images/pokemon/icons/9/1017-teal-mask.png differ diff --git a/public/images/pokemon/icons/9/1017-wellspring-mask-tera.png b/public/images/pokemon/icons/9/1017-wellspring-mask-tera.png index 6ca1250e95d..28c55c76344 100644 Binary files a/public/images/pokemon/icons/9/1017-wellspring-mask-tera.png and b/public/images/pokemon/icons/9/1017-wellspring-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017-wellspring-mask.png b/public/images/pokemon/icons/9/1017-wellspring-mask.png index 6ca1250e95d..28c55c76344 100644 Binary files a/public/images/pokemon/icons/9/1017-wellspring-mask.png and b/public/images/pokemon/icons/9/1017-wellspring-mask.png differ diff --git a/public/images/pokemon/icons/9/1017s-cornerstone-mask-tera.png b/public/images/pokemon/icons/9/1017s-cornerstone-mask-tera.png index 0a9f20f573f..20ddbb7de0e 100644 Binary files a/public/images/pokemon/icons/9/1017s-cornerstone-mask-tera.png and b/public/images/pokemon/icons/9/1017s-cornerstone-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017s-cornerstone-mask.png b/public/images/pokemon/icons/9/1017s-cornerstone-mask.png index 0a9f20f573f..20ddbb7de0e 100644 Binary files a/public/images/pokemon/icons/9/1017s-cornerstone-mask.png and b/public/images/pokemon/icons/9/1017s-cornerstone-mask.png differ diff --git a/public/images/pokemon/icons/9/1017s-hearthflame-mask-tera.png b/public/images/pokemon/icons/9/1017s-hearthflame-mask-tera.png index 5ea6af5c054..2f90314ec20 100644 Binary files a/public/images/pokemon/icons/9/1017s-hearthflame-mask-tera.png and b/public/images/pokemon/icons/9/1017s-hearthflame-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017s-hearthflame-mask.png b/public/images/pokemon/icons/9/1017s-hearthflame-mask.png index 5ea6af5c054..2f90314ec20 100644 Binary files a/public/images/pokemon/icons/9/1017s-hearthflame-mask.png and b/public/images/pokemon/icons/9/1017s-hearthflame-mask.png differ diff --git a/public/images/pokemon/icons/9/1017s-teal-mask-tera.png b/public/images/pokemon/icons/9/1017s-teal-mask-tera.png index 32f67cbb404..e13de699d61 100644 Binary files a/public/images/pokemon/icons/9/1017s-teal-mask-tera.png and b/public/images/pokemon/icons/9/1017s-teal-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017s-teal-mask.png b/public/images/pokemon/icons/9/1017s-teal-mask.png index 32f67cbb404..e13de699d61 100644 Binary files a/public/images/pokemon/icons/9/1017s-teal-mask.png and b/public/images/pokemon/icons/9/1017s-teal-mask.png differ diff --git a/public/images/pokemon/icons/9/1017s-wellspring-mask-tera.png b/public/images/pokemon/icons/9/1017s-wellspring-mask-tera.png index 6ca1250e95d..28c55c76344 100644 Binary files a/public/images/pokemon/icons/9/1017s-wellspring-mask-tera.png and b/public/images/pokemon/icons/9/1017s-wellspring-mask-tera.png differ diff --git a/public/images/pokemon/icons/9/1017s-wellspring-mask.png b/public/images/pokemon/icons/9/1017s-wellspring-mask.png index 6ca1250e95d..28c55c76344 100644 Binary files a/public/images/pokemon/icons/9/1017s-wellspring-mask.png and b/public/images/pokemon/icons/9/1017s-wellspring-mask.png differ diff --git a/public/images/pokemon/icons/9/1018.png b/public/images/pokemon/icons/9/1018.png index 8e0486b880c..3db456eb436 100644 Binary files a/public/images/pokemon/icons/9/1018.png and b/public/images/pokemon/icons/9/1018.png differ diff --git a/public/images/pokemon/icons/9/1018s.png b/public/images/pokemon/icons/9/1018s.png index 8c6811befb3..1896c7c870d 100644 Binary files a/public/images/pokemon/icons/9/1018s.png and b/public/images/pokemon/icons/9/1018s.png differ diff --git a/public/images/pokemon/icons/9/1019.png b/public/images/pokemon/icons/9/1019.png index 0fe6df620f7..aec7a45f30e 100644 Binary files a/public/images/pokemon/icons/9/1019.png and b/public/images/pokemon/icons/9/1019.png differ diff --git a/public/images/pokemon/icons/9/1019s.png b/public/images/pokemon/icons/9/1019s.png index ae15b45b1a4..1d8cc7a904a 100644 Binary files a/public/images/pokemon/icons/9/1019s.png and b/public/images/pokemon/icons/9/1019s.png differ diff --git a/public/images/pokemon/icons/9/1020.png b/public/images/pokemon/icons/9/1020.png index 1f64400741f..a32dc2656c3 100644 Binary files a/public/images/pokemon/icons/9/1020.png and b/public/images/pokemon/icons/9/1020.png differ diff --git a/public/images/pokemon/icons/9/1020s.png b/public/images/pokemon/icons/9/1020s.png index a4c1f78d066..f10ba5b67f4 100644 Binary files a/public/images/pokemon/icons/9/1020s.png and b/public/images/pokemon/icons/9/1020s.png differ diff --git a/public/images/pokemon/icons/9/1021.png b/public/images/pokemon/icons/9/1021.png index 1f785ca88e0..d4e69189f42 100644 Binary files a/public/images/pokemon/icons/9/1021.png and b/public/images/pokemon/icons/9/1021.png differ diff --git a/public/images/pokemon/icons/9/1021s.png b/public/images/pokemon/icons/9/1021s.png index ae17c0a3043..5c814168118 100644 Binary files a/public/images/pokemon/icons/9/1021s.png and b/public/images/pokemon/icons/9/1021s.png differ diff --git a/public/images/pokemon/icons/9/1022.png b/public/images/pokemon/icons/9/1022.png index 279a855053e..137e814fa5d 100644 Binary files a/public/images/pokemon/icons/9/1022.png and b/public/images/pokemon/icons/9/1022.png differ diff --git a/public/images/pokemon/icons/9/1022s.png b/public/images/pokemon/icons/9/1022s.png index c6fbddb10ca..e38dc89ec09 100644 Binary files a/public/images/pokemon/icons/9/1022s.png and b/public/images/pokemon/icons/9/1022s.png differ diff --git a/public/images/pokemon/icons/9/1023.png b/public/images/pokemon/icons/9/1023.png index aa16f1c7f25..778180670d9 100644 Binary files a/public/images/pokemon/icons/9/1023.png and b/public/images/pokemon/icons/9/1023.png differ diff --git a/public/images/pokemon/icons/9/1023s.png b/public/images/pokemon/icons/9/1023s.png index 464414fbdfd..df4e777356c 100644 Binary files a/public/images/pokemon/icons/9/1023s.png and b/public/images/pokemon/icons/9/1023s.png differ diff --git a/public/images/pokemon/icons/9/1024-stellar.png b/public/images/pokemon/icons/9/1024-stellar.png index 045dd2733a3..badecdf357d 100644 Binary files a/public/images/pokemon/icons/9/1024-stellar.png and b/public/images/pokemon/icons/9/1024-stellar.png differ diff --git a/public/images/pokemon/icons/9/1024-terastal.png b/public/images/pokemon/icons/9/1024-terastal.png index 69c48f11717..2b1db4c3a73 100644 Binary files a/public/images/pokemon/icons/9/1024-terastal.png and b/public/images/pokemon/icons/9/1024-terastal.png differ diff --git a/public/images/pokemon/icons/9/1024.png b/public/images/pokemon/icons/9/1024.png index 4b249367857..14b4cd5e9e0 100644 Binary files a/public/images/pokemon/icons/9/1024.png and b/public/images/pokemon/icons/9/1024.png differ diff --git a/public/images/pokemon/icons/9/1024s-stellar.png b/public/images/pokemon/icons/9/1024s-stellar.png index 045dd2733a3..badecdf357d 100644 Binary files a/public/images/pokemon/icons/9/1024s-stellar.png and b/public/images/pokemon/icons/9/1024s-stellar.png differ diff --git a/public/images/pokemon/icons/9/1024s-terastal.png b/public/images/pokemon/icons/9/1024s-terastal.png index b185352883e..27db75c8a3b 100644 Binary files a/public/images/pokemon/icons/9/1024s-terastal.png and b/public/images/pokemon/icons/9/1024s-terastal.png differ diff --git a/public/images/pokemon/icons/9/1024s.png b/public/images/pokemon/icons/9/1024s.png index 2b706f4c6a0..f459acc1255 100644 Binary files a/public/images/pokemon/icons/9/1024s.png and b/public/images/pokemon/icons/9/1024s.png differ diff --git a/public/images/pokemon/icons/9/1025.png b/public/images/pokemon/icons/9/1025.png index e177f053f12..0a5717686e6 100644 Binary files a/public/images/pokemon/icons/9/1025.png and b/public/images/pokemon/icons/9/1025.png differ diff --git a/public/images/pokemon/icons/9/1025s.png b/public/images/pokemon/icons/9/1025s.png index 088a09e3f6d..c0e90f5a86b 100644 Binary files a/public/images/pokemon/icons/9/1025s.png and b/public/images/pokemon/icons/9/1025s.png differ diff --git a/public/images/pokemon/icons/9/8128-aqua.png b/public/images/pokemon/icons/9/8128-aqua.png index 6e0e8dcf8f7..89c93e6af89 100644 Binary files a/public/images/pokemon/icons/9/8128-aqua.png and b/public/images/pokemon/icons/9/8128-aqua.png differ diff --git a/public/images/pokemon/icons/9/8128-blaze.png b/public/images/pokemon/icons/9/8128-blaze.png index 6d21772b2ee..286c8337b14 100644 Binary files a/public/images/pokemon/icons/9/8128-blaze.png and b/public/images/pokemon/icons/9/8128-blaze.png differ diff --git a/public/images/pokemon/icons/9/8128.png b/public/images/pokemon/icons/9/8128.png index 0e02fea90f0..945fa9c3b10 100644 Binary files a/public/images/pokemon/icons/9/8128.png and b/public/images/pokemon/icons/9/8128.png differ diff --git a/public/images/pokemon/icons/9/8128s-aqua.png b/public/images/pokemon/icons/9/8128s-aqua.png index c55639e2983..07f91a72dd4 100644 Binary files a/public/images/pokemon/icons/9/8128s-aqua.png and b/public/images/pokemon/icons/9/8128s-aqua.png differ diff --git a/public/images/pokemon/icons/9/8128s-blaze.png b/public/images/pokemon/icons/9/8128s-blaze.png index dc5078e3a33..98a867a3a74 100644 Binary files a/public/images/pokemon/icons/9/8128s-blaze.png and b/public/images/pokemon/icons/9/8128s-blaze.png differ diff --git a/public/images/pokemon/icons/9/8128s.png b/public/images/pokemon/icons/9/8128s.png index 843bba5f595..04a58aa2634 100644 Binary files a/public/images/pokemon/icons/9/8128s.png and b/public/images/pokemon/icons/9/8128s.png differ diff --git a/public/images/pokemon/icons/9/8194.png b/public/images/pokemon/icons/9/8194.png index 98f07c62d65..fd302970bb3 100644 Binary files a/public/images/pokemon/icons/9/8194.png and b/public/images/pokemon/icons/9/8194.png differ diff --git a/public/images/pokemon/icons/9/8194s.png b/public/images/pokemon/icons/9/8194s.png index 57a85b31aee..af74118637d 100644 Binary files a/public/images/pokemon/icons/9/8194s.png and b/public/images/pokemon/icons/9/8194s.png differ diff --git a/public/images/pokemon/icons/9/8901.png b/public/images/pokemon/icons/9/8901.png index 342176f93cf..ccca867b9c7 100644 Binary files a/public/images/pokemon/icons/9/8901.png and b/public/images/pokemon/icons/9/8901.png differ diff --git a/public/images/pokemon/icons/9/8901s.png b/public/images/pokemon/icons/9/8901s.png index ece870010d0..834a198ba78 100644 Binary files a/public/images/pokemon/icons/9/8901s.png and b/public/images/pokemon/icons/9/8901s.png differ diff --git a/public/images/pokemon/icons/9/906.png b/public/images/pokemon/icons/9/906.png index 21b075ceefd..078f0e0859c 100644 Binary files a/public/images/pokemon/icons/9/906.png and b/public/images/pokemon/icons/9/906.png differ diff --git a/public/images/pokemon/icons/9/906s.png b/public/images/pokemon/icons/9/906s.png index b470d35e211..8a9eda6d0e2 100644 Binary files a/public/images/pokemon/icons/9/906s.png and b/public/images/pokemon/icons/9/906s.png differ diff --git a/public/images/pokemon/icons/9/907.png b/public/images/pokemon/icons/9/907.png index 733e71a9e31..c28a224db19 100644 Binary files a/public/images/pokemon/icons/9/907.png and b/public/images/pokemon/icons/9/907.png differ diff --git a/public/images/pokemon/icons/9/907s.png b/public/images/pokemon/icons/9/907s.png index 6a1cae547be..1a5f999bea7 100644 Binary files a/public/images/pokemon/icons/9/907s.png and b/public/images/pokemon/icons/9/907s.png differ diff --git a/public/images/pokemon/icons/9/908.png b/public/images/pokemon/icons/9/908.png index 917e080142d..6d64440e43c 100644 Binary files a/public/images/pokemon/icons/9/908.png and b/public/images/pokemon/icons/9/908.png differ diff --git a/public/images/pokemon/icons/9/908s.png b/public/images/pokemon/icons/9/908s.png index d03aee560cf..1d2505cbee0 100644 Binary files a/public/images/pokemon/icons/9/908s.png and b/public/images/pokemon/icons/9/908s.png differ diff --git a/public/images/pokemon/icons/9/909.png b/public/images/pokemon/icons/9/909.png index 0dc9a6bacd7..e01595e9a51 100644 Binary files a/public/images/pokemon/icons/9/909.png and b/public/images/pokemon/icons/9/909.png differ diff --git a/public/images/pokemon/icons/9/909s.png b/public/images/pokemon/icons/9/909s.png index 205f405379e..fd4f3674e25 100644 Binary files a/public/images/pokemon/icons/9/909s.png and b/public/images/pokemon/icons/9/909s.png differ diff --git a/public/images/pokemon/icons/9/910.png b/public/images/pokemon/icons/9/910.png index b5949a36e36..a3371552661 100644 Binary files a/public/images/pokemon/icons/9/910.png and b/public/images/pokemon/icons/9/910.png differ diff --git a/public/images/pokemon/icons/9/910s.png b/public/images/pokemon/icons/9/910s.png index 70d41b30766..0fef88e1947 100644 Binary files a/public/images/pokemon/icons/9/910s.png and b/public/images/pokemon/icons/9/910s.png differ diff --git a/public/images/pokemon/icons/9/911.png b/public/images/pokemon/icons/9/911.png index fe900f8f471..b220e7976f9 100644 Binary files a/public/images/pokemon/icons/9/911.png and b/public/images/pokemon/icons/9/911.png differ diff --git a/public/images/pokemon/icons/9/911s.png b/public/images/pokemon/icons/9/911s.png index 3d8b1cefbc9..69328bed8f1 100644 Binary files a/public/images/pokemon/icons/9/911s.png and b/public/images/pokemon/icons/9/911s.png differ diff --git a/public/images/pokemon/icons/9/912.png b/public/images/pokemon/icons/9/912.png index 7d73a2d76b9..88c635c95c3 100644 Binary files a/public/images/pokemon/icons/9/912.png and b/public/images/pokemon/icons/9/912.png differ diff --git a/public/images/pokemon/icons/9/912s.png b/public/images/pokemon/icons/9/912s.png index aceaf410f6c..26804cc56d8 100644 Binary files a/public/images/pokemon/icons/9/912s.png and b/public/images/pokemon/icons/9/912s.png differ diff --git a/public/images/pokemon/icons/9/913.png b/public/images/pokemon/icons/9/913.png index cca8fd4b740..d8ac007168c 100644 Binary files a/public/images/pokemon/icons/9/913.png and b/public/images/pokemon/icons/9/913.png differ diff --git a/public/images/pokemon/icons/9/913s.png b/public/images/pokemon/icons/9/913s.png index f24f6ae8175..7a90f7be3b9 100644 Binary files a/public/images/pokemon/icons/9/913s.png and b/public/images/pokemon/icons/9/913s.png differ diff --git a/public/images/pokemon/icons/9/914.png b/public/images/pokemon/icons/9/914.png index e85e04a5ad0..b54b7f488a2 100644 Binary files a/public/images/pokemon/icons/9/914.png and b/public/images/pokemon/icons/9/914.png differ diff --git a/public/images/pokemon/icons/9/914s.png b/public/images/pokemon/icons/9/914s.png index 17a6305beda..a9653723100 100644 Binary files a/public/images/pokemon/icons/9/914s.png and b/public/images/pokemon/icons/9/914s.png differ diff --git a/public/images/pokemon/icons/9/915.png b/public/images/pokemon/icons/9/915.png index d169e035a35..8f35f530321 100644 Binary files a/public/images/pokemon/icons/9/915.png and b/public/images/pokemon/icons/9/915.png differ diff --git a/public/images/pokemon/icons/9/915s.png b/public/images/pokemon/icons/9/915s.png index 4ee4c3eb769..21412896689 100644 Binary files a/public/images/pokemon/icons/9/915s.png and b/public/images/pokemon/icons/9/915s.png differ diff --git a/public/images/pokemon/icons/9/916-female.png b/public/images/pokemon/icons/9/916-female.png index 190644420a0..7b95b9ac6c5 100644 Binary files a/public/images/pokemon/icons/9/916-female.png and b/public/images/pokemon/icons/9/916-female.png differ diff --git a/public/images/pokemon/icons/9/916.png b/public/images/pokemon/icons/9/916.png index 41b2699a681..883df3c865b 100644 Binary files a/public/images/pokemon/icons/9/916.png and b/public/images/pokemon/icons/9/916.png differ diff --git a/public/images/pokemon/icons/9/916s-female.png b/public/images/pokemon/icons/9/916s-female.png index 8f492f28d79..3fb28d76ef8 100644 Binary files a/public/images/pokemon/icons/9/916s-female.png and b/public/images/pokemon/icons/9/916s-female.png differ diff --git a/public/images/pokemon/icons/9/916s.png b/public/images/pokemon/icons/9/916s.png index 16f2f9a5d09..3ade4670fb0 100644 Binary files a/public/images/pokemon/icons/9/916s.png and b/public/images/pokemon/icons/9/916s.png differ diff --git a/public/images/pokemon/icons/9/917.png b/public/images/pokemon/icons/9/917.png index 341baeefd57..066ba8b3e8a 100644 Binary files a/public/images/pokemon/icons/9/917.png and b/public/images/pokemon/icons/9/917.png differ diff --git a/public/images/pokemon/icons/9/917s.png b/public/images/pokemon/icons/9/917s.png index 3d3884e4c75..dcb8d7ab103 100644 Binary files a/public/images/pokemon/icons/9/917s.png and b/public/images/pokemon/icons/9/917s.png differ diff --git a/public/images/pokemon/icons/9/918.png b/public/images/pokemon/icons/9/918.png index 6d84430fb5b..4e44a58254c 100644 Binary files a/public/images/pokemon/icons/9/918.png and b/public/images/pokemon/icons/9/918.png differ diff --git a/public/images/pokemon/icons/9/918s.png b/public/images/pokemon/icons/9/918s.png index 7a84bd0f0cd..1d4650ddd19 100644 Binary files a/public/images/pokemon/icons/9/918s.png and b/public/images/pokemon/icons/9/918s.png differ diff --git a/public/images/pokemon/icons/9/919.png b/public/images/pokemon/icons/9/919.png index e63d0db3f3f..1cf08b46712 100644 Binary files a/public/images/pokemon/icons/9/919.png and b/public/images/pokemon/icons/9/919.png differ diff --git a/public/images/pokemon/icons/9/919s.png b/public/images/pokemon/icons/9/919s.png index 486a045525e..35bae4045af 100644 Binary files a/public/images/pokemon/icons/9/919s.png and b/public/images/pokemon/icons/9/919s.png differ diff --git a/public/images/pokemon/icons/9/920.png b/public/images/pokemon/icons/9/920.png index 5f2e7ca1023..c8cb92df616 100644 Binary files a/public/images/pokemon/icons/9/920.png and b/public/images/pokemon/icons/9/920.png differ diff --git a/public/images/pokemon/icons/9/920s.png b/public/images/pokemon/icons/9/920s.png index aeaec8a15ff..35a698d1108 100644 Binary files a/public/images/pokemon/icons/9/920s.png and b/public/images/pokemon/icons/9/920s.png differ diff --git a/public/images/pokemon/icons/9/921.png b/public/images/pokemon/icons/9/921.png index ed62e460977..db8b2b2e491 100644 Binary files a/public/images/pokemon/icons/9/921.png and b/public/images/pokemon/icons/9/921.png differ diff --git a/public/images/pokemon/icons/9/921s.png b/public/images/pokemon/icons/9/921s.png index d736553887e..7866db083cd 100644 Binary files a/public/images/pokemon/icons/9/921s.png and b/public/images/pokemon/icons/9/921s.png differ diff --git a/public/images/pokemon/icons/9/922.png b/public/images/pokemon/icons/9/922.png index fabf847979d..8efd0e863d1 100644 Binary files a/public/images/pokemon/icons/9/922.png and b/public/images/pokemon/icons/9/922.png differ diff --git a/public/images/pokemon/icons/9/922s.png b/public/images/pokemon/icons/9/922s.png index 141b849228a..073fb8e849b 100644 Binary files a/public/images/pokemon/icons/9/922s.png and b/public/images/pokemon/icons/9/922s.png differ diff --git a/public/images/pokemon/icons/9/923.png b/public/images/pokemon/icons/9/923.png index f31cb72324f..7b8e0f766e1 100644 Binary files a/public/images/pokemon/icons/9/923.png and b/public/images/pokemon/icons/9/923.png differ diff --git a/public/images/pokemon/icons/9/923s.png b/public/images/pokemon/icons/9/923s.png index c2c48b3903a..295a3ee49ee 100644 Binary files a/public/images/pokemon/icons/9/923s.png and b/public/images/pokemon/icons/9/923s.png differ diff --git a/public/images/pokemon/icons/9/924.png b/public/images/pokemon/icons/9/924.png index 947d27eb736..7de78a8e5f6 100644 Binary files a/public/images/pokemon/icons/9/924.png and b/public/images/pokemon/icons/9/924.png differ diff --git a/public/images/pokemon/icons/9/924s.png b/public/images/pokemon/icons/9/924s.png index 5216fba71dd..4851b07de4d 100644 Binary files a/public/images/pokemon/icons/9/924s.png and b/public/images/pokemon/icons/9/924s.png differ diff --git a/public/images/pokemon/icons/9/925-four.png b/public/images/pokemon/icons/9/925-four.png index 2d7d7dfca2b..c2ba3e174ce 100644 Binary files a/public/images/pokemon/icons/9/925-four.png and b/public/images/pokemon/icons/9/925-four.png differ diff --git a/public/images/pokemon/icons/9/925-three.png b/public/images/pokemon/icons/9/925-three.png index 0598b31c44f..2ff360145b6 100644 Binary files a/public/images/pokemon/icons/9/925-three.png and b/public/images/pokemon/icons/9/925-three.png differ diff --git a/public/images/pokemon/icons/9/925s-four.png b/public/images/pokemon/icons/9/925s-four.png index 5258bb75c02..41c76b0834c 100644 Binary files a/public/images/pokemon/icons/9/925s-four.png and b/public/images/pokemon/icons/9/925s-four.png differ diff --git a/public/images/pokemon/icons/9/925s-three.png b/public/images/pokemon/icons/9/925s-three.png index 3b5050479ea..211a34e93d7 100644 Binary files a/public/images/pokemon/icons/9/925s-three.png and b/public/images/pokemon/icons/9/925s-three.png differ diff --git a/public/images/pokemon/icons/9/926.png b/public/images/pokemon/icons/9/926.png index 234750b1dce..9c2c3beeb7b 100644 Binary files a/public/images/pokemon/icons/9/926.png and b/public/images/pokemon/icons/9/926.png differ diff --git a/public/images/pokemon/icons/9/926s.png b/public/images/pokemon/icons/9/926s.png index b9269aaa7f4..782c7987043 100644 Binary files a/public/images/pokemon/icons/9/926s.png and b/public/images/pokemon/icons/9/926s.png differ diff --git a/public/images/pokemon/icons/9/927.png b/public/images/pokemon/icons/9/927.png index 54e19a82020..4cf8b6bd84e 100644 Binary files a/public/images/pokemon/icons/9/927.png and b/public/images/pokemon/icons/9/927.png differ diff --git a/public/images/pokemon/icons/9/927s.png b/public/images/pokemon/icons/9/927s.png index 05006f95168..6a2b3f1c84d 100644 Binary files a/public/images/pokemon/icons/9/927s.png and b/public/images/pokemon/icons/9/927s.png differ diff --git a/public/images/pokemon/icons/9/928.png b/public/images/pokemon/icons/9/928.png index cf2494650fd..3a7322280d2 100644 Binary files a/public/images/pokemon/icons/9/928.png and b/public/images/pokemon/icons/9/928.png differ diff --git a/public/images/pokemon/icons/9/928s.png b/public/images/pokemon/icons/9/928s.png index 4cf2903a9cd..36b1591fb3a 100644 Binary files a/public/images/pokemon/icons/9/928s.png and b/public/images/pokemon/icons/9/928s.png differ diff --git a/public/images/pokemon/icons/9/929.png b/public/images/pokemon/icons/9/929.png index 681e69ed4af..ad4a8cb5fde 100644 Binary files a/public/images/pokemon/icons/9/929.png and b/public/images/pokemon/icons/9/929.png differ diff --git a/public/images/pokemon/icons/9/929s.png b/public/images/pokemon/icons/9/929s.png index b9dc846150e..b55a2de8e08 100644 Binary files a/public/images/pokemon/icons/9/929s.png and b/public/images/pokemon/icons/9/929s.png differ diff --git a/public/images/pokemon/icons/9/930.png b/public/images/pokemon/icons/9/930.png index de58d1fd571..b2a59aff387 100644 Binary files a/public/images/pokemon/icons/9/930.png and b/public/images/pokemon/icons/9/930.png differ diff --git a/public/images/pokemon/icons/9/930s.png b/public/images/pokemon/icons/9/930s.png index 4376d0fcb06..df06eff7d7e 100644 Binary files a/public/images/pokemon/icons/9/930s.png and b/public/images/pokemon/icons/9/930s.png differ diff --git a/public/images/pokemon/icons/9/931-blue-plumage.png b/public/images/pokemon/icons/9/931-blue-plumage.png index 9feb2f10bf4..0c154426dc0 100644 Binary files a/public/images/pokemon/icons/9/931-blue-plumage.png and b/public/images/pokemon/icons/9/931-blue-plumage.png differ diff --git a/public/images/pokemon/icons/9/931-green-plumage.png b/public/images/pokemon/icons/9/931-green-plumage.png index a8c564f49c7..250bbe8761a 100644 Binary files a/public/images/pokemon/icons/9/931-green-plumage.png and b/public/images/pokemon/icons/9/931-green-plumage.png differ diff --git a/public/images/pokemon/icons/9/931-white-plumage.png b/public/images/pokemon/icons/9/931-white-plumage.png index ab83292fee2..b7acd695926 100644 Binary files a/public/images/pokemon/icons/9/931-white-plumage.png and b/public/images/pokemon/icons/9/931-white-plumage.png differ diff --git a/public/images/pokemon/icons/9/931-yellow-plumage.png b/public/images/pokemon/icons/9/931-yellow-plumage.png index 6e50f2450db..0afcc2ad71e 100644 Binary files a/public/images/pokemon/icons/9/931-yellow-plumage.png and b/public/images/pokemon/icons/9/931-yellow-plumage.png differ diff --git a/public/images/pokemon/icons/9/931s-blue-plumage.png b/public/images/pokemon/icons/9/931s-blue-plumage.png index e2500167d13..40596e70673 100644 Binary files a/public/images/pokemon/icons/9/931s-blue-plumage.png and b/public/images/pokemon/icons/9/931s-blue-plumage.png differ diff --git a/public/images/pokemon/icons/9/931s-green-plumage.png b/public/images/pokemon/icons/9/931s-green-plumage.png index 4b84186cca3..94806761dad 100644 Binary files a/public/images/pokemon/icons/9/931s-green-plumage.png and b/public/images/pokemon/icons/9/931s-green-plumage.png differ diff --git a/public/images/pokemon/icons/9/931s-white-plumage.png b/public/images/pokemon/icons/9/931s-white-plumage.png index 3a24cba58a1..10db8aba93c 100644 Binary files a/public/images/pokemon/icons/9/931s-white-plumage.png and b/public/images/pokemon/icons/9/931s-white-plumage.png differ diff --git a/public/images/pokemon/icons/9/931s-yellow-plumage.png b/public/images/pokemon/icons/9/931s-yellow-plumage.png index 8ccdd51a9fa..49609c3cafe 100644 Binary files a/public/images/pokemon/icons/9/931s-yellow-plumage.png and b/public/images/pokemon/icons/9/931s-yellow-plumage.png differ diff --git a/public/images/pokemon/icons/9/932.png b/public/images/pokemon/icons/9/932.png index a4a5d935420..979bbe38cb9 100644 Binary files a/public/images/pokemon/icons/9/932.png and b/public/images/pokemon/icons/9/932.png differ diff --git a/public/images/pokemon/icons/9/932s.png b/public/images/pokemon/icons/9/932s.png index 5a8e5037b12..a3f40375aef 100644 Binary files a/public/images/pokemon/icons/9/932s.png and b/public/images/pokemon/icons/9/932s.png differ diff --git a/public/images/pokemon/icons/9/933.png b/public/images/pokemon/icons/9/933.png index e18a3a9a482..961d22ddc71 100644 Binary files a/public/images/pokemon/icons/9/933.png and b/public/images/pokemon/icons/9/933.png differ diff --git a/public/images/pokemon/icons/9/933s.png b/public/images/pokemon/icons/9/933s.png index 9bd76be0063..8e71bed1c01 100644 Binary files a/public/images/pokemon/icons/9/933s.png and b/public/images/pokemon/icons/9/933s.png differ diff --git a/public/images/pokemon/icons/9/934.png b/public/images/pokemon/icons/9/934.png index 365b7a31276..8641e62c746 100644 Binary files a/public/images/pokemon/icons/9/934.png and b/public/images/pokemon/icons/9/934.png differ diff --git a/public/images/pokemon/icons/9/934s.png b/public/images/pokemon/icons/9/934s.png index 485cacd6ab6..2ac678402e3 100644 Binary files a/public/images/pokemon/icons/9/934s.png and b/public/images/pokemon/icons/9/934s.png differ diff --git a/public/images/pokemon/icons/9/935.png b/public/images/pokemon/icons/9/935.png index 596ac0ed923..70983fdefb2 100644 Binary files a/public/images/pokemon/icons/9/935.png and b/public/images/pokemon/icons/9/935.png differ diff --git a/public/images/pokemon/icons/9/935s.png b/public/images/pokemon/icons/9/935s.png index 86fd25f458a..2e2a79ddf0e 100644 Binary files a/public/images/pokemon/icons/9/935s.png and b/public/images/pokemon/icons/9/935s.png differ diff --git a/public/images/pokemon/icons/9/936.png b/public/images/pokemon/icons/9/936.png index 0d43861ed8a..f1c2e5aec38 100644 Binary files a/public/images/pokemon/icons/9/936.png and b/public/images/pokemon/icons/9/936.png differ diff --git a/public/images/pokemon/icons/9/936s.png b/public/images/pokemon/icons/9/936s.png index 4c4adbd4721..2a702a9b284 100644 Binary files a/public/images/pokemon/icons/9/936s.png and b/public/images/pokemon/icons/9/936s.png differ diff --git a/public/images/pokemon/icons/9/937.png b/public/images/pokemon/icons/9/937.png index a9e53b8885e..27c0ade6f5d 100644 Binary files a/public/images/pokemon/icons/9/937.png and b/public/images/pokemon/icons/9/937.png differ diff --git a/public/images/pokemon/icons/9/937s.png b/public/images/pokemon/icons/9/937s.png index f58afc5ccb3..b62ed01bc31 100644 Binary files a/public/images/pokemon/icons/9/937s.png and b/public/images/pokemon/icons/9/937s.png differ diff --git a/public/images/pokemon/icons/9/938.png b/public/images/pokemon/icons/9/938.png index afc1dda5e22..dec510b4470 100644 Binary files a/public/images/pokemon/icons/9/938.png and b/public/images/pokemon/icons/9/938.png differ diff --git a/public/images/pokemon/icons/9/938s.png b/public/images/pokemon/icons/9/938s.png index 9a6e5222d3e..f1a947a153c 100644 Binary files a/public/images/pokemon/icons/9/938s.png and b/public/images/pokemon/icons/9/938s.png differ diff --git a/public/images/pokemon/icons/9/939.png b/public/images/pokemon/icons/9/939.png index a60afbec78b..35fa2af95a5 100644 Binary files a/public/images/pokemon/icons/9/939.png and b/public/images/pokemon/icons/9/939.png differ diff --git a/public/images/pokemon/icons/9/939s.png b/public/images/pokemon/icons/9/939s.png index c04ed994416..a81df53aef3 100644 Binary files a/public/images/pokemon/icons/9/939s.png and b/public/images/pokemon/icons/9/939s.png differ diff --git a/public/images/pokemon/icons/9/940.png b/public/images/pokemon/icons/9/940.png index 71203702361..d541aaa56d0 100644 Binary files a/public/images/pokemon/icons/9/940.png and b/public/images/pokemon/icons/9/940.png differ diff --git a/public/images/pokemon/icons/9/940s.png b/public/images/pokemon/icons/9/940s.png index c2acdb1ff3e..035069a5846 100644 Binary files a/public/images/pokemon/icons/9/940s.png and b/public/images/pokemon/icons/9/940s.png differ diff --git a/public/images/pokemon/icons/9/941.png b/public/images/pokemon/icons/9/941.png index 0ffa593e978..4fbd4550cbd 100644 Binary files a/public/images/pokemon/icons/9/941.png and b/public/images/pokemon/icons/9/941.png differ diff --git a/public/images/pokemon/icons/9/941s.png b/public/images/pokemon/icons/9/941s.png index cb319856765..df80549aa33 100644 Binary files a/public/images/pokemon/icons/9/941s.png and b/public/images/pokemon/icons/9/941s.png differ diff --git a/public/images/pokemon/icons/9/942.png b/public/images/pokemon/icons/9/942.png index be316605891..a1735d5613c 100644 Binary files a/public/images/pokemon/icons/9/942.png and b/public/images/pokemon/icons/9/942.png differ diff --git a/public/images/pokemon/icons/9/942s.png b/public/images/pokemon/icons/9/942s.png index b586a89b2ed..286ed6e49d4 100644 Binary files a/public/images/pokemon/icons/9/942s.png and b/public/images/pokemon/icons/9/942s.png differ diff --git a/public/images/pokemon/icons/9/943.png b/public/images/pokemon/icons/9/943.png index a836981aadb..37ae990d2c5 100644 Binary files a/public/images/pokemon/icons/9/943.png and b/public/images/pokemon/icons/9/943.png differ diff --git a/public/images/pokemon/icons/9/943s.png b/public/images/pokemon/icons/9/943s.png index 27d5a90a438..b581e1101e2 100644 Binary files a/public/images/pokemon/icons/9/943s.png and b/public/images/pokemon/icons/9/943s.png differ diff --git a/public/images/pokemon/icons/9/944.png b/public/images/pokemon/icons/9/944.png index c8028d3fbcf..b092e09146e 100644 Binary files a/public/images/pokemon/icons/9/944.png and b/public/images/pokemon/icons/9/944.png differ diff --git a/public/images/pokemon/icons/9/944s.png b/public/images/pokemon/icons/9/944s.png index 18ce80539d8..26d1b78011c 100644 Binary files a/public/images/pokemon/icons/9/944s.png and b/public/images/pokemon/icons/9/944s.png differ diff --git a/public/images/pokemon/icons/9/945.png b/public/images/pokemon/icons/9/945.png index 25abfaf8f6c..ed688a672ef 100644 Binary files a/public/images/pokemon/icons/9/945.png and b/public/images/pokemon/icons/9/945.png differ diff --git a/public/images/pokemon/icons/9/945s.png b/public/images/pokemon/icons/9/945s.png index 20c24c77a85..b1d6632f610 100644 Binary files a/public/images/pokemon/icons/9/945s.png and b/public/images/pokemon/icons/9/945s.png differ diff --git a/public/images/pokemon/icons/9/946.png b/public/images/pokemon/icons/9/946.png index 7d7e2b9a0e8..7cbb0d91f1b 100644 Binary files a/public/images/pokemon/icons/9/946.png and b/public/images/pokemon/icons/9/946.png differ diff --git a/public/images/pokemon/icons/9/946s.png b/public/images/pokemon/icons/9/946s.png index a84197d70f5..5c69ad0aaeb 100644 Binary files a/public/images/pokemon/icons/9/946s.png and b/public/images/pokemon/icons/9/946s.png differ diff --git a/public/images/pokemon/icons/9/947.png b/public/images/pokemon/icons/9/947.png index 4b7a615ab72..d27e5e07cf9 100644 Binary files a/public/images/pokemon/icons/9/947.png and b/public/images/pokemon/icons/9/947.png differ diff --git a/public/images/pokemon/icons/9/947s.png b/public/images/pokemon/icons/9/947s.png index 5880cf539a5..d1af401ddb1 100644 Binary files a/public/images/pokemon/icons/9/947s.png and b/public/images/pokemon/icons/9/947s.png differ diff --git a/public/images/pokemon/icons/9/948.png b/public/images/pokemon/icons/9/948.png index ce4c9e9be32..6c71bc1d349 100644 Binary files a/public/images/pokemon/icons/9/948.png and b/public/images/pokemon/icons/9/948.png differ diff --git a/public/images/pokemon/icons/9/948s.png b/public/images/pokemon/icons/9/948s.png index 14a507476ad..396fb65b078 100644 Binary files a/public/images/pokemon/icons/9/948s.png and b/public/images/pokemon/icons/9/948s.png differ diff --git a/public/images/pokemon/icons/9/949.png b/public/images/pokemon/icons/9/949.png index 6bec7a609da..fb03ce75809 100644 Binary files a/public/images/pokemon/icons/9/949.png and b/public/images/pokemon/icons/9/949.png differ diff --git a/public/images/pokemon/icons/9/949s.png b/public/images/pokemon/icons/9/949s.png index 55bab3cf699..05b9a92448d 100644 Binary files a/public/images/pokemon/icons/9/949s.png and b/public/images/pokemon/icons/9/949s.png differ diff --git a/public/images/pokemon/icons/9/950.png b/public/images/pokemon/icons/9/950.png index b0d85bfbd5e..16c7b04805b 100644 Binary files a/public/images/pokemon/icons/9/950.png and b/public/images/pokemon/icons/9/950.png differ diff --git a/public/images/pokemon/icons/9/950s.png b/public/images/pokemon/icons/9/950s.png index cb25c2d8a0b..f5d05cc359c 100644 Binary files a/public/images/pokemon/icons/9/950s.png and b/public/images/pokemon/icons/9/950s.png differ diff --git a/public/images/pokemon/icons/9/951.png b/public/images/pokemon/icons/9/951.png index 2d210770f44..dff9d24e416 100644 Binary files a/public/images/pokemon/icons/9/951.png and b/public/images/pokemon/icons/9/951.png differ diff --git a/public/images/pokemon/icons/9/951s.png b/public/images/pokemon/icons/9/951s.png index 23356294c70..a8dca81b7bb 100644 Binary files a/public/images/pokemon/icons/9/951s.png and b/public/images/pokemon/icons/9/951s.png differ diff --git a/public/images/pokemon/icons/9/952.png b/public/images/pokemon/icons/9/952.png index 8d40def891a..cab0b9977f2 100644 Binary files a/public/images/pokemon/icons/9/952.png and b/public/images/pokemon/icons/9/952.png differ diff --git a/public/images/pokemon/icons/9/952s.png b/public/images/pokemon/icons/9/952s.png index 9989fa17c14..3499c81dcc9 100644 Binary files a/public/images/pokemon/icons/9/952s.png and b/public/images/pokemon/icons/9/952s.png differ diff --git a/public/images/pokemon/icons/9/953.png b/public/images/pokemon/icons/9/953.png index 6bb90ff2493..0f970f8dd91 100644 Binary files a/public/images/pokemon/icons/9/953.png and b/public/images/pokemon/icons/9/953.png differ diff --git a/public/images/pokemon/icons/9/953s.png b/public/images/pokemon/icons/9/953s.png index e1f9cecdbf7..6706f337bba 100644 Binary files a/public/images/pokemon/icons/9/953s.png and b/public/images/pokemon/icons/9/953s.png differ diff --git a/public/images/pokemon/icons/9/954.png b/public/images/pokemon/icons/9/954.png index d8f157d87cc..6110b6fcaa2 100644 Binary files a/public/images/pokemon/icons/9/954.png and b/public/images/pokemon/icons/9/954.png differ diff --git a/public/images/pokemon/icons/9/954s.png b/public/images/pokemon/icons/9/954s.png index dc16a6e5a7e..d437b73bc06 100644 Binary files a/public/images/pokemon/icons/9/954s.png and b/public/images/pokemon/icons/9/954s.png differ diff --git a/public/images/pokemon/icons/9/955.png b/public/images/pokemon/icons/9/955.png index 516aec63d99..a8e0fcdbdaa 100644 Binary files a/public/images/pokemon/icons/9/955.png and b/public/images/pokemon/icons/9/955.png differ diff --git a/public/images/pokemon/icons/9/955s.png b/public/images/pokemon/icons/9/955s.png index b8779bce98f..607e03101ea 100644 Binary files a/public/images/pokemon/icons/9/955s.png and b/public/images/pokemon/icons/9/955s.png differ diff --git a/public/images/pokemon/icons/9/956.png b/public/images/pokemon/icons/9/956.png index bdac9cdc2c4..4faf1cfe52c 100644 Binary files a/public/images/pokemon/icons/9/956.png and b/public/images/pokemon/icons/9/956.png differ diff --git a/public/images/pokemon/icons/9/956s.png b/public/images/pokemon/icons/9/956s.png index 5b22d69dd9e..fa5267faa00 100644 Binary files a/public/images/pokemon/icons/9/956s.png and b/public/images/pokemon/icons/9/956s.png differ diff --git a/public/images/pokemon/icons/9/957.png b/public/images/pokemon/icons/9/957.png index ac2736e6656..afaf3cf1168 100644 Binary files a/public/images/pokemon/icons/9/957.png and b/public/images/pokemon/icons/9/957.png differ diff --git a/public/images/pokemon/icons/9/957s.png b/public/images/pokemon/icons/9/957s.png index b30b486bdca..7fa1a4f68be 100644 Binary files a/public/images/pokemon/icons/9/957s.png and b/public/images/pokemon/icons/9/957s.png differ diff --git a/public/images/pokemon/icons/9/958.png b/public/images/pokemon/icons/9/958.png index d8ffe785580..d98481c7c06 100644 Binary files a/public/images/pokemon/icons/9/958.png and b/public/images/pokemon/icons/9/958.png differ diff --git a/public/images/pokemon/icons/9/958s.png b/public/images/pokemon/icons/9/958s.png index 93b82781616..00fbeb85a26 100644 Binary files a/public/images/pokemon/icons/9/958s.png and b/public/images/pokemon/icons/9/958s.png differ diff --git a/public/images/pokemon/icons/9/959.png b/public/images/pokemon/icons/9/959.png index 58d05159b90..9d138c1d30e 100644 Binary files a/public/images/pokemon/icons/9/959.png and b/public/images/pokemon/icons/9/959.png differ diff --git a/public/images/pokemon/icons/9/959s.png b/public/images/pokemon/icons/9/959s.png index 258dd943737..261e4051c30 100644 Binary files a/public/images/pokemon/icons/9/959s.png and b/public/images/pokemon/icons/9/959s.png differ diff --git a/public/images/pokemon/icons/9/960.png b/public/images/pokemon/icons/9/960.png index 1735e4a4438..502aaecff92 100644 Binary files a/public/images/pokemon/icons/9/960.png and b/public/images/pokemon/icons/9/960.png differ diff --git a/public/images/pokemon/icons/9/960s.png b/public/images/pokemon/icons/9/960s.png index 8a5200edd54..326124c2696 100644 Binary files a/public/images/pokemon/icons/9/960s.png and b/public/images/pokemon/icons/9/960s.png differ diff --git a/public/images/pokemon/icons/9/961.png b/public/images/pokemon/icons/9/961.png index 32a374e18a1..1ef54d7872f 100644 Binary files a/public/images/pokemon/icons/9/961.png and b/public/images/pokemon/icons/9/961.png differ diff --git a/public/images/pokemon/icons/9/961s.png b/public/images/pokemon/icons/9/961s.png index 42d4ef21874..b986f39c5f4 100644 Binary files a/public/images/pokemon/icons/9/961s.png and b/public/images/pokemon/icons/9/961s.png differ diff --git a/public/images/pokemon/icons/9/962.png b/public/images/pokemon/icons/9/962.png index 86725dc237c..81f1b165cb7 100644 Binary files a/public/images/pokemon/icons/9/962.png and b/public/images/pokemon/icons/9/962.png differ diff --git a/public/images/pokemon/icons/9/962s.png b/public/images/pokemon/icons/9/962s.png index 20d95bf5309..796a89a4cb0 100644 Binary files a/public/images/pokemon/icons/9/962s.png and b/public/images/pokemon/icons/9/962s.png differ diff --git a/public/images/pokemon/icons/9/963.png b/public/images/pokemon/icons/9/963.png index 91c30c98eac..53c0197c054 100644 Binary files a/public/images/pokemon/icons/9/963.png and b/public/images/pokemon/icons/9/963.png differ diff --git a/public/images/pokemon/icons/9/963s.png b/public/images/pokemon/icons/9/963s.png index 3a25120a322..745b030b06a 100644 Binary files a/public/images/pokemon/icons/9/963s.png and b/public/images/pokemon/icons/9/963s.png differ diff --git a/public/images/pokemon/icons/9/964-hero.png b/public/images/pokemon/icons/9/964-hero.png index c81203aefae..d6565401970 100644 Binary files a/public/images/pokemon/icons/9/964-hero.png and b/public/images/pokemon/icons/9/964-hero.png differ diff --git a/public/images/pokemon/icons/9/964-zero.png b/public/images/pokemon/icons/9/964-zero.png index c4fea7a72cb..7421d44e0ed 100644 Binary files a/public/images/pokemon/icons/9/964-zero.png and b/public/images/pokemon/icons/9/964-zero.png differ diff --git a/public/images/pokemon/icons/9/964s-hero.png b/public/images/pokemon/icons/9/964s-hero.png index 83b3577e4ba..99dd84c5661 100644 Binary files a/public/images/pokemon/icons/9/964s-hero.png and b/public/images/pokemon/icons/9/964s-hero.png differ diff --git a/public/images/pokemon/icons/9/964s-zero.png b/public/images/pokemon/icons/9/964s-zero.png index 7b0a0b637a7..07e6362319d 100644 Binary files a/public/images/pokemon/icons/9/964s-zero.png and b/public/images/pokemon/icons/9/964s-zero.png differ diff --git a/public/images/pokemon/icons/9/965.png b/public/images/pokemon/icons/9/965.png index a2571bee493..27d5ef4462b 100644 Binary files a/public/images/pokemon/icons/9/965.png and b/public/images/pokemon/icons/9/965.png differ diff --git a/public/images/pokemon/icons/9/965s.png b/public/images/pokemon/icons/9/965s.png index 9c2723d2d89..7736f448c4e 100644 Binary files a/public/images/pokemon/icons/9/965s.png and b/public/images/pokemon/icons/9/965s.png differ diff --git a/public/images/pokemon/icons/9/966-caph-starmobile.png b/public/images/pokemon/icons/9/966-caph-starmobile.png index fba351495bd..bb768569920 100644 Binary files a/public/images/pokemon/icons/9/966-caph-starmobile.png and b/public/images/pokemon/icons/9/966-caph-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966-navi-starmobile.png b/public/images/pokemon/icons/9/966-navi-starmobile.png index fba351495bd..bb768569920 100644 Binary files a/public/images/pokemon/icons/9/966-navi-starmobile.png and b/public/images/pokemon/icons/9/966-navi-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966-ruchbah-starmobile.png b/public/images/pokemon/icons/9/966-ruchbah-starmobile.png index fba351495bd..bb768569920 100644 Binary files a/public/images/pokemon/icons/9/966-ruchbah-starmobile.png and b/public/images/pokemon/icons/9/966-ruchbah-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966-schedar-starmobile.png b/public/images/pokemon/icons/9/966-schedar-starmobile.png index fba351495bd..bb768569920 100644 Binary files a/public/images/pokemon/icons/9/966-schedar-starmobile.png and b/public/images/pokemon/icons/9/966-schedar-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966-segin-starmobile.png b/public/images/pokemon/icons/9/966-segin-starmobile.png index fba351495bd..bb768569920 100644 Binary files a/public/images/pokemon/icons/9/966-segin-starmobile.png and b/public/images/pokemon/icons/9/966-segin-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966.png b/public/images/pokemon/icons/9/966.png index fba351495bd..bb768569920 100644 Binary files a/public/images/pokemon/icons/9/966.png and b/public/images/pokemon/icons/9/966.png differ diff --git a/public/images/pokemon/icons/9/966s-caph-starmobile.png b/public/images/pokemon/icons/9/966s-caph-starmobile.png index e54e5c90e4a..bc5c87cd409 100644 Binary files a/public/images/pokemon/icons/9/966s-caph-starmobile.png and b/public/images/pokemon/icons/9/966s-caph-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966s-navi-starmobile.png b/public/images/pokemon/icons/9/966s-navi-starmobile.png index e54e5c90e4a..bc5c87cd409 100644 Binary files a/public/images/pokemon/icons/9/966s-navi-starmobile.png and b/public/images/pokemon/icons/9/966s-navi-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966s-ruchbah-starmobile.png b/public/images/pokemon/icons/9/966s-ruchbah-starmobile.png index e54e5c90e4a..bc5c87cd409 100644 Binary files a/public/images/pokemon/icons/9/966s-ruchbah-starmobile.png and b/public/images/pokemon/icons/9/966s-ruchbah-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966s-schedar-starmobile.png b/public/images/pokemon/icons/9/966s-schedar-starmobile.png index e54e5c90e4a..bc5c87cd409 100644 Binary files a/public/images/pokemon/icons/9/966s-schedar-starmobile.png and b/public/images/pokemon/icons/9/966s-schedar-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966s-segin-starmobile.png b/public/images/pokemon/icons/9/966s-segin-starmobile.png index e54e5c90e4a..bc5c87cd409 100644 Binary files a/public/images/pokemon/icons/9/966s-segin-starmobile.png and b/public/images/pokemon/icons/9/966s-segin-starmobile.png differ diff --git a/public/images/pokemon/icons/9/966s.png b/public/images/pokemon/icons/9/966s.png index e54e5c90e4a..bc5c87cd409 100644 Binary files a/public/images/pokemon/icons/9/966s.png and b/public/images/pokemon/icons/9/966s.png differ diff --git a/public/images/pokemon/icons/9/967.png b/public/images/pokemon/icons/9/967.png index 982714a4ff1..e6c0dc4e9a8 100644 Binary files a/public/images/pokemon/icons/9/967.png and b/public/images/pokemon/icons/9/967.png differ diff --git a/public/images/pokemon/icons/9/967s.png b/public/images/pokemon/icons/9/967s.png index f55390b9b7b..8e6ae9c162b 100644 Binary files a/public/images/pokemon/icons/9/967s.png and b/public/images/pokemon/icons/9/967s.png differ diff --git a/public/images/pokemon/icons/9/968.png b/public/images/pokemon/icons/9/968.png index d4f089584de..3480f2bedb4 100644 Binary files a/public/images/pokemon/icons/9/968.png and b/public/images/pokemon/icons/9/968.png differ diff --git a/public/images/pokemon/icons/9/968s.png b/public/images/pokemon/icons/9/968s.png index 88e9566c50b..22017f52f7f 100644 Binary files a/public/images/pokemon/icons/9/968s.png and b/public/images/pokemon/icons/9/968s.png differ diff --git a/public/images/pokemon/icons/9/969.png b/public/images/pokemon/icons/9/969.png index 15845dd27ce..da63bf1e60b 100644 Binary files a/public/images/pokemon/icons/9/969.png and b/public/images/pokemon/icons/9/969.png differ diff --git a/public/images/pokemon/icons/9/969s.png b/public/images/pokemon/icons/9/969s.png index 7c30b73ef3b..b47a153c289 100644 Binary files a/public/images/pokemon/icons/9/969s.png and b/public/images/pokemon/icons/9/969s.png differ diff --git a/public/images/pokemon/icons/9/970.png b/public/images/pokemon/icons/9/970.png index b897b6329dd..159f3cfaa04 100644 Binary files a/public/images/pokemon/icons/9/970.png and b/public/images/pokemon/icons/9/970.png differ diff --git a/public/images/pokemon/icons/9/970s.png b/public/images/pokemon/icons/9/970s.png index 767b2dd48a6..af0d32f6b4c 100644 Binary files a/public/images/pokemon/icons/9/970s.png and b/public/images/pokemon/icons/9/970s.png differ diff --git a/public/images/pokemon/icons/9/971.png b/public/images/pokemon/icons/9/971.png index c750641a80b..2dfe34a4ca0 100644 Binary files a/public/images/pokemon/icons/9/971.png and b/public/images/pokemon/icons/9/971.png differ diff --git a/public/images/pokemon/icons/9/971s.png b/public/images/pokemon/icons/9/971s.png index 6181d4b451f..8d910a28eb5 100644 Binary files a/public/images/pokemon/icons/9/971s.png and b/public/images/pokemon/icons/9/971s.png differ diff --git a/public/images/pokemon/icons/9/972.png b/public/images/pokemon/icons/9/972.png index 4fa95b0a836..f4b016e12b1 100644 Binary files a/public/images/pokemon/icons/9/972.png and b/public/images/pokemon/icons/9/972.png differ diff --git a/public/images/pokemon/icons/9/972s.png b/public/images/pokemon/icons/9/972s.png index 8693b36ff60..160d9c2d9a9 100644 Binary files a/public/images/pokemon/icons/9/972s.png and b/public/images/pokemon/icons/9/972s.png differ diff --git a/public/images/pokemon/icons/9/973.png b/public/images/pokemon/icons/9/973.png index f687821aba8..ac799fe35dd 100644 Binary files a/public/images/pokemon/icons/9/973.png and b/public/images/pokemon/icons/9/973.png differ diff --git a/public/images/pokemon/icons/9/973s.png b/public/images/pokemon/icons/9/973s.png index 92258f70cc6..caae44bc02a 100644 Binary files a/public/images/pokemon/icons/9/973s.png and b/public/images/pokemon/icons/9/973s.png differ diff --git a/public/images/pokemon/icons/9/974.png b/public/images/pokemon/icons/9/974.png index 347bf53e071..ca390d44197 100644 Binary files a/public/images/pokemon/icons/9/974.png and b/public/images/pokemon/icons/9/974.png differ diff --git a/public/images/pokemon/icons/9/974s.png b/public/images/pokemon/icons/9/974s.png index a1861266b31..26f4f90971e 100644 Binary files a/public/images/pokemon/icons/9/974s.png and b/public/images/pokemon/icons/9/974s.png differ diff --git a/public/images/pokemon/icons/9/975.png b/public/images/pokemon/icons/9/975.png index f465afabd49..c4bb9d9ed50 100644 Binary files a/public/images/pokemon/icons/9/975.png and b/public/images/pokemon/icons/9/975.png differ diff --git a/public/images/pokemon/icons/9/975s.png b/public/images/pokemon/icons/9/975s.png index de6b27a2787..13ad7a3ef96 100644 Binary files a/public/images/pokemon/icons/9/975s.png and b/public/images/pokemon/icons/9/975s.png differ diff --git a/public/images/pokemon/icons/9/976.png b/public/images/pokemon/icons/9/976.png index caca19e7bfa..5caaad52c92 100644 Binary files a/public/images/pokemon/icons/9/976.png and b/public/images/pokemon/icons/9/976.png differ diff --git a/public/images/pokemon/icons/9/976s.png b/public/images/pokemon/icons/9/976s.png index d5b8918ccb7..d59370f6eb7 100644 Binary files a/public/images/pokemon/icons/9/976s.png and b/public/images/pokemon/icons/9/976s.png differ diff --git a/public/images/pokemon/icons/9/977.png b/public/images/pokemon/icons/9/977.png index 4044670cc0c..b0a8494c112 100644 Binary files a/public/images/pokemon/icons/9/977.png and b/public/images/pokemon/icons/9/977.png differ diff --git a/public/images/pokemon/icons/9/977s.png b/public/images/pokemon/icons/9/977s.png index 45457995c48..0ed35b5e78c 100644 Binary files a/public/images/pokemon/icons/9/977s.png and b/public/images/pokemon/icons/9/977s.png differ diff --git a/public/images/pokemon/icons/9/978-curly.png b/public/images/pokemon/icons/9/978-curly.png index 67676b75649..82948374b02 100644 Binary files a/public/images/pokemon/icons/9/978-curly.png and b/public/images/pokemon/icons/9/978-curly.png differ diff --git a/public/images/pokemon/icons/9/978-droopy.png b/public/images/pokemon/icons/9/978-droopy.png index fc2eb260acc..442d022abcc 100644 Binary files a/public/images/pokemon/icons/9/978-droopy.png and b/public/images/pokemon/icons/9/978-droopy.png differ diff --git a/public/images/pokemon/icons/9/978-stretchy.png b/public/images/pokemon/icons/9/978-stretchy.png index 3d9179513b8..3d8ef1ee931 100644 Binary files a/public/images/pokemon/icons/9/978-stretchy.png and b/public/images/pokemon/icons/9/978-stretchy.png differ diff --git a/public/images/pokemon/icons/9/978s-curly.png b/public/images/pokemon/icons/9/978s-curly.png index 838af7a1602..02baa5df85e 100644 Binary files a/public/images/pokemon/icons/9/978s-curly.png and b/public/images/pokemon/icons/9/978s-curly.png differ diff --git a/public/images/pokemon/icons/9/978s-droopy.png b/public/images/pokemon/icons/9/978s-droopy.png index 2c18af72420..fafe20d183a 100644 Binary files a/public/images/pokemon/icons/9/978s-droopy.png and b/public/images/pokemon/icons/9/978s-droopy.png differ diff --git a/public/images/pokemon/icons/9/978s-stretchy.png b/public/images/pokemon/icons/9/978s-stretchy.png index c07aee860c8..df07d7eccd0 100644 Binary files a/public/images/pokemon/icons/9/978s-stretchy.png and b/public/images/pokemon/icons/9/978s-stretchy.png differ diff --git a/public/images/pokemon/icons/9/979.png b/public/images/pokemon/icons/9/979.png index 4c0d1acaa32..5198ced0956 100644 Binary files a/public/images/pokemon/icons/9/979.png and b/public/images/pokemon/icons/9/979.png differ diff --git a/public/images/pokemon/icons/9/979s.png b/public/images/pokemon/icons/9/979s.png index ff4faff2312..ca56fac2306 100644 Binary files a/public/images/pokemon/icons/9/979s.png and b/public/images/pokemon/icons/9/979s.png differ diff --git a/public/images/pokemon/icons/9/980.png b/public/images/pokemon/icons/9/980.png index 85d88b125d7..6b602e0f616 100644 Binary files a/public/images/pokemon/icons/9/980.png and b/public/images/pokemon/icons/9/980.png differ diff --git a/public/images/pokemon/icons/9/980s.png b/public/images/pokemon/icons/9/980s.png index 9ca66e85085..91280323c08 100644 Binary files a/public/images/pokemon/icons/9/980s.png and b/public/images/pokemon/icons/9/980s.png differ diff --git a/public/images/pokemon/icons/9/981.png b/public/images/pokemon/icons/9/981.png index be4b43ef897..accc9d8dbb1 100644 Binary files a/public/images/pokemon/icons/9/981.png and b/public/images/pokemon/icons/9/981.png differ diff --git a/public/images/pokemon/icons/9/981s.png b/public/images/pokemon/icons/9/981s.png index beba477b455..02a89556ad5 100644 Binary files a/public/images/pokemon/icons/9/981s.png and b/public/images/pokemon/icons/9/981s.png differ diff --git a/public/images/pokemon/icons/9/982-three-segment.png b/public/images/pokemon/icons/9/982-three-segment.png index 3b7a60ad1dc..779f993d4b7 100644 Binary files a/public/images/pokemon/icons/9/982-three-segment.png and b/public/images/pokemon/icons/9/982-three-segment.png differ diff --git a/public/images/pokemon/icons/9/982.png b/public/images/pokemon/icons/9/982.png index 15064b66c2e..5ef9807f4c2 100644 Binary files a/public/images/pokemon/icons/9/982.png and b/public/images/pokemon/icons/9/982.png differ diff --git a/public/images/pokemon/icons/9/982s-three-segment.png b/public/images/pokemon/icons/9/982s-three-segment.png index 34b8696c2c8..f912cddb389 100644 Binary files a/public/images/pokemon/icons/9/982s-three-segment.png and b/public/images/pokemon/icons/9/982s-three-segment.png differ diff --git a/public/images/pokemon/icons/9/982s.png b/public/images/pokemon/icons/9/982s.png index 0ae5e000b45..8fbac1dbd2a 100644 Binary files a/public/images/pokemon/icons/9/982s.png and b/public/images/pokemon/icons/9/982s.png differ diff --git a/public/images/pokemon/icons/9/983.png b/public/images/pokemon/icons/9/983.png index 2a897952352..009d206cb3b 100644 Binary files a/public/images/pokemon/icons/9/983.png and b/public/images/pokemon/icons/9/983.png differ diff --git a/public/images/pokemon/icons/9/983s.png b/public/images/pokemon/icons/9/983s.png index 40f09d818c7..166f27e220d 100644 Binary files a/public/images/pokemon/icons/9/983s.png and b/public/images/pokemon/icons/9/983s.png differ diff --git a/public/images/pokemon/icons/9/984.png b/public/images/pokemon/icons/9/984.png index 0ba5755c64e..4f2ce0044b6 100644 Binary files a/public/images/pokemon/icons/9/984.png and b/public/images/pokemon/icons/9/984.png differ diff --git a/public/images/pokemon/icons/9/984s.png b/public/images/pokemon/icons/9/984s.png index a16fe83197b..82951392413 100644 Binary files a/public/images/pokemon/icons/9/984s.png and b/public/images/pokemon/icons/9/984s.png differ diff --git a/public/images/pokemon/icons/9/985.png b/public/images/pokemon/icons/9/985.png index 8243f0720f4..aef4bf7884b 100644 Binary files a/public/images/pokemon/icons/9/985.png and b/public/images/pokemon/icons/9/985.png differ diff --git a/public/images/pokemon/icons/9/985s.png b/public/images/pokemon/icons/9/985s.png index b86d0483c34..a0d07e7378d 100644 Binary files a/public/images/pokemon/icons/9/985s.png and b/public/images/pokemon/icons/9/985s.png differ diff --git a/public/images/pokemon/icons/9/986.png b/public/images/pokemon/icons/9/986.png index 82569b01157..a59f06a4349 100644 Binary files a/public/images/pokemon/icons/9/986.png and b/public/images/pokemon/icons/9/986.png differ diff --git a/public/images/pokemon/icons/9/986s.png b/public/images/pokemon/icons/9/986s.png index 1efc6b2e749..080a1c494a4 100644 Binary files a/public/images/pokemon/icons/9/986s.png and b/public/images/pokemon/icons/9/986s.png differ diff --git a/public/images/pokemon/icons/9/987.png b/public/images/pokemon/icons/9/987.png index 095b60caa41..a7081925b2d 100644 Binary files a/public/images/pokemon/icons/9/987.png and b/public/images/pokemon/icons/9/987.png differ diff --git a/public/images/pokemon/icons/9/987s.png b/public/images/pokemon/icons/9/987s.png index 43376c5297c..f7462a3276f 100644 Binary files a/public/images/pokemon/icons/9/987s.png and b/public/images/pokemon/icons/9/987s.png differ diff --git a/public/images/pokemon/icons/9/988.png b/public/images/pokemon/icons/9/988.png index 39ec73ad678..feea35010d0 100644 Binary files a/public/images/pokemon/icons/9/988.png and b/public/images/pokemon/icons/9/988.png differ diff --git a/public/images/pokemon/icons/9/988s.png b/public/images/pokemon/icons/9/988s.png index 2496174bd44..3bb9cf5a340 100644 Binary files a/public/images/pokemon/icons/9/988s.png and b/public/images/pokemon/icons/9/988s.png differ diff --git a/public/images/pokemon/icons/9/989.png b/public/images/pokemon/icons/9/989.png index e746ec3df8c..9590d4af186 100644 Binary files a/public/images/pokemon/icons/9/989.png and b/public/images/pokemon/icons/9/989.png differ diff --git a/public/images/pokemon/icons/9/989s.png b/public/images/pokemon/icons/9/989s.png index 5d34aaa15f9..e914fda672d 100644 Binary files a/public/images/pokemon/icons/9/989s.png and b/public/images/pokemon/icons/9/989s.png differ diff --git a/public/images/pokemon/icons/9/990.png b/public/images/pokemon/icons/9/990.png index e45d7e2bef0..368df9f8f14 100644 Binary files a/public/images/pokemon/icons/9/990.png and b/public/images/pokemon/icons/9/990.png differ diff --git a/public/images/pokemon/icons/9/990s.png b/public/images/pokemon/icons/9/990s.png index 3b985f05c71..094b28675a8 100644 Binary files a/public/images/pokemon/icons/9/990s.png and b/public/images/pokemon/icons/9/990s.png differ diff --git a/public/images/pokemon/icons/9/991.png b/public/images/pokemon/icons/9/991.png index d852deac747..09a823cd8b4 100644 Binary files a/public/images/pokemon/icons/9/991.png and b/public/images/pokemon/icons/9/991.png differ diff --git a/public/images/pokemon/icons/9/991s.png b/public/images/pokemon/icons/9/991s.png index 885f0caa27d..d629100dfc6 100644 Binary files a/public/images/pokemon/icons/9/991s.png and b/public/images/pokemon/icons/9/991s.png differ diff --git a/public/images/pokemon/icons/9/992.png b/public/images/pokemon/icons/9/992.png index bc67e7c2769..3132080d566 100644 Binary files a/public/images/pokemon/icons/9/992.png and b/public/images/pokemon/icons/9/992.png differ diff --git a/public/images/pokemon/icons/9/992s.png b/public/images/pokemon/icons/9/992s.png index 5c5b095755d..0c12089fa19 100644 Binary files a/public/images/pokemon/icons/9/992s.png and b/public/images/pokemon/icons/9/992s.png differ diff --git a/public/images/pokemon/icons/9/993.png b/public/images/pokemon/icons/9/993.png index cff0f8621f2..639c5c44813 100644 Binary files a/public/images/pokemon/icons/9/993.png and b/public/images/pokemon/icons/9/993.png differ diff --git a/public/images/pokemon/icons/9/993s.png b/public/images/pokemon/icons/9/993s.png index eff914a70b7..dc9b87cff86 100644 Binary files a/public/images/pokemon/icons/9/993s.png and b/public/images/pokemon/icons/9/993s.png differ diff --git a/public/images/pokemon/icons/9/994.png b/public/images/pokemon/icons/9/994.png index a5d007e201e..d735dec16f8 100644 Binary files a/public/images/pokemon/icons/9/994.png and b/public/images/pokemon/icons/9/994.png differ diff --git a/public/images/pokemon/icons/9/994s.png b/public/images/pokemon/icons/9/994s.png index 9e0a3acc745..7bd1c5f5016 100644 Binary files a/public/images/pokemon/icons/9/994s.png and b/public/images/pokemon/icons/9/994s.png differ diff --git a/public/images/pokemon/icons/9/995.png b/public/images/pokemon/icons/9/995.png index dc7ddb0ac76..97bc0a653d4 100644 Binary files a/public/images/pokemon/icons/9/995.png and b/public/images/pokemon/icons/9/995.png differ diff --git a/public/images/pokemon/icons/9/995s.png b/public/images/pokemon/icons/9/995s.png index cd0b4c92f3c..39f8c9048c7 100644 Binary files a/public/images/pokemon/icons/9/995s.png and b/public/images/pokemon/icons/9/995s.png differ diff --git a/public/images/pokemon/icons/9/996.png b/public/images/pokemon/icons/9/996.png index 83e7fa0d329..37e0fce6073 100644 Binary files a/public/images/pokemon/icons/9/996.png and b/public/images/pokemon/icons/9/996.png differ diff --git a/public/images/pokemon/icons/9/996s.png b/public/images/pokemon/icons/9/996s.png index 6f241c9e1f8..9a4d2b340b8 100644 Binary files a/public/images/pokemon/icons/9/996s.png and b/public/images/pokemon/icons/9/996s.png differ diff --git a/public/images/pokemon/icons/9/997.png b/public/images/pokemon/icons/9/997.png index 72fcee17dbb..012e948c256 100644 Binary files a/public/images/pokemon/icons/9/997.png and b/public/images/pokemon/icons/9/997.png differ diff --git a/public/images/pokemon/icons/9/997s.png b/public/images/pokemon/icons/9/997s.png index 52b810d1b01..6a522f3b8e6 100644 Binary files a/public/images/pokemon/icons/9/997s.png and b/public/images/pokemon/icons/9/997s.png differ diff --git a/public/images/pokemon/icons/9/998.png b/public/images/pokemon/icons/9/998.png index e897330cfb4..94fafaf66b2 100644 Binary files a/public/images/pokemon/icons/9/998.png and b/public/images/pokemon/icons/9/998.png differ diff --git a/public/images/pokemon/icons/9/998s.png b/public/images/pokemon/icons/9/998s.png index 9e13e4dc3d4..e53099037fc 100644 Binary files a/public/images/pokemon/icons/9/998s.png and b/public/images/pokemon/icons/9/998s.png differ diff --git a/public/images/pokemon/icons/9/999-roaming.png b/public/images/pokemon/icons/9/999-roaming.png index e29ad2ec9e0..1ee913d1c3b 100644 Binary files a/public/images/pokemon/icons/9/999-roaming.png and b/public/images/pokemon/icons/9/999-roaming.png differ diff --git a/public/images/pokemon/icons/9/999.png b/public/images/pokemon/icons/9/999.png index 2db0cd9927e..7f841bfe97b 100644 Binary files a/public/images/pokemon/icons/9/999.png and b/public/images/pokemon/icons/9/999.png differ diff --git a/public/images/pokemon/icons/9/999s-roaming.png b/public/images/pokemon/icons/9/999s-roaming.png index e1e87b0eae0..ef01a21d606 100644 Binary files a/public/images/pokemon/icons/9/999s-roaming.png and b/public/images/pokemon/icons/9/999s-roaming.png differ diff --git a/public/images/pokemon/icons/9/999s.png b/public/images/pokemon/icons/9/999s.png index 3f02b5ce408..244b6a6f52d 100644 Binary files a/public/images/pokemon/icons/9/999s.png and b/public/images/pokemon/icons/9/999s.png differ diff --git a/public/images/pokemon/icons/egg/0.png b/public/images/pokemon/icons/egg/0.png index 33473696ec5..658ab5f44f8 100644 Binary files a/public/images/pokemon/icons/egg/0.png and b/public/images/pokemon/icons/egg/0.png differ diff --git a/public/images/pokemon/icons/egg/1.png b/public/images/pokemon/icons/egg/1.png index e3166fe95bc..c5bc1fe604e 100644 Binary files a/public/images/pokemon/icons/egg/1.png and b/public/images/pokemon/icons/egg/1.png differ diff --git a/public/images/pokemon/icons/egg/2.png b/public/images/pokemon/icons/egg/2.png index c9f302da435..88c4e4d5424 100644 Binary files a/public/images/pokemon/icons/egg/2.png and b/public/images/pokemon/icons/egg/2.png differ diff --git a/public/images/pokemon/icons/egg/3.png b/public/images/pokemon/icons/egg/3.png index 7b5264d6099..0b1836bd98a 100644 Binary files a/public/images/pokemon/icons/egg/3.png and b/public/images/pokemon/icons/egg/3.png differ diff --git a/public/images/pokemon/icons/egg/manaphy.png b/public/images/pokemon/icons/egg/manaphy.png index 93762fb282f..2a93d7c6b61 100644 Binary files a/public/images/pokemon/icons/egg/manaphy.png and b/public/images/pokemon/icons/egg/manaphy.png differ diff --git a/public/images/pokemon/icons/variant/1/100_2.png b/public/images/pokemon/icons/variant/1/100_2.png index 21ecda9baf4..9b7b16461f9 100644 Binary files a/public/images/pokemon/icons/variant/1/100_2.png and b/public/images/pokemon/icons/variant/1/100_2.png differ diff --git a/public/images/pokemon/icons/variant/1/100_3.png b/public/images/pokemon/icons/variant/1/100_3.png index e403f3fb33f..51aecdcf3f7 100644 Binary files a/public/images/pokemon/icons/variant/1/100_3.png and b/public/images/pokemon/icons/variant/1/100_3.png differ diff --git a/public/images/pokemon/icons/variant/1/101_2.png b/public/images/pokemon/icons/variant/1/101_2.png index 9bf5eced659..874619c23e5 100644 Binary files a/public/images/pokemon/icons/variant/1/101_2.png and b/public/images/pokemon/icons/variant/1/101_2.png differ diff --git a/public/images/pokemon/icons/variant/1/101_3.png b/public/images/pokemon/icons/variant/1/101_3.png index dcfdd7b4899..1010d28c677 100644 Binary files a/public/images/pokemon/icons/variant/1/101_3.png and b/public/images/pokemon/icons/variant/1/101_3.png differ diff --git a/public/images/pokemon/icons/variant/1/102_2.png b/public/images/pokemon/icons/variant/1/102_2.png index 9d96f087919..981ee251002 100644 Binary files a/public/images/pokemon/icons/variant/1/102_2.png and b/public/images/pokemon/icons/variant/1/102_2.png differ diff --git a/public/images/pokemon/icons/variant/1/102_3.png b/public/images/pokemon/icons/variant/1/102_3.png index 65272284ea8..4d4285b1dad 100644 Binary files a/public/images/pokemon/icons/variant/1/102_3.png and b/public/images/pokemon/icons/variant/1/102_3.png differ diff --git a/public/images/pokemon/icons/variant/1/103_2.png b/public/images/pokemon/icons/variant/1/103_2.png index 046d2b1bb6a..fdfb982271c 100644 Binary files a/public/images/pokemon/icons/variant/1/103_2.png and b/public/images/pokemon/icons/variant/1/103_2.png differ diff --git a/public/images/pokemon/icons/variant/1/103_3.png b/public/images/pokemon/icons/variant/1/103_3.png index b68fdd50318..e0c5f0fd378 100644 Binary files a/public/images/pokemon/icons/variant/1/103_3.png and b/public/images/pokemon/icons/variant/1/103_3.png differ diff --git a/public/images/pokemon/icons/variant/1/111_2.png b/public/images/pokemon/icons/variant/1/111_2.png index ec0f9d9ad16..ce208df6488 100644 Binary files a/public/images/pokemon/icons/variant/1/111_2.png and b/public/images/pokemon/icons/variant/1/111_2.png differ diff --git a/public/images/pokemon/icons/variant/1/111_3.png b/public/images/pokemon/icons/variant/1/111_3.png index 5fee68f8f31..45540cdb4dc 100644 Binary files a/public/images/pokemon/icons/variant/1/111_3.png and b/public/images/pokemon/icons/variant/1/111_3.png differ diff --git a/public/images/pokemon/icons/variant/1/112_2.png b/public/images/pokemon/icons/variant/1/112_2.png index 2a00526bcf5..1e2dc0f9e5c 100644 Binary files a/public/images/pokemon/icons/variant/1/112_2.png and b/public/images/pokemon/icons/variant/1/112_2.png differ diff --git a/public/images/pokemon/icons/variant/1/112_3.png b/public/images/pokemon/icons/variant/1/112_3.png index 9136965dea6..34ccfc9079a 100644 Binary files a/public/images/pokemon/icons/variant/1/112_3.png and b/public/images/pokemon/icons/variant/1/112_3.png differ diff --git a/public/images/pokemon/icons/variant/1/113_1.png b/public/images/pokemon/icons/variant/1/113_1.png index 36b1728fda4..2a1e6f793cb 100644 Binary files a/public/images/pokemon/icons/variant/1/113_1.png and b/public/images/pokemon/icons/variant/1/113_1.png differ diff --git a/public/images/pokemon/icons/variant/1/113_2.png b/public/images/pokemon/icons/variant/1/113_2.png index c954640e755..7a4fcb372be 100644 Binary files a/public/images/pokemon/icons/variant/1/113_2.png and b/public/images/pokemon/icons/variant/1/113_2.png differ diff --git a/public/images/pokemon/icons/variant/1/113_3.png b/public/images/pokemon/icons/variant/1/113_3.png index 536e0686905..8d3915b64b8 100644 Binary files a/public/images/pokemon/icons/variant/1/113_3.png and b/public/images/pokemon/icons/variant/1/113_3.png differ diff --git a/public/images/pokemon/icons/variant/1/114_2.png b/public/images/pokemon/icons/variant/1/114_2.png index 13965756965..abf016f4cf6 100644 Binary files a/public/images/pokemon/icons/variant/1/114_2.png and b/public/images/pokemon/icons/variant/1/114_2.png differ diff --git a/public/images/pokemon/icons/variant/1/114_3.png b/public/images/pokemon/icons/variant/1/114_3.png index f2a37161675..13af44e4d82 100644 Binary files a/public/images/pokemon/icons/variant/1/114_3.png and b/public/images/pokemon/icons/variant/1/114_3.png differ diff --git a/public/images/pokemon/icons/variant/1/116_2.png b/public/images/pokemon/icons/variant/1/116_2.png index 42cfbd3c3b5..faa8afa79a4 100644 Binary files a/public/images/pokemon/icons/variant/1/116_2.png and b/public/images/pokemon/icons/variant/1/116_2.png differ diff --git a/public/images/pokemon/icons/variant/1/116_3.png b/public/images/pokemon/icons/variant/1/116_3.png index 55020e28a8e..102917198fb 100644 Binary files a/public/images/pokemon/icons/variant/1/116_3.png and b/public/images/pokemon/icons/variant/1/116_3.png differ diff --git a/public/images/pokemon/icons/variant/1/117_2.png b/public/images/pokemon/icons/variant/1/117_2.png index 9c0d619df68..a5124d46c60 100644 Binary files a/public/images/pokemon/icons/variant/1/117_2.png and b/public/images/pokemon/icons/variant/1/117_2.png differ diff --git a/public/images/pokemon/icons/variant/1/117_3.png b/public/images/pokemon/icons/variant/1/117_3.png index e4889e5fb0d..4ff65108baf 100644 Binary files a/public/images/pokemon/icons/variant/1/117_3.png and b/public/images/pokemon/icons/variant/1/117_3.png differ diff --git a/public/images/pokemon/icons/variant/1/118_1.png b/public/images/pokemon/icons/variant/1/118_1.png index 595f76d7946..26184aa6d89 100644 Binary files a/public/images/pokemon/icons/variant/1/118_1.png and b/public/images/pokemon/icons/variant/1/118_1.png differ diff --git a/public/images/pokemon/icons/variant/1/118_2.png b/public/images/pokemon/icons/variant/1/118_2.png index 4a04afddbba..417d9062b66 100644 Binary files a/public/images/pokemon/icons/variant/1/118_2.png and b/public/images/pokemon/icons/variant/1/118_2.png differ diff --git a/public/images/pokemon/icons/variant/1/118_3.png b/public/images/pokemon/icons/variant/1/118_3.png index a1e0173d2d7..1fd2868942f 100644 Binary files a/public/images/pokemon/icons/variant/1/118_3.png and b/public/images/pokemon/icons/variant/1/118_3.png differ diff --git a/public/images/pokemon/icons/variant/1/119_1.png b/public/images/pokemon/icons/variant/1/119_1.png index abc2f0727ae..cfb8bcb4021 100644 Binary files a/public/images/pokemon/icons/variant/1/119_1.png and b/public/images/pokemon/icons/variant/1/119_1.png differ diff --git a/public/images/pokemon/icons/variant/1/119_2.png b/public/images/pokemon/icons/variant/1/119_2.png index 37d8dee0fd6..d6d0808d1aa 100644 Binary files a/public/images/pokemon/icons/variant/1/119_2.png and b/public/images/pokemon/icons/variant/1/119_2.png differ diff --git a/public/images/pokemon/icons/variant/1/119_3.png b/public/images/pokemon/icons/variant/1/119_3.png index e71c46a0291..b000402cc6a 100644 Binary files a/public/images/pokemon/icons/variant/1/119_3.png and b/public/images/pokemon/icons/variant/1/119_3.png differ diff --git a/public/images/pokemon/icons/variant/1/120_2.png b/public/images/pokemon/icons/variant/1/120_2.png index 87ba9303cee..16c46ae7791 100644 Binary files a/public/images/pokemon/icons/variant/1/120_2.png and b/public/images/pokemon/icons/variant/1/120_2.png differ diff --git a/public/images/pokemon/icons/variant/1/120_3.png b/public/images/pokemon/icons/variant/1/120_3.png index 921165fa535..c8bca26155a 100644 Binary files a/public/images/pokemon/icons/variant/1/120_3.png and b/public/images/pokemon/icons/variant/1/120_3.png differ diff --git a/public/images/pokemon/icons/variant/1/121_2.png b/public/images/pokemon/icons/variant/1/121_2.png index 2c240fc05c5..e49020fb764 100644 Binary files a/public/images/pokemon/icons/variant/1/121_2.png and b/public/images/pokemon/icons/variant/1/121_2.png differ diff --git a/public/images/pokemon/icons/variant/1/121_3.png b/public/images/pokemon/icons/variant/1/121_3.png index 3fe75e12157..0d7b1106bbc 100644 Binary files a/public/images/pokemon/icons/variant/1/121_3.png and b/public/images/pokemon/icons/variant/1/121_3.png differ diff --git a/public/images/pokemon/icons/variant/1/123_1.png b/public/images/pokemon/icons/variant/1/123_1.png index 0bc5a3f6872..aec3e78ffaa 100644 Binary files a/public/images/pokemon/icons/variant/1/123_1.png and b/public/images/pokemon/icons/variant/1/123_1.png differ diff --git a/public/images/pokemon/icons/variant/1/123_2.png b/public/images/pokemon/icons/variant/1/123_2.png index 08df4b1b366..f12a20f07fb 100644 Binary files a/public/images/pokemon/icons/variant/1/123_2.png and b/public/images/pokemon/icons/variant/1/123_2.png differ diff --git a/public/images/pokemon/icons/variant/1/123_3.png b/public/images/pokemon/icons/variant/1/123_3.png index 95533340fad..a3054f1b017 100644 Binary files a/public/images/pokemon/icons/variant/1/123_3.png and b/public/images/pokemon/icons/variant/1/123_3.png differ diff --git a/public/images/pokemon/icons/variant/1/125_1.png b/public/images/pokemon/icons/variant/1/125_1.png index 61f088c7401..9ae0a2554e2 100644 Binary files a/public/images/pokemon/icons/variant/1/125_1.png and b/public/images/pokemon/icons/variant/1/125_1.png differ diff --git a/public/images/pokemon/icons/variant/1/125_2.png b/public/images/pokemon/icons/variant/1/125_2.png index 8cffc1df234..c585f1c5099 100644 Binary files a/public/images/pokemon/icons/variant/1/125_2.png and b/public/images/pokemon/icons/variant/1/125_2.png differ diff --git a/public/images/pokemon/icons/variant/1/125_3.png b/public/images/pokemon/icons/variant/1/125_3.png index bb67e1a08db..0d05859805f 100644 Binary files a/public/images/pokemon/icons/variant/1/125_3.png and b/public/images/pokemon/icons/variant/1/125_3.png differ diff --git a/public/images/pokemon/icons/variant/1/126_2.png b/public/images/pokemon/icons/variant/1/126_2.png index 629efc9c10b..0b3515136ce 100644 Binary files a/public/images/pokemon/icons/variant/1/126_2.png and b/public/images/pokemon/icons/variant/1/126_2.png differ diff --git a/public/images/pokemon/icons/variant/1/126_3.png b/public/images/pokemon/icons/variant/1/126_3.png index 7ad95578477..53d7dbb854f 100644 Binary files a/public/images/pokemon/icons/variant/1/126_3.png and b/public/images/pokemon/icons/variant/1/126_3.png differ diff --git a/public/images/pokemon/icons/variant/1/127-mega_2.png b/public/images/pokemon/icons/variant/1/127-mega_2.png index a9f5e703d2c..ec5d65c8912 100644 Binary files a/public/images/pokemon/icons/variant/1/127-mega_2.png and b/public/images/pokemon/icons/variant/1/127-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/127-mega_3.png b/public/images/pokemon/icons/variant/1/127-mega_3.png index 62b2992582d..5b48c91a99f 100644 Binary files a/public/images/pokemon/icons/variant/1/127-mega_3.png and b/public/images/pokemon/icons/variant/1/127-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/127_2.png b/public/images/pokemon/icons/variant/1/127_2.png index 8b4a0c358e6..94b2c33f9e0 100644 Binary files a/public/images/pokemon/icons/variant/1/127_2.png and b/public/images/pokemon/icons/variant/1/127_2.png differ diff --git a/public/images/pokemon/icons/variant/1/127_3.png b/public/images/pokemon/icons/variant/1/127_3.png index 59390f17575..912cc62a0a4 100644 Binary files a/public/images/pokemon/icons/variant/1/127_3.png and b/public/images/pokemon/icons/variant/1/127_3.png differ diff --git a/public/images/pokemon/icons/variant/1/128_2.png b/public/images/pokemon/icons/variant/1/128_2.png index 0a44d5bbfad..4b8006a7e57 100644 Binary files a/public/images/pokemon/icons/variant/1/128_2.png and b/public/images/pokemon/icons/variant/1/128_2.png differ diff --git a/public/images/pokemon/icons/variant/1/128_3.png b/public/images/pokemon/icons/variant/1/128_3.png index 8f6b25c2c18..7b360cda4e8 100644 Binary files a/public/images/pokemon/icons/variant/1/128_3.png and b/public/images/pokemon/icons/variant/1/128_3.png differ diff --git a/public/images/pokemon/icons/variant/1/129_2.png b/public/images/pokemon/icons/variant/1/129_2.png index 78dfdc16561..6ebd3527069 100644 Binary files a/public/images/pokemon/icons/variant/1/129_2.png and b/public/images/pokemon/icons/variant/1/129_2.png differ diff --git a/public/images/pokemon/icons/variant/1/129_3.png b/public/images/pokemon/icons/variant/1/129_3.png index 3dfb34731ca..274493aea74 100644 Binary files a/public/images/pokemon/icons/variant/1/129_3.png and b/public/images/pokemon/icons/variant/1/129_3.png differ diff --git a/public/images/pokemon/icons/variant/1/130-mega_2.png b/public/images/pokemon/icons/variant/1/130-mega_2.png index 029b6857c01..4ffea91798b 100644 Binary files a/public/images/pokemon/icons/variant/1/130-mega_2.png and b/public/images/pokemon/icons/variant/1/130-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/130-mega_3.png b/public/images/pokemon/icons/variant/1/130-mega_3.png index ab803e92305..c850d4dd1e3 100644 Binary files a/public/images/pokemon/icons/variant/1/130-mega_3.png and b/public/images/pokemon/icons/variant/1/130-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/130_2.png b/public/images/pokemon/icons/variant/1/130_2.png index 0aa2f2b667e..d40fc06f960 100644 Binary files a/public/images/pokemon/icons/variant/1/130_2.png and b/public/images/pokemon/icons/variant/1/130_2.png differ diff --git a/public/images/pokemon/icons/variant/1/130_3.png b/public/images/pokemon/icons/variant/1/130_3.png index 1d03d52aaf7..d3650b1a00c 100644 Binary files a/public/images/pokemon/icons/variant/1/130_3.png and b/public/images/pokemon/icons/variant/1/130_3.png differ diff --git a/public/images/pokemon/icons/variant/1/131-gigantamax_2.png b/public/images/pokemon/icons/variant/1/131-gigantamax_2.png index 6032d52a1ad..c7db99116a4 100644 Binary files a/public/images/pokemon/icons/variant/1/131-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/131-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/131-gigantamax_3.png b/public/images/pokemon/icons/variant/1/131-gigantamax_3.png index 229d6ae864e..3b08a741c83 100644 Binary files a/public/images/pokemon/icons/variant/1/131-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/131-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/131_2.png b/public/images/pokemon/icons/variant/1/131_2.png index eb7dc097a35..321d65991a8 100644 Binary files a/public/images/pokemon/icons/variant/1/131_2.png and b/public/images/pokemon/icons/variant/1/131_2.png differ diff --git a/public/images/pokemon/icons/variant/1/131_3.png b/public/images/pokemon/icons/variant/1/131_3.png index 6a2e2436e3f..25f1d9cd13f 100644 Binary files a/public/images/pokemon/icons/variant/1/131_3.png and b/public/images/pokemon/icons/variant/1/131_3.png differ diff --git a/public/images/pokemon/icons/variant/1/132_2.png b/public/images/pokemon/icons/variant/1/132_2.png index fb34e71ce9b..93c712402ce 100644 Binary files a/public/images/pokemon/icons/variant/1/132_2.png and b/public/images/pokemon/icons/variant/1/132_2.png differ diff --git a/public/images/pokemon/icons/variant/1/132_3.png b/public/images/pokemon/icons/variant/1/132_3.png index 708bb74739e..6d33f609dce 100644 Binary files a/public/images/pokemon/icons/variant/1/132_3.png and b/public/images/pokemon/icons/variant/1/132_3.png differ diff --git a/public/images/pokemon/icons/variant/1/133-partner_2.png b/public/images/pokemon/icons/variant/1/133-partner_2.png index 3e082ae0bd4..7954c51652b 100644 Binary files a/public/images/pokemon/icons/variant/1/133-partner_2.png and b/public/images/pokemon/icons/variant/1/133-partner_2.png differ diff --git a/public/images/pokemon/icons/variant/1/133-partner_3.png b/public/images/pokemon/icons/variant/1/133-partner_3.png index 57c969d855c..42c0bdc7218 100644 Binary files a/public/images/pokemon/icons/variant/1/133-partner_3.png and b/public/images/pokemon/icons/variant/1/133-partner_3.png differ diff --git a/public/images/pokemon/icons/variant/1/133_2.png b/public/images/pokemon/icons/variant/1/133_2.png index b17979df07a..992b5209a42 100644 Binary files a/public/images/pokemon/icons/variant/1/133_2.png and b/public/images/pokemon/icons/variant/1/133_2.png differ diff --git a/public/images/pokemon/icons/variant/1/133_3.png b/public/images/pokemon/icons/variant/1/133_3.png index fa4d99879ae..5a927b47095 100644 Binary files a/public/images/pokemon/icons/variant/1/133_3.png and b/public/images/pokemon/icons/variant/1/133_3.png differ diff --git a/public/images/pokemon/icons/variant/1/134_2.png b/public/images/pokemon/icons/variant/1/134_2.png index 9cffe29a5e9..cb0d4a1365e 100644 Binary files a/public/images/pokemon/icons/variant/1/134_2.png and b/public/images/pokemon/icons/variant/1/134_2.png differ diff --git a/public/images/pokemon/icons/variant/1/134_3.png b/public/images/pokemon/icons/variant/1/134_3.png index 5c1c1384110..f337cc8a4f5 100644 Binary files a/public/images/pokemon/icons/variant/1/134_3.png and b/public/images/pokemon/icons/variant/1/134_3.png differ diff --git a/public/images/pokemon/icons/variant/1/135_1.png b/public/images/pokemon/icons/variant/1/135_1.png index 259dca57c06..9d9a283a284 100644 Binary files a/public/images/pokemon/icons/variant/1/135_1.png and b/public/images/pokemon/icons/variant/1/135_1.png differ diff --git a/public/images/pokemon/icons/variant/1/135_2.png b/public/images/pokemon/icons/variant/1/135_2.png index 3b8b864196b..56eff60d52f 100644 Binary files a/public/images/pokemon/icons/variant/1/135_2.png and b/public/images/pokemon/icons/variant/1/135_2.png differ diff --git a/public/images/pokemon/icons/variant/1/135_3.png b/public/images/pokemon/icons/variant/1/135_3.png index f7f98152dfe..0ab62e6f2db 100644 Binary files a/public/images/pokemon/icons/variant/1/135_3.png and b/public/images/pokemon/icons/variant/1/135_3.png differ diff --git a/public/images/pokemon/icons/variant/1/136_1.png b/public/images/pokemon/icons/variant/1/136_1.png index bbf577e442e..95116604114 100644 Binary files a/public/images/pokemon/icons/variant/1/136_1.png and b/public/images/pokemon/icons/variant/1/136_1.png differ diff --git a/public/images/pokemon/icons/variant/1/136_2.png b/public/images/pokemon/icons/variant/1/136_2.png index 78c6844c47c..f899a1c85f7 100644 Binary files a/public/images/pokemon/icons/variant/1/136_2.png and b/public/images/pokemon/icons/variant/1/136_2.png differ diff --git a/public/images/pokemon/icons/variant/1/136_3.png b/public/images/pokemon/icons/variant/1/136_3.png index fc5c63dc0a2..c46e81eafc7 100644 Binary files a/public/images/pokemon/icons/variant/1/136_3.png and b/public/images/pokemon/icons/variant/1/136_3.png differ diff --git a/public/images/pokemon/icons/variant/1/137_2.png b/public/images/pokemon/icons/variant/1/137_2.png index 93ddd4a83ad..efabd2b943e 100644 Binary files a/public/images/pokemon/icons/variant/1/137_2.png and b/public/images/pokemon/icons/variant/1/137_2.png differ diff --git a/public/images/pokemon/icons/variant/1/137_3.png b/public/images/pokemon/icons/variant/1/137_3.png index 044cc212b2b..c725545fd59 100644 Binary files a/public/images/pokemon/icons/variant/1/137_3.png and b/public/images/pokemon/icons/variant/1/137_3.png differ diff --git a/public/images/pokemon/icons/variant/1/138_2.png b/public/images/pokemon/icons/variant/1/138_2.png index 4ebcad71b93..87ccab739cb 100644 Binary files a/public/images/pokemon/icons/variant/1/138_2.png and b/public/images/pokemon/icons/variant/1/138_2.png differ diff --git a/public/images/pokemon/icons/variant/1/138_3.png b/public/images/pokemon/icons/variant/1/138_3.png index d66ea50a627..7b88f96af5c 100644 Binary files a/public/images/pokemon/icons/variant/1/138_3.png and b/public/images/pokemon/icons/variant/1/138_3.png differ diff --git a/public/images/pokemon/icons/variant/1/139_2.png b/public/images/pokemon/icons/variant/1/139_2.png index f3934cbe1e9..d9248dc5be4 100644 Binary files a/public/images/pokemon/icons/variant/1/139_2.png and b/public/images/pokemon/icons/variant/1/139_2.png differ diff --git a/public/images/pokemon/icons/variant/1/139_3.png b/public/images/pokemon/icons/variant/1/139_3.png index 58327e471f6..db6c1bc6106 100644 Binary files a/public/images/pokemon/icons/variant/1/139_3.png and b/public/images/pokemon/icons/variant/1/139_3.png differ diff --git a/public/images/pokemon/icons/variant/1/140_2.png b/public/images/pokemon/icons/variant/1/140_2.png index c0c7c8b9c4c..8807f031b61 100644 Binary files a/public/images/pokemon/icons/variant/1/140_2.png and b/public/images/pokemon/icons/variant/1/140_2.png differ diff --git a/public/images/pokemon/icons/variant/1/140_3.png b/public/images/pokemon/icons/variant/1/140_3.png index 1e2a3f740d9..3df2265ac9d 100644 Binary files a/public/images/pokemon/icons/variant/1/140_3.png and b/public/images/pokemon/icons/variant/1/140_3.png differ diff --git a/public/images/pokemon/icons/variant/1/141_2.png b/public/images/pokemon/icons/variant/1/141_2.png index 351f2935fbf..ea0c9e2105e 100644 Binary files a/public/images/pokemon/icons/variant/1/141_2.png and b/public/images/pokemon/icons/variant/1/141_2.png differ diff --git a/public/images/pokemon/icons/variant/1/141_3.png b/public/images/pokemon/icons/variant/1/141_3.png index 512e4b8663a..9823eaf3721 100644 Binary files a/public/images/pokemon/icons/variant/1/141_3.png and b/public/images/pokemon/icons/variant/1/141_3.png differ diff --git a/public/images/pokemon/icons/variant/1/142-mega_2.png b/public/images/pokemon/icons/variant/1/142-mega_2.png index 692f5114dcb..49965a324de 100644 Binary files a/public/images/pokemon/icons/variant/1/142-mega_2.png and b/public/images/pokemon/icons/variant/1/142-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/142-mega_3.png b/public/images/pokemon/icons/variant/1/142-mega_3.png index 21d23365120..af2b1fea0bf 100644 Binary files a/public/images/pokemon/icons/variant/1/142-mega_3.png and b/public/images/pokemon/icons/variant/1/142-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/142_2.png b/public/images/pokemon/icons/variant/1/142_2.png index 521fdc7ee4b..301ffaca9e6 100644 Binary files a/public/images/pokemon/icons/variant/1/142_2.png and b/public/images/pokemon/icons/variant/1/142_2.png differ diff --git a/public/images/pokemon/icons/variant/1/142_3.png b/public/images/pokemon/icons/variant/1/142_3.png index 5ed3a1fe4ff..a9ddc5317ba 100644 Binary files a/public/images/pokemon/icons/variant/1/142_3.png and b/public/images/pokemon/icons/variant/1/142_3.png differ diff --git a/public/images/pokemon/icons/variant/1/143-gigantamax_2.png b/public/images/pokemon/icons/variant/1/143-gigantamax_2.png index 036fe6d230d..daff2d9c5af 100644 Binary files a/public/images/pokemon/icons/variant/1/143-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/143-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/143-gigantamax_3.png b/public/images/pokemon/icons/variant/1/143-gigantamax_3.png index 5a4fe34da7c..3020398426b 100644 Binary files a/public/images/pokemon/icons/variant/1/143-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/143-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/143_2.png b/public/images/pokemon/icons/variant/1/143_2.png index a757c202eb6..b0dd5ec6d23 100644 Binary files a/public/images/pokemon/icons/variant/1/143_2.png and b/public/images/pokemon/icons/variant/1/143_2.png differ diff --git a/public/images/pokemon/icons/variant/1/143_3.png b/public/images/pokemon/icons/variant/1/143_3.png index 0f6da40ca0d..b07351a64db 100644 Binary files a/public/images/pokemon/icons/variant/1/143_3.png and b/public/images/pokemon/icons/variant/1/143_3.png differ diff --git a/public/images/pokemon/icons/variant/1/144_1.png b/public/images/pokemon/icons/variant/1/144_1.png index a67ae72dc05..bfb30608f91 100644 Binary files a/public/images/pokemon/icons/variant/1/144_1.png and b/public/images/pokemon/icons/variant/1/144_1.png differ diff --git a/public/images/pokemon/icons/variant/1/144_2.png b/public/images/pokemon/icons/variant/1/144_2.png index cb73a0f3b9f..7a44e742122 100644 Binary files a/public/images/pokemon/icons/variant/1/144_2.png and b/public/images/pokemon/icons/variant/1/144_2.png differ diff --git a/public/images/pokemon/icons/variant/1/144_3.png b/public/images/pokemon/icons/variant/1/144_3.png index f330cdeb62e..9c305bc71af 100644 Binary files a/public/images/pokemon/icons/variant/1/144_3.png and b/public/images/pokemon/icons/variant/1/144_3.png differ diff --git a/public/images/pokemon/icons/variant/1/145_1.png b/public/images/pokemon/icons/variant/1/145_1.png index 8bf9b8c94fd..34fc14dcbbe 100644 Binary files a/public/images/pokemon/icons/variant/1/145_1.png and b/public/images/pokemon/icons/variant/1/145_1.png differ diff --git a/public/images/pokemon/icons/variant/1/145_2.png b/public/images/pokemon/icons/variant/1/145_2.png index 4fdadb9990b..9a44ec99ae4 100644 Binary files a/public/images/pokemon/icons/variant/1/145_2.png and b/public/images/pokemon/icons/variant/1/145_2.png differ diff --git a/public/images/pokemon/icons/variant/1/145_3.png b/public/images/pokemon/icons/variant/1/145_3.png index 07502c60e22..73c6d455460 100644 Binary files a/public/images/pokemon/icons/variant/1/145_3.png and b/public/images/pokemon/icons/variant/1/145_3.png differ diff --git a/public/images/pokemon/icons/variant/1/146_1.png b/public/images/pokemon/icons/variant/1/146_1.png index e264b024ba9..5426c2a5396 100644 Binary files a/public/images/pokemon/icons/variant/1/146_1.png and b/public/images/pokemon/icons/variant/1/146_1.png differ diff --git a/public/images/pokemon/icons/variant/1/146_2.png b/public/images/pokemon/icons/variant/1/146_2.png index a6f78c0e917..c570ac45765 100644 Binary files a/public/images/pokemon/icons/variant/1/146_2.png and b/public/images/pokemon/icons/variant/1/146_2.png differ diff --git a/public/images/pokemon/icons/variant/1/146_3.png b/public/images/pokemon/icons/variant/1/146_3.png index a0c4b9656bb..c512553db42 100644 Binary files a/public/images/pokemon/icons/variant/1/146_3.png and b/public/images/pokemon/icons/variant/1/146_3.png differ diff --git a/public/images/pokemon/icons/variant/1/147_2.png b/public/images/pokemon/icons/variant/1/147_2.png index 1f66a5f5e6c..19e4f35be63 100644 Binary files a/public/images/pokemon/icons/variant/1/147_2.png and b/public/images/pokemon/icons/variant/1/147_2.png differ diff --git a/public/images/pokemon/icons/variant/1/147_3.png b/public/images/pokemon/icons/variant/1/147_3.png index 9e61342b2c9..7dfa44892dc 100644 Binary files a/public/images/pokemon/icons/variant/1/147_3.png and b/public/images/pokemon/icons/variant/1/147_3.png differ diff --git a/public/images/pokemon/icons/variant/1/148_2.png b/public/images/pokemon/icons/variant/1/148_2.png index 0b38dd92640..5a62b4d58c4 100644 Binary files a/public/images/pokemon/icons/variant/1/148_2.png and b/public/images/pokemon/icons/variant/1/148_2.png differ diff --git a/public/images/pokemon/icons/variant/1/148_3.png b/public/images/pokemon/icons/variant/1/148_3.png index e9be6110f95..04723987a38 100644 Binary files a/public/images/pokemon/icons/variant/1/148_3.png and b/public/images/pokemon/icons/variant/1/148_3.png differ diff --git a/public/images/pokemon/icons/variant/1/149_2.png b/public/images/pokemon/icons/variant/1/149_2.png index 5a0cab35949..07ed4c3ee32 100644 Binary files a/public/images/pokemon/icons/variant/1/149_2.png and b/public/images/pokemon/icons/variant/1/149_2.png differ diff --git a/public/images/pokemon/icons/variant/1/149_3.png b/public/images/pokemon/icons/variant/1/149_3.png index 3defe1c15fa..88a94a5c4de 100644 Binary files a/public/images/pokemon/icons/variant/1/149_3.png and b/public/images/pokemon/icons/variant/1/149_3.png differ diff --git a/public/images/pokemon/icons/variant/1/150-mega-x_2.png b/public/images/pokemon/icons/variant/1/150-mega-x_2.png index 9a5f568b512..4899c9c4732 100644 Binary files a/public/images/pokemon/icons/variant/1/150-mega-x_2.png and b/public/images/pokemon/icons/variant/1/150-mega-x_2.png differ diff --git a/public/images/pokemon/icons/variant/1/150-mega-x_3.png b/public/images/pokemon/icons/variant/1/150-mega-x_3.png index 100f82659ee..80373d0a56f 100644 Binary files a/public/images/pokemon/icons/variant/1/150-mega-x_3.png and b/public/images/pokemon/icons/variant/1/150-mega-x_3.png differ diff --git a/public/images/pokemon/icons/variant/1/150-mega-y_2.png b/public/images/pokemon/icons/variant/1/150-mega-y_2.png index fb101253459..54f4b42faa0 100644 Binary files a/public/images/pokemon/icons/variant/1/150-mega-y_2.png and b/public/images/pokemon/icons/variant/1/150-mega-y_2.png differ diff --git a/public/images/pokemon/icons/variant/1/150-mega-y_3.png b/public/images/pokemon/icons/variant/1/150-mega-y_3.png index 0a8f15ba290..5acc532e4c4 100644 Binary files a/public/images/pokemon/icons/variant/1/150-mega-y_3.png and b/public/images/pokemon/icons/variant/1/150-mega-y_3.png differ diff --git a/public/images/pokemon/icons/variant/1/150_2.png b/public/images/pokemon/icons/variant/1/150_2.png index f2fbe81988c..ae60df5f745 100644 Binary files a/public/images/pokemon/icons/variant/1/150_2.png and b/public/images/pokemon/icons/variant/1/150_2.png differ diff --git a/public/images/pokemon/icons/variant/1/150_3.png b/public/images/pokemon/icons/variant/1/150_3.png index 47742c993f4..71e50e6b42e 100644 Binary files a/public/images/pokemon/icons/variant/1/150_3.png and b/public/images/pokemon/icons/variant/1/150_3.png differ diff --git a/public/images/pokemon/icons/variant/1/151_2.png b/public/images/pokemon/icons/variant/1/151_2.png index 63baee99844..945c5e12316 100644 Binary files a/public/images/pokemon/icons/variant/1/151_2.png and b/public/images/pokemon/icons/variant/1/151_2.png differ diff --git a/public/images/pokemon/icons/variant/1/151_3.png b/public/images/pokemon/icons/variant/1/151_3.png index 1ba138538b4..c1c793b9ec1 100644 Binary files a/public/images/pokemon/icons/variant/1/151_3.png and b/public/images/pokemon/icons/variant/1/151_3.png differ diff --git a/public/images/pokemon/icons/variant/1/19_2.png b/public/images/pokemon/icons/variant/1/19_2.png index 210faa68f9b..2b8bd9d1be5 100644 Binary files a/public/images/pokemon/icons/variant/1/19_2.png and b/public/images/pokemon/icons/variant/1/19_2.png differ diff --git a/public/images/pokemon/icons/variant/1/19_3.png b/public/images/pokemon/icons/variant/1/19_3.png index c9d1631c50d..ad5086c9a42 100644 Binary files a/public/images/pokemon/icons/variant/1/19_3.png and b/public/images/pokemon/icons/variant/1/19_3.png differ diff --git a/public/images/pokemon/icons/variant/1/1_2.png b/public/images/pokemon/icons/variant/1/1_2.png index 03b966143a5..4910933b26e 100644 Binary files a/public/images/pokemon/icons/variant/1/1_2.png and b/public/images/pokemon/icons/variant/1/1_2.png differ diff --git a/public/images/pokemon/icons/variant/1/1_3.png b/public/images/pokemon/icons/variant/1/1_3.png index 6fa0c416b34..57738bd5e4b 100644 Binary files a/public/images/pokemon/icons/variant/1/1_3.png and b/public/images/pokemon/icons/variant/1/1_3.png differ diff --git a/public/images/pokemon/icons/variant/1/20_2.png b/public/images/pokemon/icons/variant/1/20_2.png index 656f6394a6c..89cd729e009 100644 Binary files a/public/images/pokemon/icons/variant/1/20_2.png and b/public/images/pokemon/icons/variant/1/20_2.png differ diff --git a/public/images/pokemon/icons/variant/1/20_3.png b/public/images/pokemon/icons/variant/1/20_3.png index 200c3209249..ffa7071306a 100644 Binary files a/public/images/pokemon/icons/variant/1/20_3.png and b/public/images/pokemon/icons/variant/1/20_3.png differ diff --git a/public/images/pokemon/icons/variant/1/23_2.png b/public/images/pokemon/icons/variant/1/23_2.png index 1152d493c8f..4692838fa3a 100644 Binary files a/public/images/pokemon/icons/variant/1/23_2.png and b/public/images/pokemon/icons/variant/1/23_2.png differ diff --git a/public/images/pokemon/icons/variant/1/23_3.png b/public/images/pokemon/icons/variant/1/23_3.png index 6088043415b..c831a5288fa 100644 Binary files a/public/images/pokemon/icons/variant/1/23_3.png and b/public/images/pokemon/icons/variant/1/23_3.png differ diff --git a/public/images/pokemon/icons/variant/1/24_2.png b/public/images/pokemon/icons/variant/1/24_2.png index 015a5c97884..9a5a7178673 100644 Binary files a/public/images/pokemon/icons/variant/1/24_2.png and b/public/images/pokemon/icons/variant/1/24_2.png differ diff --git a/public/images/pokemon/icons/variant/1/24_3.png b/public/images/pokemon/icons/variant/1/24_3.png index c9cf33f3412..74c22839a96 100644 Binary files a/public/images/pokemon/icons/variant/1/24_3.png and b/public/images/pokemon/icons/variant/1/24_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-beauty-cosplay_2.png b/public/images/pokemon/icons/variant/1/25-beauty-cosplay_2.png index 19c61af5069..827cbb6b167 100644 Binary files a/public/images/pokemon/icons/variant/1/25-beauty-cosplay_2.png and b/public/images/pokemon/icons/variant/1/25-beauty-cosplay_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-beauty-cosplay_3.png b/public/images/pokemon/icons/variant/1/25-beauty-cosplay_3.png index 1da79229795..66c98fa4b16 100644 Binary files a/public/images/pokemon/icons/variant/1/25-beauty-cosplay_3.png and b/public/images/pokemon/icons/variant/1/25-beauty-cosplay_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-cool-cosplay_2.png b/public/images/pokemon/icons/variant/1/25-cool-cosplay_2.png index 8dc1e27acab..84b2ee17474 100644 Binary files a/public/images/pokemon/icons/variant/1/25-cool-cosplay_2.png and b/public/images/pokemon/icons/variant/1/25-cool-cosplay_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-cool-cosplay_3.png b/public/images/pokemon/icons/variant/1/25-cool-cosplay_3.png index 7a603219649..b42a7c38dcc 100644 Binary files a/public/images/pokemon/icons/variant/1/25-cool-cosplay_3.png and b/public/images/pokemon/icons/variant/1/25-cool-cosplay_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-cosplay_2.png b/public/images/pokemon/icons/variant/1/25-cosplay_2.png index c47e9ef7d18..70d695fb9ff 100644 Binary files a/public/images/pokemon/icons/variant/1/25-cosplay_2.png and b/public/images/pokemon/icons/variant/1/25-cosplay_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-cosplay_3.png b/public/images/pokemon/icons/variant/1/25-cosplay_3.png index 16332db9041..cd38b17c552 100644 Binary files a/public/images/pokemon/icons/variant/1/25-cosplay_3.png and b/public/images/pokemon/icons/variant/1/25-cosplay_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-cute-cosplay_2.png b/public/images/pokemon/icons/variant/1/25-cute-cosplay_2.png index 3f606da7bb0..4219e269073 100644 Binary files a/public/images/pokemon/icons/variant/1/25-cute-cosplay_2.png and b/public/images/pokemon/icons/variant/1/25-cute-cosplay_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-cute-cosplay_3.png b/public/images/pokemon/icons/variant/1/25-cute-cosplay_3.png index 8560b6f04b5..f7103b0f35f 100644 Binary files a/public/images/pokemon/icons/variant/1/25-cute-cosplay_3.png and b/public/images/pokemon/icons/variant/1/25-cute-cosplay_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-gigantamax_2.png b/public/images/pokemon/icons/variant/1/25-gigantamax_2.png index 6bc267b55fa..dfafa600150 100644 Binary files a/public/images/pokemon/icons/variant/1/25-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/25-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-gigantamax_3.png b/public/images/pokemon/icons/variant/1/25-gigantamax_3.png index 8c4ff760bcd..7cf36ffde30 100644 Binary files a/public/images/pokemon/icons/variant/1/25-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/25-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-partner_2.png b/public/images/pokemon/icons/variant/1/25-partner_2.png index eaa2cfb610f..09b7a8319c5 100644 Binary files a/public/images/pokemon/icons/variant/1/25-partner_2.png and b/public/images/pokemon/icons/variant/1/25-partner_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-partner_3.png b/public/images/pokemon/icons/variant/1/25-partner_3.png index 1faf330ef51..104b5e2bf2e 100644 Binary files a/public/images/pokemon/icons/variant/1/25-partner_3.png and b/public/images/pokemon/icons/variant/1/25-partner_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-smart-cosplay_2.png b/public/images/pokemon/icons/variant/1/25-smart-cosplay_2.png index 4ecae1f73a2..1831fbeb2fc 100644 Binary files a/public/images/pokemon/icons/variant/1/25-smart-cosplay_2.png and b/public/images/pokemon/icons/variant/1/25-smart-cosplay_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-smart-cosplay_3.png b/public/images/pokemon/icons/variant/1/25-smart-cosplay_3.png index ea41daf34e6..dd81bd4c3f1 100644 Binary files a/public/images/pokemon/icons/variant/1/25-smart-cosplay_3.png and b/public/images/pokemon/icons/variant/1/25-smart-cosplay_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25-tough-cosplay_2.png b/public/images/pokemon/icons/variant/1/25-tough-cosplay_2.png index 3f7072c4138..65dada3c75e 100644 Binary files a/public/images/pokemon/icons/variant/1/25-tough-cosplay_2.png and b/public/images/pokemon/icons/variant/1/25-tough-cosplay_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25-tough-cosplay_3.png b/public/images/pokemon/icons/variant/1/25-tough-cosplay_3.png index e671ff98639..ae0e046bfde 100644 Binary files a/public/images/pokemon/icons/variant/1/25-tough-cosplay_3.png and b/public/images/pokemon/icons/variant/1/25-tough-cosplay_3.png differ diff --git a/public/images/pokemon/icons/variant/1/25_2.png b/public/images/pokemon/icons/variant/1/25_2.png index 5e987ffe777..e332886410c 100644 Binary files a/public/images/pokemon/icons/variant/1/25_2.png and b/public/images/pokemon/icons/variant/1/25_2.png differ diff --git a/public/images/pokemon/icons/variant/1/25_3.png b/public/images/pokemon/icons/variant/1/25_3.png index b04af012bec..ac151a5721b 100644 Binary files a/public/images/pokemon/icons/variant/1/25_3.png and b/public/images/pokemon/icons/variant/1/25_3.png differ diff --git a/public/images/pokemon/icons/variant/1/26_2.png b/public/images/pokemon/icons/variant/1/26_2.png index f21ebe42b16..e8fedec9bfc 100644 Binary files a/public/images/pokemon/icons/variant/1/26_2.png and b/public/images/pokemon/icons/variant/1/26_2.png differ diff --git a/public/images/pokemon/icons/variant/1/26_3.png b/public/images/pokemon/icons/variant/1/26_3.png index adbe9c212b3..35d4e326c72 100644 Binary files a/public/images/pokemon/icons/variant/1/26_3.png and b/public/images/pokemon/icons/variant/1/26_3.png differ diff --git a/public/images/pokemon/icons/variant/1/29_1.png b/public/images/pokemon/icons/variant/1/29_1.png index b48e5dbc777..50c55ed20b1 100644 Binary files a/public/images/pokemon/icons/variant/1/29_1.png and b/public/images/pokemon/icons/variant/1/29_1.png differ diff --git a/public/images/pokemon/icons/variant/1/29_2.png b/public/images/pokemon/icons/variant/1/29_2.png index 12d66fb1579..ceadddbc188 100644 Binary files a/public/images/pokemon/icons/variant/1/29_2.png and b/public/images/pokemon/icons/variant/1/29_2.png differ diff --git a/public/images/pokemon/icons/variant/1/29_3.png b/public/images/pokemon/icons/variant/1/29_3.png index c5f1f4aae94..b4d3f50472d 100644 Binary files a/public/images/pokemon/icons/variant/1/29_3.png and b/public/images/pokemon/icons/variant/1/29_3.png differ diff --git a/public/images/pokemon/icons/variant/1/2_2.png b/public/images/pokemon/icons/variant/1/2_2.png index f9fc69a4756..c8ade702f31 100644 Binary files a/public/images/pokemon/icons/variant/1/2_2.png and b/public/images/pokemon/icons/variant/1/2_2.png differ diff --git a/public/images/pokemon/icons/variant/1/2_3.png b/public/images/pokemon/icons/variant/1/2_3.png index 0ba316759b6..1495f5d61db 100644 Binary files a/public/images/pokemon/icons/variant/1/2_3.png and b/public/images/pokemon/icons/variant/1/2_3.png differ diff --git a/public/images/pokemon/icons/variant/1/3-gigantamax_2.png b/public/images/pokemon/icons/variant/1/3-gigantamax_2.png index 71db40e400e..99f73b1bfb6 100644 Binary files a/public/images/pokemon/icons/variant/1/3-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/3-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/3-gigantamax_3.png b/public/images/pokemon/icons/variant/1/3-gigantamax_3.png index caa9477dfe2..eea37cb4a52 100644 Binary files a/public/images/pokemon/icons/variant/1/3-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/3-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/3-mega_2.png b/public/images/pokemon/icons/variant/1/3-mega_2.png index 33664417a54..a6d69262b5f 100644 Binary files a/public/images/pokemon/icons/variant/1/3-mega_2.png and b/public/images/pokemon/icons/variant/1/3-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/3-mega_3.png b/public/images/pokemon/icons/variant/1/3-mega_3.png index 529740cfccc..0abbb67e791 100644 Binary files a/public/images/pokemon/icons/variant/1/3-mega_3.png and b/public/images/pokemon/icons/variant/1/3-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/30_2.png b/public/images/pokemon/icons/variant/1/30_2.png index 29e97832b44..894d94a5a27 100644 Binary files a/public/images/pokemon/icons/variant/1/30_2.png and b/public/images/pokemon/icons/variant/1/30_2.png differ diff --git a/public/images/pokemon/icons/variant/1/30_3.png b/public/images/pokemon/icons/variant/1/30_3.png index 5d292322fee..6f11b0483c7 100644 Binary files a/public/images/pokemon/icons/variant/1/30_3.png and b/public/images/pokemon/icons/variant/1/30_3.png differ diff --git a/public/images/pokemon/icons/variant/1/31_1.png b/public/images/pokemon/icons/variant/1/31_1.png index 51ab04f75f6..89d584e0db8 100644 Binary files a/public/images/pokemon/icons/variant/1/31_1.png and b/public/images/pokemon/icons/variant/1/31_1.png differ diff --git a/public/images/pokemon/icons/variant/1/31_2.png b/public/images/pokemon/icons/variant/1/31_2.png index 709a6e7bbbf..f1565708363 100644 Binary files a/public/images/pokemon/icons/variant/1/31_2.png and b/public/images/pokemon/icons/variant/1/31_2.png differ diff --git a/public/images/pokemon/icons/variant/1/31_3.png b/public/images/pokemon/icons/variant/1/31_3.png index 020c42185e9..f55d5d1a519 100644 Binary files a/public/images/pokemon/icons/variant/1/31_3.png and b/public/images/pokemon/icons/variant/1/31_3.png differ diff --git a/public/images/pokemon/icons/variant/1/32_2.png b/public/images/pokemon/icons/variant/1/32_2.png index 83c7716c509..011928ccc9a 100644 Binary files a/public/images/pokemon/icons/variant/1/32_2.png and b/public/images/pokemon/icons/variant/1/32_2.png differ diff --git a/public/images/pokemon/icons/variant/1/32_3.png b/public/images/pokemon/icons/variant/1/32_3.png index 9bba8f3d9b9..a0e3c72f912 100644 Binary files a/public/images/pokemon/icons/variant/1/32_3.png and b/public/images/pokemon/icons/variant/1/32_3.png differ diff --git a/public/images/pokemon/icons/variant/1/33_2.png b/public/images/pokemon/icons/variant/1/33_2.png index 151c2091077..f6bdbd1e0cd 100644 Binary files a/public/images/pokemon/icons/variant/1/33_2.png and b/public/images/pokemon/icons/variant/1/33_2.png differ diff --git a/public/images/pokemon/icons/variant/1/33_3.png b/public/images/pokemon/icons/variant/1/33_3.png index 84a8487116b..ba086b42655 100644 Binary files a/public/images/pokemon/icons/variant/1/33_3.png and b/public/images/pokemon/icons/variant/1/33_3.png differ diff --git a/public/images/pokemon/icons/variant/1/34_2.png b/public/images/pokemon/icons/variant/1/34_2.png index 2d0477f7ff9..bd3f1571620 100644 Binary files a/public/images/pokemon/icons/variant/1/34_2.png and b/public/images/pokemon/icons/variant/1/34_2.png differ diff --git a/public/images/pokemon/icons/variant/1/34_3.png b/public/images/pokemon/icons/variant/1/34_3.png index 8e844c38605..e5e99ba1b1a 100644 Binary files a/public/images/pokemon/icons/variant/1/34_3.png and b/public/images/pokemon/icons/variant/1/34_3.png differ diff --git a/public/images/pokemon/icons/variant/1/35_2.png b/public/images/pokemon/icons/variant/1/35_2.png index 3a2914fcbf9..9576e544429 100644 Binary files a/public/images/pokemon/icons/variant/1/35_2.png and b/public/images/pokemon/icons/variant/1/35_2.png differ diff --git a/public/images/pokemon/icons/variant/1/35_3.png b/public/images/pokemon/icons/variant/1/35_3.png index e6f4fb4f527..c33ab68aba1 100644 Binary files a/public/images/pokemon/icons/variant/1/35_3.png and b/public/images/pokemon/icons/variant/1/35_3.png differ diff --git a/public/images/pokemon/icons/variant/1/36_2.png b/public/images/pokemon/icons/variant/1/36_2.png index 47211bebbba..e700fdd6642 100644 Binary files a/public/images/pokemon/icons/variant/1/36_2.png and b/public/images/pokemon/icons/variant/1/36_2.png differ diff --git a/public/images/pokemon/icons/variant/1/36_3.png b/public/images/pokemon/icons/variant/1/36_3.png index 159deb7ac9c..25511fc3853 100644 Binary files a/public/images/pokemon/icons/variant/1/36_3.png and b/public/images/pokemon/icons/variant/1/36_3.png differ diff --git a/public/images/pokemon/icons/variant/1/37_2.png b/public/images/pokemon/icons/variant/1/37_2.png index 0ba82d7d8c2..ddf8da356c1 100644 Binary files a/public/images/pokemon/icons/variant/1/37_2.png and b/public/images/pokemon/icons/variant/1/37_2.png differ diff --git a/public/images/pokemon/icons/variant/1/37_3.png b/public/images/pokemon/icons/variant/1/37_3.png index c075627889c..439bfba165e 100644 Binary files a/public/images/pokemon/icons/variant/1/37_3.png and b/public/images/pokemon/icons/variant/1/37_3.png differ diff --git a/public/images/pokemon/icons/variant/1/38_2.png b/public/images/pokemon/icons/variant/1/38_2.png index 2cdcc9acd02..9faaef2cc15 100644 Binary files a/public/images/pokemon/icons/variant/1/38_2.png and b/public/images/pokemon/icons/variant/1/38_2.png differ diff --git a/public/images/pokemon/icons/variant/1/38_3.png b/public/images/pokemon/icons/variant/1/38_3.png index 28d2d97ab23..baae035eda1 100644 Binary files a/public/images/pokemon/icons/variant/1/38_3.png and b/public/images/pokemon/icons/variant/1/38_3.png differ diff --git a/public/images/pokemon/icons/variant/1/39_2.png b/public/images/pokemon/icons/variant/1/39_2.png index f4b85b201cf..0f39cf72f02 100644 Binary files a/public/images/pokemon/icons/variant/1/39_2.png and b/public/images/pokemon/icons/variant/1/39_2.png differ diff --git a/public/images/pokemon/icons/variant/1/39_3.png b/public/images/pokemon/icons/variant/1/39_3.png index 137f3dc083c..3aedf9bb213 100644 Binary files a/public/images/pokemon/icons/variant/1/39_3.png and b/public/images/pokemon/icons/variant/1/39_3.png differ diff --git a/public/images/pokemon/icons/variant/1/3_2.png b/public/images/pokemon/icons/variant/1/3_2.png index 42f3828a8f3..17efee7d829 100644 Binary files a/public/images/pokemon/icons/variant/1/3_2.png and b/public/images/pokemon/icons/variant/1/3_2.png differ diff --git a/public/images/pokemon/icons/variant/1/3_3.png b/public/images/pokemon/icons/variant/1/3_3.png index dc29fbd74d4..00faa8f4182 100644 Binary files a/public/images/pokemon/icons/variant/1/3_3.png and b/public/images/pokemon/icons/variant/1/3_3.png differ diff --git a/public/images/pokemon/icons/variant/1/40_2.png b/public/images/pokemon/icons/variant/1/40_2.png index 09ffdcd5757..cda6c3029ea 100644 Binary files a/public/images/pokemon/icons/variant/1/40_2.png and b/public/images/pokemon/icons/variant/1/40_2.png differ diff --git a/public/images/pokemon/icons/variant/1/40_3.png b/public/images/pokemon/icons/variant/1/40_3.png index 09333136c19..64856dda4fd 100644 Binary files a/public/images/pokemon/icons/variant/1/40_3.png and b/public/images/pokemon/icons/variant/1/40_3.png differ diff --git a/public/images/pokemon/icons/variant/1/41_1.png b/public/images/pokemon/icons/variant/1/41_1.png index edbb499efcb..6cdccfe6809 100644 Binary files a/public/images/pokemon/icons/variant/1/41_1.png and b/public/images/pokemon/icons/variant/1/41_1.png differ diff --git a/public/images/pokemon/icons/variant/1/41_2.png b/public/images/pokemon/icons/variant/1/41_2.png index c73a279ff4d..b73919a4acf 100644 Binary files a/public/images/pokemon/icons/variant/1/41_2.png and b/public/images/pokemon/icons/variant/1/41_2.png differ diff --git a/public/images/pokemon/icons/variant/1/41_3.png b/public/images/pokemon/icons/variant/1/41_3.png index e82afadc93d..968236c201d 100644 Binary files a/public/images/pokemon/icons/variant/1/41_3.png and b/public/images/pokemon/icons/variant/1/41_3.png differ diff --git a/public/images/pokemon/icons/variant/1/42_1.png b/public/images/pokemon/icons/variant/1/42_1.png index 91d7fae345d..9cf54756221 100644 Binary files a/public/images/pokemon/icons/variant/1/42_1.png and b/public/images/pokemon/icons/variant/1/42_1.png differ diff --git a/public/images/pokemon/icons/variant/1/42_2.png b/public/images/pokemon/icons/variant/1/42_2.png index 17c82d9dd9e..c930876baa4 100644 Binary files a/public/images/pokemon/icons/variant/1/42_2.png and b/public/images/pokemon/icons/variant/1/42_2.png differ diff --git a/public/images/pokemon/icons/variant/1/42_3.png b/public/images/pokemon/icons/variant/1/42_3.png index 7975ca4b1f6..d8cdd66fb4c 100644 Binary files a/public/images/pokemon/icons/variant/1/42_3.png and b/public/images/pokemon/icons/variant/1/42_3.png differ diff --git a/public/images/pokemon/icons/variant/1/43_2.png b/public/images/pokemon/icons/variant/1/43_2.png index b47f662212c..bfcdbabf163 100644 Binary files a/public/images/pokemon/icons/variant/1/43_2.png and b/public/images/pokemon/icons/variant/1/43_2.png differ diff --git a/public/images/pokemon/icons/variant/1/43_3.png b/public/images/pokemon/icons/variant/1/43_3.png index 3d3d47875a0..778651d56d5 100644 Binary files a/public/images/pokemon/icons/variant/1/43_3.png and b/public/images/pokemon/icons/variant/1/43_3.png differ diff --git a/public/images/pokemon/icons/variant/1/44_2.png b/public/images/pokemon/icons/variant/1/44_2.png index 3b6a6aa082e..119009bd084 100644 Binary files a/public/images/pokemon/icons/variant/1/44_2.png and b/public/images/pokemon/icons/variant/1/44_2.png differ diff --git a/public/images/pokemon/icons/variant/1/44_3.png b/public/images/pokemon/icons/variant/1/44_3.png index c543307d22e..81262dcbe22 100644 Binary files a/public/images/pokemon/icons/variant/1/44_3.png and b/public/images/pokemon/icons/variant/1/44_3.png differ diff --git a/public/images/pokemon/icons/variant/1/45_2.png b/public/images/pokemon/icons/variant/1/45_2.png index 79e094ec9b2..4d8fd6d885a 100644 Binary files a/public/images/pokemon/icons/variant/1/45_2.png and b/public/images/pokemon/icons/variant/1/45_2.png differ diff --git a/public/images/pokemon/icons/variant/1/45_3.png b/public/images/pokemon/icons/variant/1/45_3.png index 1afbf809c8d..36f1613aeab 100644 Binary files a/public/images/pokemon/icons/variant/1/45_3.png and b/public/images/pokemon/icons/variant/1/45_3.png differ diff --git a/public/images/pokemon/icons/variant/1/46_1.png b/public/images/pokemon/icons/variant/1/46_1.png index eb9e15001f6..3f3bf8c4484 100644 Binary files a/public/images/pokemon/icons/variant/1/46_1.png and b/public/images/pokemon/icons/variant/1/46_1.png differ diff --git a/public/images/pokemon/icons/variant/1/46_2.png b/public/images/pokemon/icons/variant/1/46_2.png index bc21946d322..f74bd258327 100644 Binary files a/public/images/pokemon/icons/variant/1/46_2.png and b/public/images/pokemon/icons/variant/1/46_2.png differ diff --git a/public/images/pokemon/icons/variant/1/46_3.png b/public/images/pokemon/icons/variant/1/46_3.png index b3da371304e..15172d50b1b 100644 Binary files a/public/images/pokemon/icons/variant/1/46_3.png and b/public/images/pokemon/icons/variant/1/46_3.png differ diff --git a/public/images/pokemon/icons/variant/1/47_1.png b/public/images/pokemon/icons/variant/1/47_1.png index cf7ab4f7a4f..cbbf7b8894a 100644 Binary files a/public/images/pokemon/icons/variant/1/47_1.png and b/public/images/pokemon/icons/variant/1/47_1.png differ diff --git a/public/images/pokemon/icons/variant/1/47_2.png b/public/images/pokemon/icons/variant/1/47_2.png index 2ce9c0a289d..b03d201b230 100644 Binary files a/public/images/pokemon/icons/variant/1/47_2.png and b/public/images/pokemon/icons/variant/1/47_2.png differ diff --git a/public/images/pokemon/icons/variant/1/47_3.png b/public/images/pokemon/icons/variant/1/47_3.png index 911cb37c8d8..ca439bc40c8 100644 Binary files a/public/images/pokemon/icons/variant/1/47_3.png and b/public/images/pokemon/icons/variant/1/47_3.png differ diff --git a/public/images/pokemon/icons/variant/1/4_2.png b/public/images/pokemon/icons/variant/1/4_2.png index 3c0d01766f6..64dce792d5f 100644 Binary files a/public/images/pokemon/icons/variant/1/4_2.png and b/public/images/pokemon/icons/variant/1/4_2.png differ diff --git a/public/images/pokemon/icons/variant/1/4_3.png b/public/images/pokemon/icons/variant/1/4_3.png index eedc19d87e8..5cbaef9daf9 100644 Binary files a/public/images/pokemon/icons/variant/1/4_3.png and b/public/images/pokemon/icons/variant/1/4_3.png differ diff --git a/public/images/pokemon/icons/variant/1/50_2.png b/public/images/pokemon/icons/variant/1/50_2.png index f5d80fa0a98..8de3b9c0538 100644 Binary files a/public/images/pokemon/icons/variant/1/50_2.png and b/public/images/pokemon/icons/variant/1/50_2.png differ diff --git a/public/images/pokemon/icons/variant/1/50_3.png b/public/images/pokemon/icons/variant/1/50_3.png index 05d01766e24..c5e0cbbae91 100644 Binary files a/public/images/pokemon/icons/variant/1/50_3.png and b/public/images/pokemon/icons/variant/1/50_3.png differ diff --git a/public/images/pokemon/icons/variant/1/51_2.png b/public/images/pokemon/icons/variant/1/51_2.png index 23a34ae4ca8..0af2f39842c 100644 Binary files a/public/images/pokemon/icons/variant/1/51_2.png and b/public/images/pokemon/icons/variant/1/51_2.png differ diff --git a/public/images/pokemon/icons/variant/1/51_3.png b/public/images/pokemon/icons/variant/1/51_3.png index 63a57aaa17e..e18794b9cc2 100644 Binary files a/public/images/pokemon/icons/variant/1/51_3.png and b/public/images/pokemon/icons/variant/1/51_3.png differ diff --git a/public/images/pokemon/icons/variant/1/52-gigantamax_1.png b/public/images/pokemon/icons/variant/1/52-gigantamax_1.png index b5a46b1af7a..5dffdba11e7 100644 Binary files a/public/images/pokemon/icons/variant/1/52-gigantamax_1.png and b/public/images/pokemon/icons/variant/1/52-gigantamax_1.png differ diff --git a/public/images/pokemon/icons/variant/1/52-gigantamax_2.png b/public/images/pokemon/icons/variant/1/52-gigantamax_2.png index 657f44d5b27..a2aeb7bfc4d 100644 Binary files a/public/images/pokemon/icons/variant/1/52-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/52-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/52-gigantamax_3.png b/public/images/pokemon/icons/variant/1/52-gigantamax_3.png index a61ef7f1f3a..9b9f2219e40 100644 Binary files a/public/images/pokemon/icons/variant/1/52-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/52-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/52_1.png b/public/images/pokemon/icons/variant/1/52_1.png index b8fd1ea80c8..147af98aa5c 100644 Binary files a/public/images/pokemon/icons/variant/1/52_1.png and b/public/images/pokemon/icons/variant/1/52_1.png differ diff --git a/public/images/pokemon/icons/variant/1/52_2.png b/public/images/pokemon/icons/variant/1/52_2.png index 4ba9daced0a..3aa5e157d44 100644 Binary files a/public/images/pokemon/icons/variant/1/52_2.png and b/public/images/pokemon/icons/variant/1/52_2.png differ diff --git a/public/images/pokemon/icons/variant/1/52_3.png b/public/images/pokemon/icons/variant/1/52_3.png index ed9e423096b..bffb5f2a967 100644 Binary files a/public/images/pokemon/icons/variant/1/52_3.png and b/public/images/pokemon/icons/variant/1/52_3.png differ diff --git a/public/images/pokemon/icons/variant/1/53_1.png b/public/images/pokemon/icons/variant/1/53_1.png index bcd50545860..660b88012a1 100644 Binary files a/public/images/pokemon/icons/variant/1/53_1.png and b/public/images/pokemon/icons/variant/1/53_1.png differ diff --git a/public/images/pokemon/icons/variant/1/53_2.png b/public/images/pokemon/icons/variant/1/53_2.png index 337b037b9c8..bc0a4217c23 100644 Binary files a/public/images/pokemon/icons/variant/1/53_2.png and b/public/images/pokemon/icons/variant/1/53_2.png differ diff --git a/public/images/pokemon/icons/variant/1/53_3.png b/public/images/pokemon/icons/variant/1/53_3.png index 749bac6b911..c13cbc52433 100644 Binary files a/public/images/pokemon/icons/variant/1/53_3.png and b/public/images/pokemon/icons/variant/1/53_3.png differ diff --git a/public/images/pokemon/icons/variant/1/56_1.png b/public/images/pokemon/icons/variant/1/56_1.png index 0a70d34ca47..208ca549868 100644 Binary files a/public/images/pokemon/icons/variant/1/56_1.png and b/public/images/pokemon/icons/variant/1/56_1.png differ diff --git a/public/images/pokemon/icons/variant/1/56_2.png b/public/images/pokemon/icons/variant/1/56_2.png index 1e718f4faf5..f4454ea2cdf 100644 Binary files a/public/images/pokemon/icons/variant/1/56_2.png and b/public/images/pokemon/icons/variant/1/56_2.png differ diff --git a/public/images/pokemon/icons/variant/1/56_3.png b/public/images/pokemon/icons/variant/1/56_3.png index 0e0ccccb5b8..6e4eb2fabb9 100644 Binary files a/public/images/pokemon/icons/variant/1/56_3.png and b/public/images/pokemon/icons/variant/1/56_3.png differ diff --git a/public/images/pokemon/icons/variant/1/57_1.png b/public/images/pokemon/icons/variant/1/57_1.png index 52fb69f39ca..9c2f5ed58b0 100644 Binary files a/public/images/pokemon/icons/variant/1/57_1.png and b/public/images/pokemon/icons/variant/1/57_1.png differ diff --git a/public/images/pokemon/icons/variant/1/57_2.png b/public/images/pokemon/icons/variant/1/57_2.png index 9158341d642..9fef988aabc 100644 Binary files a/public/images/pokemon/icons/variant/1/57_2.png and b/public/images/pokemon/icons/variant/1/57_2.png differ diff --git a/public/images/pokemon/icons/variant/1/57_3.png b/public/images/pokemon/icons/variant/1/57_3.png index 79ef7408b7b..b8cbe9fea1f 100644 Binary files a/public/images/pokemon/icons/variant/1/57_3.png and b/public/images/pokemon/icons/variant/1/57_3.png differ diff --git a/public/images/pokemon/icons/variant/1/5_2.png b/public/images/pokemon/icons/variant/1/5_2.png index 28aeb6a9322..c7f46b3efd1 100644 Binary files a/public/images/pokemon/icons/variant/1/5_2.png and b/public/images/pokemon/icons/variant/1/5_2.png differ diff --git a/public/images/pokemon/icons/variant/1/5_3.png b/public/images/pokemon/icons/variant/1/5_3.png index e9b40fbf8a8..9a747206558 100644 Binary files a/public/images/pokemon/icons/variant/1/5_3.png and b/public/images/pokemon/icons/variant/1/5_3.png differ diff --git a/public/images/pokemon/icons/variant/1/6-gigantamax_2.png b/public/images/pokemon/icons/variant/1/6-gigantamax_2.png index f917731b2cc..8249dc93ef0 100644 Binary files a/public/images/pokemon/icons/variant/1/6-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/6-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/6-gigantamax_3.png b/public/images/pokemon/icons/variant/1/6-gigantamax_3.png index 6f7ce2ad77e..532834f5d7d 100644 Binary files a/public/images/pokemon/icons/variant/1/6-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/6-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/6-mega-x_2.png b/public/images/pokemon/icons/variant/1/6-mega-x_2.png index d5a30fab623..3804e725176 100644 Binary files a/public/images/pokemon/icons/variant/1/6-mega-x_2.png and b/public/images/pokemon/icons/variant/1/6-mega-x_2.png differ diff --git a/public/images/pokemon/icons/variant/1/6-mega-x_3.png b/public/images/pokemon/icons/variant/1/6-mega-x_3.png index 301f399c3d3..6350c0458cc 100644 Binary files a/public/images/pokemon/icons/variant/1/6-mega-x_3.png and b/public/images/pokemon/icons/variant/1/6-mega-x_3.png differ diff --git a/public/images/pokemon/icons/variant/1/6-mega-y_2.png b/public/images/pokemon/icons/variant/1/6-mega-y_2.png index 7664588bdfc..d290aff9a61 100644 Binary files a/public/images/pokemon/icons/variant/1/6-mega-y_2.png and b/public/images/pokemon/icons/variant/1/6-mega-y_2.png differ diff --git a/public/images/pokemon/icons/variant/1/6-mega-y_3.png b/public/images/pokemon/icons/variant/1/6-mega-y_3.png index f91d543dc4b..d9c3cb4c3f0 100644 Binary files a/public/images/pokemon/icons/variant/1/6-mega-y_3.png and b/public/images/pokemon/icons/variant/1/6-mega-y_3.png differ diff --git a/public/images/pokemon/icons/variant/1/69_2.png b/public/images/pokemon/icons/variant/1/69_2.png index 6924dccf989..5fb88faeffa 100644 Binary files a/public/images/pokemon/icons/variant/1/69_2.png and b/public/images/pokemon/icons/variant/1/69_2.png differ diff --git a/public/images/pokemon/icons/variant/1/69_3.png b/public/images/pokemon/icons/variant/1/69_3.png index 87b86a7cbeb..08604784c56 100644 Binary files a/public/images/pokemon/icons/variant/1/69_3.png and b/public/images/pokemon/icons/variant/1/69_3.png differ diff --git a/public/images/pokemon/icons/variant/1/6_2.png b/public/images/pokemon/icons/variant/1/6_2.png index a71f806daeb..93c995c50c8 100644 Binary files a/public/images/pokemon/icons/variant/1/6_2.png and b/public/images/pokemon/icons/variant/1/6_2.png differ diff --git a/public/images/pokemon/icons/variant/1/6_3.png b/public/images/pokemon/icons/variant/1/6_3.png index 34886972cb0..1bd2314f4dc 100644 Binary files a/public/images/pokemon/icons/variant/1/6_3.png and b/public/images/pokemon/icons/variant/1/6_3.png differ diff --git a/public/images/pokemon/icons/variant/1/70_2.png b/public/images/pokemon/icons/variant/1/70_2.png index 6095f7032af..02f84df061a 100644 Binary files a/public/images/pokemon/icons/variant/1/70_2.png and b/public/images/pokemon/icons/variant/1/70_2.png differ diff --git a/public/images/pokemon/icons/variant/1/70_3.png b/public/images/pokemon/icons/variant/1/70_3.png index 4c1d563931e..94ace3bf10c 100644 Binary files a/public/images/pokemon/icons/variant/1/70_3.png and b/public/images/pokemon/icons/variant/1/70_3.png differ diff --git a/public/images/pokemon/icons/variant/1/71_2.png b/public/images/pokemon/icons/variant/1/71_2.png index 4cac71faaf7..2736ceb3635 100644 Binary files a/public/images/pokemon/icons/variant/1/71_2.png and b/public/images/pokemon/icons/variant/1/71_2.png differ diff --git a/public/images/pokemon/icons/variant/1/71_3.png b/public/images/pokemon/icons/variant/1/71_3.png index 6eda69191fd..4665e2bb213 100644 Binary files a/public/images/pokemon/icons/variant/1/71_3.png and b/public/images/pokemon/icons/variant/1/71_3.png differ diff --git a/public/images/pokemon/icons/variant/1/77_2.png b/public/images/pokemon/icons/variant/1/77_2.png index 3088fa45ba9..66a33e16560 100644 Binary files a/public/images/pokemon/icons/variant/1/77_2.png and b/public/images/pokemon/icons/variant/1/77_2.png differ diff --git a/public/images/pokemon/icons/variant/1/77_3.png b/public/images/pokemon/icons/variant/1/77_3.png index a2446036162..9eb16e51110 100644 Binary files a/public/images/pokemon/icons/variant/1/77_3.png and b/public/images/pokemon/icons/variant/1/77_3.png differ diff --git a/public/images/pokemon/icons/variant/1/78_2.png b/public/images/pokemon/icons/variant/1/78_2.png index c071090fe57..8a9f6e359b5 100644 Binary files a/public/images/pokemon/icons/variant/1/78_2.png and b/public/images/pokemon/icons/variant/1/78_2.png differ diff --git a/public/images/pokemon/icons/variant/1/78_3.png b/public/images/pokemon/icons/variant/1/78_3.png index 1e80c8189d8..f39b2e2000b 100644 Binary files a/public/images/pokemon/icons/variant/1/78_3.png and b/public/images/pokemon/icons/variant/1/78_3.png differ diff --git a/public/images/pokemon/icons/variant/1/79_1.png b/public/images/pokemon/icons/variant/1/79_1.png index 5471915d489..b68bd03013d 100644 Binary files a/public/images/pokemon/icons/variant/1/79_1.png and b/public/images/pokemon/icons/variant/1/79_1.png differ diff --git a/public/images/pokemon/icons/variant/1/79_2.png b/public/images/pokemon/icons/variant/1/79_2.png index af6caaa5994..9aff99e8bb6 100644 Binary files a/public/images/pokemon/icons/variant/1/79_2.png and b/public/images/pokemon/icons/variant/1/79_2.png differ diff --git a/public/images/pokemon/icons/variant/1/79_3.png b/public/images/pokemon/icons/variant/1/79_3.png index 11e229bb868..31b12c7e42f 100644 Binary files a/public/images/pokemon/icons/variant/1/79_3.png and b/public/images/pokemon/icons/variant/1/79_3.png differ diff --git a/public/images/pokemon/icons/variant/1/7_2.png b/public/images/pokemon/icons/variant/1/7_2.png index 5e784bf6a06..bb6cc28915b 100644 Binary files a/public/images/pokemon/icons/variant/1/7_2.png and b/public/images/pokemon/icons/variant/1/7_2.png differ diff --git a/public/images/pokemon/icons/variant/1/7_3.png b/public/images/pokemon/icons/variant/1/7_3.png index 23b5c38cb94..23b98410f71 100644 Binary files a/public/images/pokemon/icons/variant/1/7_3.png and b/public/images/pokemon/icons/variant/1/7_3.png differ diff --git a/public/images/pokemon/icons/variant/1/80-mega_2.png b/public/images/pokemon/icons/variant/1/80-mega_2.png index cc5a0b87d24..82ebffc1791 100644 Binary files a/public/images/pokemon/icons/variant/1/80-mega_2.png and b/public/images/pokemon/icons/variant/1/80-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/80-mega_3.png b/public/images/pokemon/icons/variant/1/80-mega_3.png index 11871ef80a5..db761b4e048 100644 Binary files a/public/images/pokemon/icons/variant/1/80-mega_3.png and b/public/images/pokemon/icons/variant/1/80-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/80_2.png b/public/images/pokemon/icons/variant/1/80_2.png index dab6fc6f06e..1efa64e2111 100644 Binary files a/public/images/pokemon/icons/variant/1/80_2.png and b/public/images/pokemon/icons/variant/1/80_2.png differ diff --git a/public/images/pokemon/icons/variant/1/80_3.png b/public/images/pokemon/icons/variant/1/80_3.png index a6180e61a02..cdbf64b1dff 100644 Binary files a/public/images/pokemon/icons/variant/1/80_3.png and b/public/images/pokemon/icons/variant/1/80_3.png differ diff --git a/public/images/pokemon/icons/variant/1/81_2.png b/public/images/pokemon/icons/variant/1/81_2.png index a2884dc20ab..9a66c664721 100644 Binary files a/public/images/pokemon/icons/variant/1/81_2.png and b/public/images/pokemon/icons/variant/1/81_2.png differ diff --git a/public/images/pokemon/icons/variant/1/81_3.png b/public/images/pokemon/icons/variant/1/81_3.png index a86b8fe245f..c667ae2fccf 100644 Binary files a/public/images/pokemon/icons/variant/1/81_3.png and b/public/images/pokemon/icons/variant/1/81_3.png differ diff --git a/public/images/pokemon/icons/variant/1/82_2.png b/public/images/pokemon/icons/variant/1/82_2.png index 390a0f72446..bd65a916dfa 100644 Binary files a/public/images/pokemon/icons/variant/1/82_2.png and b/public/images/pokemon/icons/variant/1/82_2.png differ diff --git a/public/images/pokemon/icons/variant/1/82_3.png b/public/images/pokemon/icons/variant/1/82_3.png index 496f006c1ce..e79e9e362e3 100644 Binary files a/public/images/pokemon/icons/variant/1/82_3.png and b/public/images/pokemon/icons/variant/1/82_3.png differ diff --git a/public/images/pokemon/icons/variant/1/83_2.png b/public/images/pokemon/icons/variant/1/83_2.png index 8deaa78e9c6..46c62bd207f 100644 Binary files a/public/images/pokemon/icons/variant/1/83_2.png and b/public/images/pokemon/icons/variant/1/83_2.png differ diff --git a/public/images/pokemon/icons/variant/1/83_3.png b/public/images/pokemon/icons/variant/1/83_3.png index 59cd8b5645d..3e92cc7847f 100644 Binary files a/public/images/pokemon/icons/variant/1/83_3.png and b/public/images/pokemon/icons/variant/1/83_3.png differ diff --git a/public/images/pokemon/icons/variant/1/84-f_1.png b/public/images/pokemon/icons/variant/1/84-f_1.png index a0ca4a89b2e..c8bd8086616 100644 Binary files a/public/images/pokemon/icons/variant/1/84-f_1.png and b/public/images/pokemon/icons/variant/1/84-f_1.png differ diff --git a/public/images/pokemon/icons/variant/1/84-f_2.png b/public/images/pokemon/icons/variant/1/84-f_2.png index f8b34a5d810..27e8c648e72 100644 Binary files a/public/images/pokemon/icons/variant/1/84-f_2.png and b/public/images/pokemon/icons/variant/1/84-f_2.png differ diff --git a/public/images/pokemon/icons/variant/1/84-f_3.png b/public/images/pokemon/icons/variant/1/84-f_3.png index b3aeb8a21fc..df8ed70a9ff 100644 Binary files a/public/images/pokemon/icons/variant/1/84-f_3.png and b/public/images/pokemon/icons/variant/1/84-f_3.png differ diff --git a/public/images/pokemon/icons/variant/1/84_1.png b/public/images/pokemon/icons/variant/1/84_1.png index a0ca4a89b2e..c8bd8086616 100644 Binary files a/public/images/pokemon/icons/variant/1/84_1.png and b/public/images/pokemon/icons/variant/1/84_1.png differ diff --git a/public/images/pokemon/icons/variant/1/84_2.png b/public/images/pokemon/icons/variant/1/84_2.png index e51e2107263..d6a395fae73 100644 Binary files a/public/images/pokemon/icons/variant/1/84_2.png and b/public/images/pokemon/icons/variant/1/84_2.png differ diff --git a/public/images/pokemon/icons/variant/1/84_3.png b/public/images/pokemon/icons/variant/1/84_3.png index a7127a59620..2375964db7d 100644 Binary files a/public/images/pokemon/icons/variant/1/84_3.png and b/public/images/pokemon/icons/variant/1/84_3.png differ diff --git a/public/images/pokemon/icons/variant/1/85-f_1.png b/public/images/pokemon/icons/variant/1/85-f_1.png index acd9943420b..a6d71e5a5cc 100644 Binary files a/public/images/pokemon/icons/variant/1/85-f_1.png and b/public/images/pokemon/icons/variant/1/85-f_1.png differ diff --git a/public/images/pokemon/icons/variant/1/85-f_2.png b/public/images/pokemon/icons/variant/1/85-f_2.png index ff1841c63c5..855ffcc3c85 100644 Binary files a/public/images/pokemon/icons/variant/1/85-f_2.png and b/public/images/pokemon/icons/variant/1/85-f_2.png differ diff --git a/public/images/pokemon/icons/variant/1/85-f_3.png b/public/images/pokemon/icons/variant/1/85-f_3.png index 6c166af1f78..13efa3d3092 100644 Binary files a/public/images/pokemon/icons/variant/1/85-f_3.png and b/public/images/pokemon/icons/variant/1/85-f_3.png differ diff --git a/public/images/pokemon/icons/variant/1/85_1.png b/public/images/pokemon/icons/variant/1/85_1.png index acd9943420b..a6d71e5a5cc 100644 Binary files a/public/images/pokemon/icons/variant/1/85_1.png and b/public/images/pokemon/icons/variant/1/85_1.png differ diff --git a/public/images/pokemon/icons/variant/1/85_2.png b/public/images/pokemon/icons/variant/1/85_2.png index 1efa6f238f3..81214972abd 100644 Binary files a/public/images/pokemon/icons/variant/1/85_2.png and b/public/images/pokemon/icons/variant/1/85_2.png differ diff --git a/public/images/pokemon/icons/variant/1/85_3.png b/public/images/pokemon/icons/variant/1/85_3.png index dd2a8a32d1f..d3a7daecdeb 100644 Binary files a/public/images/pokemon/icons/variant/1/85_3.png and b/public/images/pokemon/icons/variant/1/85_3.png differ diff --git a/public/images/pokemon/icons/variant/1/86_1.png b/public/images/pokemon/icons/variant/1/86_1.png index 33032e875bd..fbda1958727 100644 Binary files a/public/images/pokemon/icons/variant/1/86_1.png and b/public/images/pokemon/icons/variant/1/86_1.png differ diff --git a/public/images/pokemon/icons/variant/1/86_2.png b/public/images/pokemon/icons/variant/1/86_2.png index e6495963b07..858cf64297d 100644 Binary files a/public/images/pokemon/icons/variant/1/86_2.png and b/public/images/pokemon/icons/variant/1/86_2.png differ diff --git a/public/images/pokemon/icons/variant/1/86_3.png b/public/images/pokemon/icons/variant/1/86_3.png index 7ab2eecbe79..bf831286b8d 100644 Binary files a/public/images/pokemon/icons/variant/1/86_3.png and b/public/images/pokemon/icons/variant/1/86_3.png differ diff --git a/public/images/pokemon/icons/variant/1/87_1.png b/public/images/pokemon/icons/variant/1/87_1.png index ddeeec97b98..2e51c549b88 100644 Binary files a/public/images/pokemon/icons/variant/1/87_1.png and b/public/images/pokemon/icons/variant/1/87_1.png differ diff --git a/public/images/pokemon/icons/variant/1/87_2.png b/public/images/pokemon/icons/variant/1/87_2.png index 2631944bbe0..c70e64b57dc 100644 Binary files a/public/images/pokemon/icons/variant/1/87_2.png and b/public/images/pokemon/icons/variant/1/87_2.png differ diff --git a/public/images/pokemon/icons/variant/1/87_3.png b/public/images/pokemon/icons/variant/1/87_3.png index a53c4e6830c..7b8c530c1ab 100644 Binary files a/public/images/pokemon/icons/variant/1/87_3.png and b/public/images/pokemon/icons/variant/1/87_3.png differ diff --git a/public/images/pokemon/icons/variant/1/88_2.png b/public/images/pokemon/icons/variant/1/88_2.png index 164f98f7d80..3c04ca96aa1 100644 Binary files a/public/images/pokemon/icons/variant/1/88_2.png and b/public/images/pokemon/icons/variant/1/88_2.png differ diff --git a/public/images/pokemon/icons/variant/1/88_3.png b/public/images/pokemon/icons/variant/1/88_3.png index 6e90ad56d2a..4defec161eb 100644 Binary files a/public/images/pokemon/icons/variant/1/88_3.png and b/public/images/pokemon/icons/variant/1/88_3.png differ diff --git a/public/images/pokemon/icons/variant/1/89_2.png b/public/images/pokemon/icons/variant/1/89_2.png index 533ebe86c9e..2ef33ba90ae 100644 Binary files a/public/images/pokemon/icons/variant/1/89_2.png and b/public/images/pokemon/icons/variant/1/89_2.png differ diff --git a/public/images/pokemon/icons/variant/1/89_3.png b/public/images/pokemon/icons/variant/1/89_3.png index 8caf93912d4..55aa771e6eb 100644 Binary files a/public/images/pokemon/icons/variant/1/89_3.png and b/public/images/pokemon/icons/variant/1/89_3.png differ diff --git a/public/images/pokemon/icons/variant/1/8_2.png b/public/images/pokemon/icons/variant/1/8_2.png index 6474c98bbda..dfa46b481f4 100644 Binary files a/public/images/pokemon/icons/variant/1/8_2.png and b/public/images/pokemon/icons/variant/1/8_2.png differ diff --git a/public/images/pokemon/icons/variant/1/8_3.png b/public/images/pokemon/icons/variant/1/8_3.png index 7eda6afd272..64603ade38f 100644 Binary files a/public/images/pokemon/icons/variant/1/8_3.png and b/public/images/pokemon/icons/variant/1/8_3.png differ diff --git a/public/images/pokemon/icons/variant/1/9-gigantamax_2.png b/public/images/pokemon/icons/variant/1/9-gigantamax_2.png index 9b0525f73e3..fda117ba549 100644 Binary files a/public/images/pokemon/icons/variant/1/9-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/9-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/9-gigantamax_3.png b/public/images/pokemon/icons/variant/1/9-gigantamax_3.png index 61b0b406149..a0db91b1458 100644 Binary files a/public/images/pokemon/icons/variant/1/9-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/9-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/9-mega_2.png b/public/images/pokemon/icons/variant/1/9-mega_2.png index 43bd581bf85..8d7e09ab2f9 100644 Binary files a/public/images/pokemon/icons/variant/1/9-mega_2.png and b/public/images/pokemon/icons/variant/1/9-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/9-mega_3.png b/public/images/pokemon/icons/variant/1/9-mega_3.png index e8097fb2665..0d9ab0b5fe7 100644 Binary files a/public/images/pokemon/icons/variant/1/9-mega_3.png and b/public/images/pokemon/icons/variant/1/9-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/92_1.png b/public/images/pokemon/icons/variant/1/92_1.png index 630edf8dd65..373d02346ae 100644 Binary files a/public/images/pokemon/icons/variant/1/92_1.png and b/public/images/pokemon/icons/variant/1/92_1.png differ diff --git a/public/images/pokemon/icons/variant/1/92_2.png b/public/images/pokemon/icons/variant/1/92_2.png index bcfd934e262..1fa35d5fe54 100644 Binary files a/public/images/pokemon/icons/variant/1/92_2.png and b/public/images/pokemon/icons/variant/1/92_2.png differ diff --git a/public/images/pokemon/icons/variant/1/92_3.png b/public/images/pokemon/icons/variant/1/92_3.png index 2a63286ab71..b44a2836301 100644 Binary files a/public/images/pokemon/icons/variant/1/92_3.png and b/public/images/pokemon/icons/variant/1/92_3.png differ diff --git a/public/images/pokemon/icons/variant/1/93_1.png b/public/images/pokemon/icons/variant/1/93_1.png index 6b234888e7c..765869872c1 100644 Binary files a/public/images/pokemon/icons/variant/1/93_1.png and b/public/images/pokemon/icons/variant/1/93_1.png differ diff --git a/public/images/pokemon/icons/variant/1/93_2.png b/public/images/pokemon/icons/variant/1/93_2.png index bbac824bb92..e350bb1529e 100644 Binary files a/public/images/pokemon/icons/variant/1/93_2.png and b/public/images/pokemon/icons/variant/1/93_2.png differ diff --git a/public/images/pokemon/icons/variant/1/93_3.png b/public/images/pokemon/icons/variant/1/93_3.png index f8dda577d8a..13a75213f70 100644 Binary files a/public/images/pokemon/icons/variant/1/93_3.png and b/public/images/pokemon/icons/variant/1/93_3.png differ diff --git a/public/images/pokemon/icons/variant/1/94-gigantamax_1.png b/public/images/pokemon/icons/variant/1/94-gigantamax_1.png index 44410e1bb6b..4eb36db565a 100644 Binary files a/public/images/pokemon/icons/variant/1/94-gigantamax_1.png and b/public/images/pokemon/icons/variant/1/94-gigantamax_1.png differ diff --git a/public/images/pokemon/icons/variant/1/94-gigantamax_2.png b/public/images/pokemon/icons/variant/1/94-gigantamax_2.png index c48eaa9bc3c..c56f680a1ff 100644 Binary files a/public/images/pokemon/icons/variant/1/94-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/94-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/94-gigantamax_3.png b/public/images/pokemon/icons/variant/1/94-gigantamax_3.png index 19f9ca86395..67500738b97 100644 Binary files a/public/images/pokemon/icons/variant/1/94-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/94-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/94-mega_1.png b/public/images/pokemon/icons/variant/1/94-mega_1.png index 8be3900458d..9407509690f 100644 Binary files a/public/images/pokemon/icons/variant/1/94-mega_1.png and b/public/images/pokemon/icons/variant/1/94-mega_1.png differ diff --git a/public/images/pokemon/icons/variant/1/94-mega_2.png b/public/images/pokemon/icons/variant/1/94-mega_2.png index 07306aec370..321b7376c61 100644 Binary files a/public/images/pokemon/icons/variant/1/94-mega_2.png and b/public/images/pokemon/icons/variant/1/94-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/1/94-mega_3.png b/public/images/pokemon/icons/variant/1/94-mega_3.png index dca0a75b535..be06bbb1214 100644 Binary files a/public/images/pokemon/icons/variant/1/94-mega_3.png and b/public/images/pokemon/icons/variant/1/94-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/1/94_1.png b/public/images/pokemon/icons/variant/1/94_1.png index 53589398a5a..9a023e75fa4 100644 Binary files a/public/images/pokemon/icons/variant/1/94_1.png and b/public/images/pokemon/icons/variant/1/94_1.png differ diff --git a/public/images/pokemon/icons/variant/1/94_2.png b/public/images/pokemon/icons/variant/1/94_2.png index e4f015c6604..2b33ff6044b 100644 Binary files a/public/images/pokemon/icons/variant/1/94_2.png and b/public/images/pokemon/icons/variant/1/94_2.png differ diff --git a/public/images/pokemon/icons/variant/1/94_3.png b/public/images/pokemon/icons/variant/1/94_3.png index b5809b798c4..f107a4f9135 100644 Binary files a/public/images/pokemon/icons/variant/1/94_3.png and b/public/images/pokemon/icons/variant/1/94_3.png differ diff --git a/public/images/pokemon/icons/variant/1/98_2.png b/public/images/pokemon/icons/variant/1/98_2.png index ea5f1ebf5de..6c866caaabc 100644 Binary files a/public/images/pokemon/icons/variant/1/98_2.png and b/public/images/pokemon/icons/variant/1/98_2.png differ diff --git a/public/images/pokemon/icons/variant/1/98_3.png b/public/images/pokemon/icons/variant/1/98_3.png index 71014d948f4..6f88a8c8fc0 100644 Binary files a/public/images/pokemon/icons/variant/1/98_3.png and b/public/images/pokemon/icons/variant/1/98_3.png differ diff --git a/public/images/pokemon/icons/variant/1/99-gigantamax_2.png b/public/images/pokemon/icons/variant/1/99-gigantamax_2.png index f56f7edbfe4..8c3842d3478 100644 Binary files a/public/images/pokemon/icons/variant/1/99-gigantamax_2.png and b/public/images/pokemon/icons/variant/1/99-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/1/99-gigantamax_3.png b/public/images/pokemon/icons/variant/1/99-gigantamax_3.png index dbd95345af8..685ca6e0363 100644 Binary files a/public/images/pokemon/icons/variant/1/99-gigantamax_3.png and b/public/images/pokemon/icons/variant/1/99-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/1/99_2.png b/public/images/pokemon/icons/variant/1/99_2.png index fff774d519c..93b8e3fdca7 100644 Binary files a/public/images/pokemon/icons/variant/1/99_2.png and b/public/images/pokemon/icons/variant/1/99_2.png differ diff --git a/public/images/pokemon/icons/variant/1/99_3.png b/public/images/pokemon/icons/variant/1/99_3.png index f5274f2745b..8f855217baa 100644 Binary files a/public/images/pokemon/icons/variant/1/99_3.png and b/public/images/pokemon/icons/variant/1/99_3.png differ diff --git a/public/images/pokemon/icons/variant/1/9_2.png b/public/images/pokemon/icons/variant/1/9_2.png index 86f283ccf05..07cdf93ca8f 100644 Binary files a/public/images/pokemon/icons/variant/1/9_2.png and b/public/images/pokemon/icons/variant/1/9_2.png differ diff --git a/public/images/pokemon/icons/variant/1/9_3.png b/public/images/pokemon/icons/variant/1/9_3.png index b8facd38ae8..6c74b136184 100644 Binary files a/public/images/pokemon/icons/variant/1/9_3.png and b/public/images/pokemon/icons/variant/1/9_3.png differ diff --git a/public/images/pokemon/icons/variant/2/152_2.png b/public/images/pokemon/icons/variant/2/152_2.png index 3815a4dbf49..4ace614d9c3 100644 Binary files a/public/images/pokemon/icons/variant/2/152_2.png and b/public/images/pokemon/icons/variant/2/152_2.png differ diff --git a/public/images/pokemon/icons/variant/2/152_3.png b/public/images/pokemon/icons/variant/2/152_3.png index be0fffab10c..10e7717ac42 100644 Binary files a/public/images/pokemon/icons/variant/2/152_3.png and b/public/images/pokemon/icons/variant/2/152_3.png differ diff --git a/public/images/pokemon/icons/variant/2/153_2.png b/public/images/pokemon/icons/variant/2/153_2.png index 020fc80d8b9..b1d8df03168 100644 Binary files a/public/images/pokemon/icons/variant/2/153_2.png and b/public/images/pokemon/icons/variant/2/153_2.png differ diff --git a/public/images/pokemon/icons/variant/2/153_3.png b/public/images/pokemon/icons/variant/2/153_3.png index 681acfa2db1..f1dc1aec297 100644 Binary files a/public/images/pokemon/icons/variant/2/153_3.png and b/public/images/pokemon/icons/variant/2/153_3.png differ diff --git a/public/images/pokemon/icons/variant/2/154-f_2.png b/public/images/pokemon/icons/variant/2/154-f_2.png index 5ba8c458cf5..aec216011ce 100644 Binary files a/public/images/pokemon/icons/variant/2/154-f_2.png and b/public/images/pokemon/icons/variant/2/154-f_2.png differ diff --git a/public/images/pokemon/icons/variant/2/154-f_3.png b/public/images/pokemon/icons/variant/2/154-f_3.png index c278d045c38..1c18d0aa797 100644 Binary files a/public/images/pokemon/icons/variant/2/154-f_3.png and b/public/images/pokemon/icons/variant/2/154-f_3.png differ diff --git a/public/images/pokemon/icons/variant/2/154_2.png b/public/images/pokemon/icons/variant/2/154_2.png index 323e2331a77..d184be50dc2 100644 Binary files a/public/images/pokemon/icons/variant/2/154_2.png and b/public/images/pokemon/icons/variant/2/154_2.png differ diff --git a/public/images/pokemon/icons/variant/2/154_3.png b/public/images/pokemon/icons/variant/2/154_3.png index aef1e4d633e..a3948e79cb2 100644 Binary files a/public/images/pokemon/icons/variant/2/154_3.png and b/public/images/pokemon/icons/variant/2/154_3.png differ diff --git a/public/images/pokemon/icons/variant/2/158_2.png b/public/images/pokemon/icons/variant/2/158_2.png index c6b75ed6c20..3fbfaffc9f6 100644 Binary files a/public/images/pokemon/icons/variant/2/158_2.png and b/public/images/pokemon/icons/variant/2/158_2.png differ diff --git a/public/images/pokemon/icons/variant/2/158_3.png b/public/images/pokemon/icons/variant/2/158_3.png index 073e3faa2e2..34e6e42660b 100644 Binary files a/public/images/pokemon/icons/variant/2/158_3.png and b/public/images/pokemon/icons/variant/2/158_3.png differ diff --git a/public/images/pokemon/icons/variant/2/159_2.png b/public/images/pokemon/icons/variant/2/159_2.png index 95d74728073..ce5d078416f 100644 Binary files a/public/images/pokemon/icons/variant/2/159_2.png and b/public/images/pokemon/icons/variant/2/159_2.png differ diff --git a/public/images/pokemon/icons/variant/2/159_3.png b/public/images/pokemon/icons/variant/2/159_3.png index a73818d0c3a..cd0754eb05e 100644 Binary files a/public/images/pokemon/icons/variant/2/159_3.png and b/public/images/pokemon/icons/variant/2/159_3.png differ diff --git a/public/images/pokemon/icons/variant/2/160_2.png b/public/images/pokemon/icons/variant/2/160_2.png index 7b7ba6e7231..f6d1c14d814 100644 Binary files a/public/images/pokemon/icons/variant/2/160_2.png and b/public/images/pokemon/icons/variant/2/160_2.png differ diff --git a/public/images/pokemon/icons/variant/2/160_3.png b/public/images/pokemon/icons/variant/2/160_3.png index 62a4ab22fd2..d6f3f37870e 100644 Binary files a/public/images/pokemon/icons/variant/2/160_3.png and b/public/images/pokemon/icons/variant/2/160_3.png differ diff --git a/public/images/pokemon/icons/variant/2/161_2.png b/public/images/pokemon/icons/variant/2/161_2.png index b128d7cb915..5c39eb0902a 100644 Binary files a/public/images/pokemon/icons/variant/2/161_2.png and b/public/images/pokemon/icons/variant/2/161_2.png differ diff --git a/public/images/pokemon/icons/variant/2/161_3.png b/public/images/pokemon/icons/variant/2/161_3.png index 8024d557c4a..dcdbd8cfeb3 100644 Binary files a/public/images/pokemon/icons/variant/2/161_3.png and b/public/images/pokemon/icons/variant/2/161_3.png differ diff --git a/public/images/pokemon/icons/variant/2/162_2.png b/public/images/pokemon/icons/variant/2/162_2.png index 6789af2fb48..a1a68553f6b 100644 Binary files a/public/images/pokemon/icons/variant/2/162_2.png and b/public/images/pokemon/icons/variant/2/162_2.png differ diff --git a/public/images/pokemon/icons/variant/2/162_3.png b/public/images/pokemon/icons/variant/2/162_3.png index e3bd3651b6c..c250e744424 100644 Binary files a/public/images/pokemon/icons/variant/2/162_3.png and b/public/images/pokemon/icons/variant/2/162_3.png differ diff --git a/public/images/pokemon/icons/variant/2/163_2.png b/public/images/pokemon/icons/variant/2/163_2.png index 0f7809f943a..25de8b42ac0 100644 Binary files a/public/images/pokemon/icons/variant/2/163_2.png and b/public/images/pokemon/icons/variant/2/163_2.png differ diff --git a/public/images/pokemon/icons/variant/2/163_3.png b/public/images/pokemon/icons/variant/2/163_3.png index f732bb8399f..c9ab07749c5 100644 Binary files a/public/images/pokemon/icons/variant/2/163_3.png and b/public/images/pokemon/icons/variant/2/163_3.png differ diff --git a/public/images/pokemon/icons/variant/2/164_2.png b/public/images/pokemon/icons/variant/2/164_2.png index ba0758a34e3..cbdda5b51d9 100644 Binary files a/public/images/pokemon/icons/variant/2/164_2.png and b/public/images/pokemon/icons/variant/2/164_2.png differ diff --git a/public/images/pokemon/icons/variant/2/164_3.png b/public/images/pokemon/icons/variant/2/164_3.png index 993845e234f..d4016435c39 100644 Binary files a/public/images/pokemon/icons/variant/2/164_3.png and b/public/images/pokemon/icons/variant/2/164_3.png differ diff --git a/public/images/pokemon/icons/variant/2/167_2.png b/public/images/pokemon/icons/variant/2/167_2.png index a6bd15c0eef..0738725f5a6 100644 Binary files a/public/images/pokemon/icons/variant/2/167_2.png and b/public/images/pokemon/icons/variant/2/167_2.png differ diff --git a/public/images/pokemon/icons/variant/2/167_3.png b/public/images/pokemon/icons/variant/2/167_3.png index 88d84eec2a9..2dd4618c9ae 100644 Binary files a/public/images/pokemon/icons/variant/2/167_3.png and b/public/images/pokemon/icons/variant/2/167_3.png differ diff --git a/public/images/pokemon/icons/variant/2/168_2.png b/public/images/pokemon/icons/variant/2/168_2.png index cf34c26be21..4e09f54d2d4 100644 Binary files a/public/images/pokemon/icons/variant/2/168_2.png and b/public/images/pokemon/icons/variant/2/168_2.png differ diff --git a/public/images/pokemon/icons/variant/2/168_3.png b/public/images/pokemon/icons/variant/2/168_3.png index 7a62c58d299..faa1ddad4be 100644 Binary files a/public/images/pokemon/icons/variant/2/168_3.png and b/public/images/pokemon/icons/variant/2/168_3.png differ diff --git a/public/images/pokemon/icons/variant/2/169_1.png b/public/images/pokemon/icons/variant/2/169_1.png index 1f4bceba846..682a848113b 100644 Binary files a/public/images/pokemon/icons/variant/2/169_1.png and b/public/images/pokemon/icons/variant/2/169_1.png differ diff --git a/public/images/pokemon/icons/variant/2/169_2.png b/public/images/pokemon/icons/variant/2/169_2.png index 48b0dfb09fc..44ec273f670 100644 Binary files a/public/images/pokemon/icons/variant/2/169_2.png and b/public/images/pokemon/icons/variant/2/169_2.png differ diff --git a/public/images/pokemon/icons/variant/2/169_3.png b/public/images/pokemon/icons/variant/2/169_3.png index 86f8ddd9b74..0e4e1da585c 100644 Binary files a/public/images/pokemon/icons/variant/2/169_3.png and b/public/images/pokemon/icons/variant/2/169_3.png differ diff --git a/public/images/pokemon/icons/variant/2/170_2.png b/public/images/pokemon/icons/variant/2/170_2.png index 1ecdfda6eb8..9c6192a3e18 100644 Binary files a/public/images/pokemon/icons/variant/2/170_2.png and b/public/images/pokemon/icons/variant/2/170_2.png differ diff --git a/public/images/pokemon/icons/variant/2/170_3.png b/public/images/pokemon/icons/variant/2/170_3.png index 01cb78568ed..1bcde11c051 100644 Binary files a/public/images/pokemon/icons/variant/2/170_3.png and b/public/images/pokemon/icons/variant/2/170_3.png differ diff --git a/public/images/pokemon/icons/variant/2/171_2.png b/public/images/pokemon/icons/variant/2/171_2.png index 3ff5792e2d2..155ff394025 100644 Binary files a/public/images/pokemon/icons/variant/2/171_2.png and b/public/images/pokemon/icons/variant/2/171_2.png differ diff --git a/public/images/pokemon/icons/variant/2/171_3.png b/public/images/pokemon/icons/variant/2/171_3.png index 11a3996da80..4e7775bb8df 100644 Binary files a/public/images/pokemon/icons/variant/2/171_3.png and b/public/images/pokemon/icons/variant/2/171_3.png differ diff --git a/public/images/pokemon/icons/variant/2/172-spiky_2.png b/public/images/pokemon/icons/variant/2/172-spiky_2.png index b293ee3283a..01a95c02be2 100644 Binary files a/public/images/pokemon/icons/variant/2/172-spiky_2.png and b/public/images/pokemon/icons/variant/2/172-spiky_2.png differ diff --git a/public/images/pokemon/icons/variant/2/172-spiky_3.png b/public/images/pokemon/icons/variant/2/172-spiky_3.png index ff9a4229421..a1b79d7702f 100644 Binary files a/public/images/pokemon/icons/variant/2/172-spiky_3.png and b/public/images/pokemon/icons/variant/2/172-spiky_3.png differ diff --git a/public/images/pokemon/icons/variant/2/172_2.png b/public/images/pokemon/icons/variant/2/172_2.png index 4fa282f9297..7805999eb49 100644 Binary files a/public/images/pokemon/icons/variant/2/172_2.png and b/public/images/pokemon/icons/variant/2/172_2.png differ diff --git a/public/images/pokemon/icons/variant/2/172_3.png b/public/images/pokemon/icons/variant/2/172_3.png index 95f0c9bdc6d..440359a1ca0 100644 Binary files a/public/images/pokemon/icons/variant/2/172_3.png and b/public/images/pokemon/icons/variant/2/172_3.png differ diff --git a/public/images/pokemon/icons/variant/2/173_2.png b/public/images/pokemon/icons/variant/2/173_2.png index 3ffaaca89dd..ee761eb926f 100644 Binary files a/public/images/pokemon/icons/variant/2/173_2.png and b/public/images/pokemon/icons/variant/2/173_2.png differ diff --git a/public/images/pokemon/icons/variant/2/173_3.png b/public/images/pokemon/icons/variant/2/173_3.png index 5d24a29f9d9..47a587d86b2 100644 Binary files a/public/images/pokemon/icons/variant/2/173_3.png and b/public/images/pokemon/icons/variant/2/173_3.png differ diff --git a/public/images/pokemon/icons/variant/2/174_2.png b/public/images/pokemon/icons/variant/2/174_2.png index e7ffddb1f57..855f1a9ef6a 100644 Binary files a/public/images/pokemon/icons/variant/2/174_2.png and b/public/images/pokemon/icons/variant/2/174_2.png differ diff --git a/public/images/pokemon/icons/variant/2/174_3.png b/public/images/pokemon/icons/variant/2/174_3.png index 58d98aab99a..0297f5f65d5 100644 Binary files a/public/images/pokemon/icons/variant/2/174_3.png and b/public/images/pokemon/icons/variant/2/174_3.png differ diff --git a/public/images/pokemon/icons/variant/2/175_1.png b/public/images/pokemon/icons/variant/2/175_1.png index 3908363e380..760ba259f2a 100644 Binary files a/public/images/pokemon/icons/variant/2/175_1.png and b/public/images/pokemon/icons/variant/2/175_1.png differ diff --git a/public/images/pokemon/icons/variant/2/175_2.png b/public/images/pokemon/icons/variant/2/175_2.png index b602ce368b8..0a60fedfc47 100644 Binary files a/public/images/pokemon/icons/variant/2/175_2.png and b/public/images/pokemon/icons/variant/2/175_2.png differ diff --git a/public/images/pokemon/icons/variant/2/175_3.png b/public/images/pokemon/icons/variant/2/175_3.png index 842cb52abfc..9a8ef36923c 100644 Binary files a/public/images/pokemon/icons/variant/2/175_3.png and b/public/images/pokemon/icons/variant/2/175_3.png differ diff --git a/public/images/pokemon/icons/variant/2/176_1.png b/public/images/pokemon/icons/variant/2/176_1.png index e51a7a45c3c..2a4a9445504 100644 Binary files a/public/images/pokemon/icons/variant/2/176_1.png and b/public/images/pokemon/icons/variant/2/176_1.png differ diff --git a/public/images/pokemon/icons/variant/2/176_2.png b/public/images/pokemon/icons/variant/2/176_2.png index 22df84f66e1..3b8483786ae 100644 Binary files a/public/images/pokemon/icons/variant/2/176_2.png and b/public/images/pokemon/icons/variant/2/176_2.png differ diff --git a/public/images/pokemon/icons/variant/2/176_3.png b/public/images/pokemon/icons/variant/2/176_3.png index 5663e2bbf51..57758cc0276 100644 Binary files a/public/images/pokemon/icons/variant/2/176_3.png and b/public/images/pokemon/icons/variant/2/176_3.png differ diff --git a/public/images/pokemon/icons/variant/2/177_2.png b/public/images/pokemon/icons/variant/2/177_2.png index 676224d2827..5d35d5d80dc 100644 Binary files a/public/images/pokemon/icons/variant/2/177_2.png and b/public/images/pokemon/icons/variant/2/177_2.png differ diff --git a/public/images/pokemon/icons/variant/2/177_3.png b/public/images/pokemon/icons/variant/2/177_3.png index 2952d8f4926..a76afdcc596 100644 Binary files a/public/images/pokemon/icons/variant/2/177_3.png and b/public/images/pokemon/icons/variant/2/177_3.png differ diff --git a/public/images/pokemon/icons/variant/2/178_2.png b/public/images/pokemon/icons/variant/2/178_2.png index 060c25138e0..1604da4579d 100644 Binary files a/public/images/pokemon/icons/variant/2/178_2.png and b/public/images/pokemon/icons/variant/2/178_2.png differ diff --git a/public/images/pokemon/icons/variant/2/178_3.png b/public/images/pokemon/icons/variant/2/178_3.png index 34d38f8cf1f..88be62034f8 100644 Binary files a/public/images/pokemon/icons/variant/2/178_3.png and b/public/images/pokemon/icons/variant/2/178_3.png differ diff --git a/public/images/pokemon/icons/variant/2/179_2.png b/public/images/pokemon/icons/variant/2/179_2.png index d4259abe15e..03e9bc708d5 100644 Binary files a/public/images/pokemon/icons/variant/2/179_2.png and b/public/images/pokemon/icons/variant/2/179_2.png differ diff --git a/public/images/pokemon/icons/variant/2/179_3.png b/public/images/pokemon/icons/variant/2/179_3.png index e6563d386de..f9cce98e5a3 100644 Binary files a/public/images/pokemon/icons/variant/2/179_3.png and b/public/images/pokemon/icons/variant/2/179_3.png differ diff --git a/public/images/pokemon/icons/variant/2/180_2.png b/public/images/pokemon/icons/variant/2/180_2.png index 67ec3c64302..48bc226640a 100644 Binary files a/public/images/pokemon/icons/variant/2/180_2.png and b/public/images/pokemon/icons/variant/2/180_2.png differ diff --git a/public/images/pokemon/icons/variant/2/180_3.png b/public/images/pokemon/icons/variant/2/180_3.png index 2704f9b595e..5f5709a2da7 100644 Binary files a/public/images/pokemon/icons/variant/2/180_3.png and b/public/images/pokemon/icons/variant/2/180_3.png differ diff --git a/public/images/pokemon/icons/variant/2/181-mega_2.png b/public/images/pokemon/icons/variant/2/181-mega_2.png index c2916ed6666..fbba258a64f 100644 Binary files a/public/images/pokemon/icons/variant/2/181-mega_2.png and b/public/images/pokemon/icons/variant/2/181-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/2/181-mega_3.png b/public/images/pokemon/icons/variant/2/181-mega_3.png index cc11cff881c..21deaae5cdd 100644 Binary files a/public/images/pokemon/icons/variant/2/181-mega_3.png and b/public/images/pokemon/icons/variant/2/181-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/2/181_2.png b/public/images/pokemon/icons/variant/2/181_2.png index 73d1d752c73..96be686b066 100644 Binary files a/public/images/pokemon/icons/variant/2/181_2.png and b/public/images/pokemon/icons/variant/2/181_2.png differ diff --git a/public/images/pokemon/icons/variant/2/181_3.png b/public/images/pokemon/icons/variant/2/181_3.png index db79a22c149..9438ee83db3 100644 Binary files a/public/images/pokemon/icons/variant/2/181_3.png and b/public/images/pokemon/icons/variant/2/181_3.png differ diff --git a/public/images/pokemon/icons/variant/2/182_2.png b/public/images/pokemon/icons/variant/2/182_2.png index f39877edc1e..1df625d201b 100644 Binary files a/public/images/pokemon/icons/variant/2/182_2.png and b/public/images/pokemon/icons/variant/2/182_2.png differ diff --git a/public/images/pokemon/icons/variant/2/182_3.png b/public/images/pokemon/icons/variant/2/182_3.png index 9830d956812..b1faf20e1b2 100644 Binary files a/public/images/pokemon/icons/variant/2/182_3.png and b/public/images/pokemon/icons/variant/2/182_3.png differ diff --git a/public/images/pokemon/icons/variant/2/183_2.png b/public/images/pokemon/icons/variant/2/183_2.png index 85d0e27c1fd..f744cec6b51 100644 Binary files a/public/images/pokemon/icons/variant/2/183_2.png and b/public/images/pokemon/icons/variant/2/183_2.png differ diff --git a/public/images/pokemon/icons/variant/2/183_3.png b/public/images/pokemon/icons/variant/2/183_3.png index eb5cf58d247..f5fe9324486 100644 Binary files a/public/images/pokemon/icons/variant/2/183_3.png and b/public/images/pokemon/icons/variant/2/183_3.png differ diff --git a/public/images/pokemon/icons/variant/2/184_2.png b/public/images/pokemon/icons/variant/2/184_2.png index 6244dde636a..e4f66d31ccd 100644 Binary files a/public/images/pokemon/icons/variant/2/184_2.png and b/public/images/pokemon/icons/variant/2/184_2.png differ diff --git a/public/images/pokemon/icons/variant/2/184_3.png b/public/images/pokemon/icons/variant/2/184_3.png index 8bbddd75f79..fdf009aad12 100644 Binary files a/public/images/pokemon/icons/variant/2/184_3.png and b/public/images/pokemon/icons/variant/2/184_3.png differ diff --git a/public/images/pokemon/icons/variant/2/185_2.png b/public/images/pokemon/icons/variant/2/185_2.png index 810aa3354ed..3f75fa437e8 100644 Binary files a/public/images/pokemon/icons/variant/2/185_2.png and b/public/images/pokemon/icons/variant/2/185_2.png differ diff --git a/public/images/pokemon/icons/variant/2/185_3.png b/public/images/pokemon/icons/variant/2/185_3.png index 5de578717a5..6c79f428cf0 100644 Binary files a/public/images/pokemon/icons/variant/2/185_3.png and b/public/images/pokemon/icons/variant/2/185_3.png differ diff --git a/public/images/pokemon/icons/variant/2/187_2.png b/public/images/pokemon/icons/variant/2/187_2.png index c7da6a46115..03ce280be52 100644 Binary files a/public/images/pokemon/icons/variant/2/187_2.png and b/public/images/pokemon/icons/variant/2/187_2.png differ diff --git a/public/images/pokemon/icons/variant/2/187_3.png b/public/images/pokemon/icons/variant/2/187_3.png index 6f118aed4f4..bd9f08ef997 100644 Binary files a/public/images/pokemon/icons/variant/2/187_3.png and b/public/images/pokemon/icons/variant/2/187_3.png differ diff --git a/public/images/pokemon/icons/variant/2/188_2.png b/public/images/pokemon/icons/variant/2/188_2.png index cbb7b690ff0..da24d37aec5 100644 Binary files a/public/images/pokemon/icons/variant/2/188_2.png and b/public/images/pokemon/icons/variant/2/188_2.png differ diff --git a/public/images/pokemon/icons/variant/2/188_3.png b/public/images/pokemon/icons/variant/2/188_3.png index 2c4e64cc608..8e9124a00dd 100644 Binary files a/public/images/pokemon/icons/variant/2/188_3.png and b/public/images/pokemon/icons/variant/2/188_3.png differ diff --git a/public/images/pokemon/icons/variant/2/189_2.png b/public/images/pokemon/icons/variant/2/189_2.png index ca5e127816a..d4bf0120708 100644 Binary files a/public/images/pokemon/icons/variant/2/189_2.png and b/public/images/pokemon/icons/variant/2/189_2.png differ diff --git a/public/images/pokemon/icons/variant/2/189_3.png b/public/images/pokemon/icons/variant/2/189_3.png index dfee57baf86..933d2ad2d21 100644 Binary files a/public/images/pokemon/icons/variant/2/189_3.png and b/public/images/pokemon/icons/variant/2/189_3.png differ diff --git a/public/images/pokemon/icons/variant/2/190_2.png b/public/images/pokemon/icons/variant/2/190_2.png index eced210ae5c..8d506c092d5 100644 Binary files a/public/images/pokemon/icons/variant/2/190_2.png and b/public/images/pokemon/icons/variant/2/190_2.png differ diff --git a/public/images/pokemon/icons/variant/2/190_3.png b/public/images/pokemon/icons/variant/2/190_3.png index ad3523ceb6b..56b4712ce1d 100644 Binary files a/public/images/pokemon/icons/variant/2/190_3.png and b/public/images/pokemon/icons/variant/2/190_3.png differ diff --git a/public/images/pokemon/icons/variant/2/193_2.png b/public/images/pokemon/icons/variant/2/193_2.png index 63de94c2fb1..dd52e333d98 100644 Binary files a/public/images/pokemon/icons/variant/2/193_2.png and b/public/images/pokemon/icons/variant/2/193_2.png differ diff --git a/public/images/pokemon/icons/variant/2/193_3.png b/public/images/pokemon/icons/variant/2/193_3.png index defaaa1ece3..fd1b6d7ea45 100644 Binary files a/public/images/pokemon/icons/variant/2/193_3.png and b/public/images/pokemon/icons/variant/2/193_3.png differ diff --git a/public/images/pokemon/icons/variant/2/194_2.png b/public/images/pokemon/icons/variant/2/194_2.png index 043c11ce065..b0dd2fa1e9c 100644 Binary files a/public/images/pokemon/icons/variant/2/194_2.png and b/public/images/pokemon/icons/variant/2/194_2.png differ diff --git a/public/images/pokemon/icons/variant/2/194_3.png b/public/images/pokemon/icons/variant/2/194_3.png index f5d792b141f..78fd0e98858 100644 Binary files a/public/images/pokemon/icons/variant/2/194_3.png and b/public/images/pokemon/icons/variant/2/194_3.png differ diff --git a/public/images/pokemon/icons/variant/2/195_2.png b/public/images/pokemon/icons/variant/2/195_2.png index 7fd5ba2792f..1db50411b6e 100644 Binary files a/public/images/pokemon/icons/variant/2/195_2.png and b/public/images/pokemon/icons/variant/2/195_2.png differ diff --git a/public/images/pokemon/icons/variant/2/195_3.png b/public/images/pokemon/icons/variant/2/195_3.png index 99da4dfe12e..44a7e499430 100644 Binary files a/public/images/pokemon/icons/variant/2/195_3.png and b/public/images/pokemon/icons/variant/2/195_3.png differ diff --git a/public/images/pokemon/icons/variant/2/196_1.png b/public/images/pokemon/icons/variant/2/196_1.png index 720839e6852..decd160c340 100644 Binary files a/public/images/pokemon/icons/variant/2/196_1.png and b/public/images/pokemon/icons/variant/2/196_1.png differ diff --git a/public/images/pokemon/icons/variant/2/196_2.png b/public/images/pokemon/icons/variant/2/196_2.png index e67145e663f..5e62645f544 100644 Binary files a/public/images/pokemon/icons/variant/2/196_2.png and b/public/images/pokemon/icons/variant/2/196_2.png differ diff --git a/public/images/pokemon/icons/variant/2/196_3.png b/public/images/pokemon/icons/variant/2/196_3.png index 7a7254f30f5..43e9ced0678 100644 Binary files a/public/images/pokemon/icons/variant/2/196_3.png and b/public/images/pokemon/icons/variant/2/196_3.png differ diff --git a/public/images/pokemon/icons/variant/2/197_2.png b/public/images/pokemon/icons/variant/2/197_2.png index af71d57d4d6..fb0439db910 100644 Binary files a/public/images/pokemon/icons/variant/2/197_2.png and b/public/images/pokemon/icons/variant/2/197_2.png differ diff --git a/public/images/pokemon/icons/variant/2/197_3.png b/public/images/pokemon/icons/variant/2/197_3.png index d411e501061..38d39e9d2f8 100644 Binary files a/public/images/pokemon/icons/variant/2/197_3.png and b/public/images/pokemon/icons/variant/2/197_3.png differ diff --git a/public/images/pokemon/icons/variant/2/198-f_2.png b/public/images/pokemon/icons/variant/2/198-f_2.png index 35e5c2e75ea..1c243145748 100644 Binary files a/public/images/pokemon/icons/variant/2/198-f_2.png and b/public/images/pokemon/icons/variant/2/198-f_2.png differ diff --git a/public/images/pokemon/icons/variant/2/198-f_3.png b/public/images/pokemon/icons/variant/2/198-f_3.png index f2920cd1d0e..ce8c5e8067a 100644 Binary files a/public/images/pokemon/icons/variant/2/198-f_3.png and b/public/images/pokemon/icons/variant/2/198-f_3.png differ diff --git a/public/images/pokemon/icons/variant/2/198_2.png b/public/images/pokemon/icons/variant/2/198_2.png index 35e5c2e75ea..1c243145748 100644 Binary files a/public/images/pokemon/icons/variant/2/198_2.png and b/public/images/pokemon/icons/variant/2/198_2.png differ diff --git a/public/images/pokemon/icons/variant/2/198_3.png b/public/images/pokemon/icons/variant/2/198_3.png index f2920cd1d0e..ce8c5e8067a 100644 Binary files a/public/images/pokemon/icons/variant/2/198_3.png and b/public/images/pokemon/icons/variant/2/198_3.png differ diff --git a/public/images/pokemon/icons/variant/2/199_1.png b/public/images/pokemon/icons/variant/2/199_1.png index d78a8eee824..214960ca65d 100644 Binary files a/public/images/pokemon/icons/variant/2/199_1.png and b/public/images/pokemon/icons/variant/2/199_1.png differ diff --git a/public/images/pokemon/icons/variant/2/199_2.png b/public/images/pokemon/icons/variant/2/199_2.png index 050cb7836e6..a2837abcaf2 100644 Binary files a/public/images/pokemon/icons/variant/2/199_2.png and b/public/images/pokemon/icons/variant/2/199_2.png differ diff --git a/public/images/pokemon/icons/variant/2/199_3.png b/public/images/pokemon/icons/variant/2/199_3.png index f3c63115f78..a33f42b750f 100644 Binary files a/public/images/pokemon/icons/variant/2/199_3.png and b/public/images/pokemon/icons/variant/2/199_3.png differ diff --git a/public/images/pokemon/icons/variant/2/200_1.png b/public/images/pokemon/icons/variant/2/200_1.png index 675b37bf5b3..52ca486dada 100644 Binary files a/public/images/pokemon/icons/variant/2/200_1.png and b/public/images/pokemon/icons/variant/2/200_1.png differ diff --git a/public/images/pokemon/icons/variant/2/200_2.png b/public/images/pokemon/icons/variant/2/200_2.png index 3e269f2ed79..85f4afbe2aa 100644 Binary files a/public/images/pokemon/icons/variant/2/200_2.png and b/public/images/pokemon/icons/variant/2/200_2.png differ diff --git a/public/images/pokemon/icons/variant/2/200_3.png b/public/images/pokemon/icons/variant/2/200_3.png index 82a7ea6c5d9..10a60a69391 100644 Binary files a/public/images/pokemon/icons/variant/2/200_3.png and b/public/images/pokemon/icons/variant/2/200_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-a_2.png b/public/images/pokemon/icons/variant/2/201-a_2.png index f9b542c3a0b..db4501c13a7 100644 Binary files a/public/images/pokemon/icons/variant/2/201-a_2.png and b/public/images/pokemon/icons/variant/2/201-a_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-a_3.png b/public/images/pokemon/icons/variant/2/201-a_3.png index e646353a9cd..19c0250f3be 100644 Binary files a/public/images/pokemon/icons/variant/2/201-a_3.png and b/public/images/pokemon/icons/variant/2/201-a_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-b_2.png b/public/images/pokemon/icons/variant/2/201-b_2.png index 7d1e4610a44..a1ce8c5a35d 100644 Binary files a/public/images/pokemon/icons/variant/2/201-b_2.png and b/public/images/pokemon/icons/variant/2/201-b_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-b_3.png b/public/images/pokemon/icons/variant/2/201-b_3.png index 9678e774a78..1800abda771 100644 Binary files a/public/images/pokemon/icons/variant/2/201-b_3.png and b/public/images/pokemon/icons/variant/2/201-b_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-c_2.png b/public/images/pokemon/icons/variant/2/201-c_2.png index 2bcae681743..509331a6e62 100644 Binary files a/public/images/pokemon/icons/variant/2/201-c_2.png and b/public/images/pokemon/icons/variant/2/201-c_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-c_3.png b/public/images/pokemon/icons/variant/2/201-c_3.png index 708655f4c8f..5b826bce054 100644 Binary files a/public/images/pokemon/icons/variant/2/201-c_3.png and b/public/images/pokemon/icons/variant/2/201-c_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-d_2.png b/public/images/pokemon/icons/variant/2/201-d_2.png index a4e2230b0c2..553d772765e 100644 Binary files a/public/images/pokemon/icons/variant/2/201-d_2.png and b/public/images/pokemon/icons/variant/2/201-d_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-d_3.png b/public/images/pokemon/icons/variant/2/201-d_3.png index 640ef9bc7a3..27fa0907971 100644 Binary files a/public/images/pokemon/icons/variant/2/201-d_3.png and b/public/images/pokemon/icons/variant/2/201-d_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-e_2.png b/public/images/pokemon/icons/variant/2/201-e_2.png index 2a24fd2e8db..cd0bf20a3ab 100644 Binary files a/public/images/pokemon/icons/variant/2/201-e_2.png and b/public/images/pokemon/icons/variant/2/201-e_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-e_3.png b/public/images/pokemon/icons/variant/2/201-e_3.png index d8936a45096..dae6b70136d 100644 Binary files a/public/images/pokemon/icons/variant/2/201-e_3.png and b/public/images/pokemon/icons/variant/2/201-e_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-exclamation_2.png b/public/images/pokemon/icons/variant/2/201-exclamation_2.png index 16eb767d397..7ef5b976397 100644 Binary files a/public/images/pokemon/icons/variant/2/201-exclamation_2.png and b/public/images/pokemon/icons/variant/2/201-exclamation_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-exclamation_3.png b/public/images/pokemon/icons/variant/2/201-exclamation_3.png index 7dbb6a6fffd..29b9a8bdff1 100644 Binary files a/public/images/pokemon/icons/variant/2/201-exclamation_3.png and b/public/images/pokemon/icons/variant/2/201-exclamation_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-f_2.png b/public/images/pokemon/icons/variant/2/201-f_2.png index 94f7b265f7c..6c5192c2481 100644 Binary files a/public/images/pokemon/icons/variant/2/201-f_2.png and b/public/images/pokemon/icons/variant/2/201-f_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-f_3.png b/public/images/pokemon/icons/variant/2/201-f_3.png index 25e4fd338ab..b8f77cbfcd2 100644 Binary files a/public/images/pokemon/icons/variant/2/201-f_3.png and b/public/images/pokemon/icons/variant/2/201-f_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-g_2.png b/public/images/pokemon/icons/variant/2/201-g_2.png index 75b23041917..6623c433668 100644 Binary files a/public/images/pokemon/icons/variant/2/201-g_2.png and b/public/images/pokemon/icons/variant/2/201-g_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-g_3.png b/public/images/pokemon/icons/variant/2/201-g_3.png index b9214575273..3e40db27973 100644 Binary files a/public/images/pokemon/icons/variant/2/201-g_3.png and b/public/images/pokemon/icons/variant/2/201-g_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-h_2.png b/public/images/pokemon/icons/variant/2/201-h_2.png index 61231c1e8b3..d8ff0161cfd 100644 Binary files a/public/images/pokemon/icons/variant/2/201-h_2.png and b/public/images/pokemon/icons/variant/2/201-h_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-h_3.png b/public/images/pokemon/icons/variant/2/201-h_3.png index 9014903f8e0..b31961fe747 100644 Binary files a/public/images/pokemon/icons/variant/2/201-h_3.png and b/public/images/pokemon/icons/variant/2/201-h_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-i_2.png b/public/images/pokemon/icons/variant/2/201-i_2.png index ebc1aa897b7..15c4bde51f7 100644 Binary files a/public/images/pokemon/icons/variant/2/201-i_2.png and b/public/images/pokemon/icons/variant/2/201-i_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-i_3.png b/public/images/pokemon/icons/variant/2/201-i_3.png index 098c95f67e0..1dfbe5be406 100644 Binary files a/public/images/pokemon/icons/variant/2/201-i_3.png and b/public/images/pokemon/icons/variant/2/201-i_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-j_2.png b/public/images/pokemon/icons/variant/2/201-j_2.png index 15c839d2020..f32560fe285 100644 Binary files a/public/images/pokemon/icons/variant/2/201-j_2.png and b/public/images/pokemon/icons/variant/2/201-j_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-j_3.png b/public/images/pokemon/icons/variant/2/201-j_3.png index c738e059a98..0eeae0c6d0c 100644 Binary files a/public/images/pokemon/icons/variant/2/201-j_3.png and b/public/images/pokemon/icons/variant/2/201-j_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-k_2.png b/public/images/pokemon/icons/variant/2/201-k_2.png index ca2ca6789ce..ac5a84f7daf 100644 Binary files a/public/images/pokemon/icons/variant/2/201-k_2.png and b/public/images/pokemon/icons/variant/2/201-k_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-k_3.png b/public/images/pokemon/icons/variant/2/201-k_3.png index f3473b09b58..4360c7fc6eb 100644 Binary files a/public/images/pokemon/icons/variant/2/201-k_3.png and b/public/images/pokemon/icons/variant/2/201-k_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-l_2.png b/public/images/pokemon/icons/variant/2/201-l_2.png index 937f7e69652..51e6320fabc 100644 Binary files a/public/images/pokemon/icons/variant/2/201-l_2.png and b/public/images/pokemon/icons/variant/2/201-l_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-l_3.png b/public/images/pokemon/icons/variant/2/201-l_3.png index 9fb1d5297e7..a92794bd882 100644 Binary files a/public/images/pokemon/icons/variant/2/201-l_3.png and b/public/images/pokemon/icons/variant/2/201-l_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-m_2.png b/public/images/pokemon/icons/variant/2/201-m_2.png index 594755a790b..e043294ba2c 100644 Binary files a/public/images/pokemon/icons/variant/2/201-m_2.png and b/public/images/pokemon/icons/variant/2/201-m_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-m_3.png b/public/images/pokemon/icons/variant/2/201-m_3.png index bd14b8fc222..0327e2e1f8a 100644 Binary files a/public/images/pokemon/icons/variant/2/201-m_3.png and b/public/images/pokemon/icons/variant/2/201-m_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-n_2.png b/public/images/pokemon/icons/variant/2/201-n_2.png index b3c0e428b09..c15eb3c9919 100644 Binary files a/public/images/pokemon/icons/variant/2/201-n_2.png and b/public/images/pokemon/icons/variant/2/201-n_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-n_3.png b/public/images/pokemon/icons/variant/2/201-n_3.png index 00d1ddf07e6..db11fa9cae5 100644 Binary files a/public/images/pokemon/icons/variant/2/201-n_3.png and b/public/images/pokemon/icons/variant/2/201-n_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-o_2.png b/public/images/pokemon/icons/variant/2/201-o_2.png index 0a16f21c01c..58b86efffb1 100644 Binary files a/public/images/pokemon/icons/variant/2/201-o_2.png and b/public/images/pokemon/icons/variant/2/201-o_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-o_3.png b/public/images/pokemon/icons/variant/2/201-o_3.png index e627d16d9d8..73431432f83 100644 Binary files a/public/images/pokemon/icons/variant/2/201-o_3.png and b/public/images/pokemon/icons/variant/2/201-o_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-p_2.png b/public/images/pokemon/icons/variant/2/201-p_2.png index 8ef0e2052b7..da8bba32a76 100644 Binary files a/public/images/pokemon/icons/variant/2/201-p_2.png and b/public/images/pokemon/icons/variant/2/201-p_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-p_3.png b/public/images/pokemon/icons/variant/2/201-p_3.png index e188a8e00f6..bcd71aa5e90 100644 Binary files a/public/images/pokemon/icons/variant/2/201-p_3.png and b/public/images/pokemon/icons/variant/2/201-p_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-q_2.png b/public/images/pokemon/icons/variant/2/201-q_2.png index 4884fbc30f4..fffe683167b 100644 Binary files a/public/images/pokemon/icons/variant/2/201-q_2.png and b/public/images/pokemon/icons/variant/2/201-q_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-q_3.png b/public/images/pokemon/icons/variant/2/201-q_3.png index a0f7134b793..3a36179013b 100644 Binary files a/public/images/pokemon/icons/variant/2/201-q_3.png and b/public/images/pokemon/icons/variant/2/201-q_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-question_2.png b/public/images/pokemon/icons/variant/2/201-question_2.png index 2782effc057..cbd9aae7135 100644 Binary files a/public/images/pokemon/icons/variant/2/201-question_2.png and b/public/images/pokemon/icons/variant/2/201-question_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-question_3.png b/public/images/pokemon/icons/variant/2/201-question_3.png index 3f35a7ce3cc..bdbb76d7136 100644 Binary files a/public/images/pokemon/icons/variant/2/201-question_3.png and b/public/images/pokemon/icons/variant/2/201-question_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-r_2.png b/public/images/pokemon/icons/variant/2/201-r_2.png index 0821b0f19bd..d454b1fc7da 100644 Binary files a/public/images/pokemon/icons/variant/2/201-r_2.png and b/public/images/pokemon/icons/variant/2/201-r_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-r_3.png b/public/images/pokemon/icons/variant/2/201-r_3.png index cdab77e24e8..108f3297ff2 100644 Binary files a/public/images/pokemon/icons/variant/2/201-r_3.png and b/public/images/pokemon/icons/variant/2/201-r_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-s_2.png b/public/images/pokemon/icons/variant/2/201-s_2.png index 3a5be790a83..c0a4fc03fb6 100644 Binary files a/public/images/pokemon/icons/variant/2/201-s_2.png and b/public/images/pokemon/icons/variant/2/201-s_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-s_3.png b/public/images/pokemon/icons/variant/2/201-s_3.png index fc83c030e22..61dfa9061e8 100644 Binary files a/public/images/pokemon/icons/variant/2/201-s_3.png and b/public/images/pokemon/icons/variant/2/201-s_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-t_2.png b/public/images/pokemon/icons/variant/2/201-t_2.png index 1bfe6e73d87..5167b625a13 100644 Binary files a/public/images/pokemon/icons/variant/2/201-t_2.png and b/public/images/pokemon/icons/variant/2/201-t_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-t_3.png b/public/images/pokemon/icons/variant/2/201-t_3.png index 3e1f18c606b..912e4f9c353 100644 Binary files a/public/images/pokemon/icons/variant/2/201-t_3.png and b/public/images/pokemon/icons/variant/2/201-t_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-u_2.png b/public/images/pokemon/icons/variant/2/201-u_2.png index e41b81ed638..c17f2061ae1 100644 Binary files a/public/images/pokemon/icons/variant/2/201-u_2.png and b/public/images/pokemon/icons/variant/2/201-u_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-u_3.png b/public/images/pokemon/icons/variant/2/201-u_3.png index f06f14f65a7..10c6fa203f2 100644 Binary files a/public/images/pokemon/icons/variant/2/201-u_3.png and b/public/images/pokemon/icons/variant/2/201-u_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-v_2.png b/public/images/pokemon/icons/variant/2/201-v_2.png index 39a669cba73..6b198e04e03 100644 Binary files a/public/images/pokemon/icons/variant/2/201-v_2.png and b/public/images/pokemon/icons/variant/2/201-v_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-v_3.png b/public/images/pokemon/icons/variant/2/201-v_3.png index 464ac941e0a..6a88a67c855 100644 Binary files a/public/images/pokemon/icons/variant/2/201-v_3.png and b/public/images/pokemon/icons/variant/2/201-v_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-w_2.png b/public/images/pokemon/icons/variant/2/201-w_2.png index e7bb75f2512..54479f1c53a 100644 Binary files a/public/images/pokemon/icons/variant/2/201-w_2.png and b/public/images/pokemon/icons/variant/2/201-w_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-w_3.png b/public/images/pokemon/icons/variant/2/201-w_3.png index 75b1753711a..b3191ffe30d 100644 Binary files a/public/images/pokemon/icons/variant/2/201-w_3.png and b/public/images/pokemon/icons/variant/2/201-w_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-x_2.png b/public/images/pokemon/icons/variant/2/201-x_2.png index 475bc410be7..029906afbb8 100644 Binary files a/public/images/pokemon/icons/variant/2/201-x_2.png and b/public/images/pokemon/icons/variant/2/201-x_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-x_3.png b/public/images/pokemon/icons/variant/2/201-x_3.png index 8beb09fb8a8..87fd6a8beb3 100644 Binary files a/public/images/pokemon/icons/variant/2/201-x_3.png and b/public/images/pokemon/icons/variant/2/201-x_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-y_2.png b/public/images/pokemon/icons/variant/2/201-y_2.png index 8845260d902..37c388b9f69 100644 Binary files a/public/images/pokemon/icons/variant/2/201-y_2.png and b/public/images/pokemon/icons/variant/2/201-y_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-y_3.png b/public/images/pokemon/icons/variant/2/201-y_3.png index 5e1f691fdc0..fede66fa8fb 100644 Binary files a/public/images/pokemon/icons/variant/2/201-y_3.png and b/public/images/pokemon/icons/variant/2/201-y_3.png differ diff --git a/public/images/pokemon/icons/variant/2/201-z_2.png b/public/images/pokemon/icons/variant/2/201-z_2.png index 52b799a6e43..2d34794b6b6 100644 Binary files a/public/images/pokemon/icons/variant/2/201-z_2.png and b/public/images/pokemon/icons/variant/2/201-z_2.png differ diff --git a/public/images/pokemon/icons/variant/2/201-z_3.png b/public/images/pokemon/icons/variant/2/201-z_3.png index 4df80e92790..3ad5931eb28 100644 Binary files a/public/images/pokemon/icons/variant/2/201-z_3.png and b/public/images/pokemon/icons/variant/2/201-z_3.png differ diff --git a/public/images/pokemon/icons/variant/2/203_2.png b/public/images/pokemon/icons/variant/2/203_2.png index 8ca96e9d14c..231e0fb79a3 100644 Binary files a/public/images/pokemon/icons/variant/2/203_2.png and b/public/images/pokemon/icons/variant/2/203_2.png differ diff --git a/public/images/pokemon/icons/variant/2/203_3.png b/public/images/pokemon/icons/variant/2/203_3.png index 8fcb3c7eb3e..8a28ad75bf8 100644 Binary files a/public/images/pokemon/icons/variant/2/203_3.png and b/public/images/pokemon/icons/variant/2/203_3.png differ diff --git a/public/images/pokemon/icons/variant/2/204_2.png b/public/images/pokemon/icons/variant/2/204_2.png index e36cf0af684..39736242bb8 100644 Binary files a/public/images/pokemon/icons/variant/2/204_2.png and b/public/images/pokemon/icons/variant/2/204_2.png differ diff --git a/public/images/pokemon/icons/variant/2/204_3.png b/public/images/pokemon/icons/variant/2/204_3.png index 5b5c4a70769..e334517bbac 100644 Binary files a/public/images/pokemon/icons/variant/2/204_3.png and b/public/images/pokemon/icons/variant/2/204_3.png differ diff --git a/public/images/pokemon/icons/variant/2/205_2.png b/public/images/pokemon/icons/variant/2/205_2.png index 5bf3cb2c83e..11e95897aa7 100644 Binary files a/public/images/pokemon/icons/variant/2/205_2.png and b/public/images/pokemon/icons/variant/2/205_2.png differ diff --git a/public/images/pokemon/icons/variant/2/205_3.png b/public/images/pokemon/icons/variant/2/205_3.png index 6e8d2e3dc7d..e750ffd41b8 100644 Binary files a/public/images/pokemon/icons/variant/2/205_3.png and b/public/images/pokemon/icons/variant/2/205_3.png differ diff --git a/public/images/pokemon/icons/variant/2/206_2.png b/public/images/pokemon/icons/variant/2/206_2.png index 857a240dfa2..d1c3b4d2f56 100644 Binary files a/public/images/pokemon/icons/variant/2/206_2.png and b/public/images/pokemon/icons/variant/2/206_2.png differ diff --git a/public/images/pokemon/icons/variant/2/206_3.png b/public/images/pokemon/icons/variant/2/206_3.png index 88993f4fee0..7e70dc3730f 100644 Binary files a/public/images/pokemon/icons/variant/2/206_3.png and b/public/images/pokemon/icons/variant/2/206_3.png differ diff --git a/public/images/pokemon/icons/variant/2/207_2.png b/public/images/pokemon/icons/variant/2/207_2.png index c24b731925e..d800919d9f8 100644 Binary files a/public/images/pokemon/icons/variant/2/207_2.png and b/public/images/pokemon/icons/variant/2/207_2.png differ diff --git a/public/images/pokemon/icons/variant/2/207_3.png b/public/images/pokemon/icons/variant/2/207_3.png index 1a5c00992ce..ac94c6f0536 100644 Binary files a/public/images/pokemon/icons/variant/2/207_3.png and b/public/images/pokemon/icons/variant/2/207_3.png differ diff --git a/public/images/pokemon/icons/variant/2/211_2.png b/public/images/pokemon/icons/variant/2/211_2.png index c042910bc17..8e31b595bdc 100644 Binary files a/public/images/pokemon/icons/variant/2/211_2.png and b/public/images/pokemon/icons/variant/2/211_2.png differ diff --git a/public/images/pokemon/icons/variant/2/211_3.png b/public/images/pokemon/icons/variant/2/211_3.png index 3548893b6ec..faee98c9e9a 100644 Binary files a/public/images/pokemon/icons/variant/2/211_3.png and b/public/images/pokemon/icons/variant/2/211_3.png differ diff --git a/public/images/pokemon/icons/variant/2/212-mega_1.png b/public/images/pokemon/icons/variant/2/212-mega_1.png index 53bc17210d1..951133743f6 100644 Binary files a/public/images/pokemon/icons/variant/2/212-mega_1.png and b/public/images/pokemon/icons/variant/2/212-mega_1.png differ diff --git a/public/images/pokemon/icons/variant/2/212-mega_2.png b/public/images/pokemon/icons/variant/2/212-mega_2.png index b541274ce3b..bb84a87b2f9 100644 Binary files a/public/images/pokemon/icons/variant/2/212-mega_2.png and b/public/images/pokemon/icons/variant/2/212-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/2/212-mega_3.png b/public/images/pokemon/icons/variant/2/212-mega_3.png index 43546d2555e..2b3df094906 100644 Binary files a/public/images/pokemon/icons/variant/2/212-mega_3.png and b/public/images/pokemon/icons/variant/2/212-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/2/212_1.png b/public/images/pokemon/icons/variant/2/212_1.png index e465191ec6b..ccf33404f38 100644 Binary files a/public/images/pokemon/icons/variant/2/212_1.png and b/public/images/pokemon/icons/variant/2/212_1.png differ diff --git a/public/images/pokemon/icons/variant/2/212_2.png b/public/images/pokemon/icons/variant/2/212_2.png index fe788d5c996..82e90905642 100644 Binary files a/public/images/pokemon/icons/variant/2/212_2.png and b/public/images/pokemon/icons/variant/2/212_2.png differ diff --git a/public/images/pokemon/icons/variant/2/212_3.png b/public/images/pokemon/icons/variant/2/212_3.png index 3a85f51517d..c63ccdc0fa4 100644 Binary files a/public/images/pokemon/icons/variant/2/212_3.png and b/public/images/pokemon/icons/variant/2/212_3.png differ diff --git a/public/images/pokemon/icons/variant/2/213_2.png b/public/images/pokemon/icons/variant/2/213_2.png index 832fe44e1cd..67cd37b1aa0 100644 Binary files a/public/images/pokemon/icons/variant/2/213_2.png and b/public/images/pokemon/icons/variant/2/213_2.png differ diff --git a/public/images/pokemon/icons/variant/2/213_3.png b/public/images/pokemon/icons/variant/2/213_3.png index 6a0edbc1bff..4031d5eca17 100644 Binary files a/public/images/pokemon/icons/variant/2/213_3.png and b/public/images/pokemon/icons/variant/2/213_3.png differ diff --git a/public/images/pokemon/icons/variant/2/215_2.png b/public/images/pokemon/icons/variant/2/215_2.png index 10c40c309c0..5d2abc17977 100644 Binary files a/public/images/pokemon/icons/variant/2/215_2.png and b/public/images/pokemon/icons/variant/2/215_2.png differ diff --git a/public/images/pokemon/icons/variant/2/215_3.png b/public/images/pokemon/icons/variant/2/215_3.png index 66c6124c207..d75a7f3b4e7 100644 Binary files a/public/images/pokemon/icons/variant/2/215_3.png and b/public/images/pokemon/icons/variant/2/215_3.png differ diff --git a/public/images/pokemon/icons/variant/2/216_1.png b/public/images/pokemon/icons/variant/2/216_1.png index 141771743e7..4f7f1b2624d 100644 Binary files a/public/images/pokemon/icons/variant/2/216_1.png and b/public/images/pokemon/icons/variant/2/216_1.png differ diff --git a/public/images/pokemon/icons/variant/2/216_2.png b/public/images/pokemon/icons/variant/2/216_2.png index 0c834a3e48d..3def88198bf 100644 Binary files a/public/images/pokemon/icons/variant/2/216_2.png and b/public/images/pokemon/icons/variant/2/216_2.png differ diff --git a/public/images/pokemon/icons/variant/2/216_3.png b/public/images/pokemon/icons/variant/2/216_3.png index 1e665cb2ac9..bfa4e5c760b 100644 Binary files a/public/images/pokemon/icons/variant/2/216_3.png and b/public/images/pokemon/icons/variant/2/216_3.png differ diff --git a/public/images/pokemon/icons/variant/2/217_1.png b/public/images/pokemon/icons/variant/2/217_1.png index e78f591eb1e..86e8757a897 100644 Binary files a/public/images/pokemon/icons/variant/2/217_1.png and b/public/images/pokemon/icons/variant/2/217_1.png differ diff --git a/public/images/pokemon/icons/variant/2/217_2.png b/public/images/pokemon/icons/variant/2/217_2.png index df6320e8e27..6ad1192750b 100644 Binary files a/public/images/pokemon/icons/variant/2/217_2.png and b/public/images/pokemon/icons/variant/2/217_2.png differ diff --git a/public/images/pokemon/icons/variant/2/217_3.png b/public/images/pokemon/icons/variant/2/217_3.png index d71bfd65040..6e113d190aa 100644 Binary files a/public/images/pokemon/icons/variant/2/217_3.png and b/public/images/pokemon/icons/variant/2/217_3.png differ diff --git a/public/images/pokemon/icons/variant/2/222_2.png b/public/images/pokemon/icons/variant/2/222_2.png index fdbd3e71ee3..ab9b83fb9d8 100644 Binary files a/public/images/pokemon/icons/variant/2/222_2.png and b/public/images/pokemon/icons/variant/2/222_2.png differ diff --git a/public/images/pokemon/icons/variant/2/222_3.png b/public/images/pokemon/icons/variant/2/222_3.png index eca313aead0..1da3da4209e 100644 Binary files a/public/images/pokemon/icons/variant/2/222_3.png and b/public/images/pokemon/icons/variant/2/222_3.png differ diff --git a/public/images/pokemon/icons/variant/2/226_2.png b/public/images/pokemon/icons/variant/2/226_2.png index 8eea84d7002..085ed14a203 100644 Binary files a/public/images/pokemon/icons/variant/2/226_2.png and b/public/images/pokemon/icons/variant/2/226_2.png differ diff --git a/public/images/pokemon/icons/variant/2/226_3.png b/public/images/pokemon/icons/variant/2/226_3.png index 655ce9e32a7..4bbf81b8e59 100644 Binary files a/public/images/pokemon/icons/variant/2/226_3.png and b/public/images/pokemon/icons/variant/2/226_3.png differ diff --git a/public/images/pokemon/icons/variant/2/227_2.png b/public/images/pokemon/icons/variant/2/227_2.png index 8f75169a731..25aeda4bcca 100644 Binary files a/public/images/pokemon/icons/variant/2/227_2.png and b/public/images/pokemon/icons/variant/2/227_2.png differ diff --git a/public/images/pokemon/icons/variant/2/227_3.png b/public/images/pokemon/icons/variant/2/227_3.png index 941e215da94..baa1f9270a0 100644 Binary files a/public/images/pokemon/icons/variant/2/227_3.png and b/public/images/pokemon/icons/variant/2/227_3.png differ diff --git a/public/images/pokemon/icons/variant/2/228_2.png b/public/images/pokemon/icons/variant/2/228_2.png index 3aeb0afed72..cd23304d326 100644 Binary files a/public/images/pokemon/icons/variant/2/228_2.png and b/public/images/pokemon/icons/variant/2/228_2.png differ diff --git a/public/images/pokemon/icons/variant/2/228_3.png b/public/images/pokemon/icons/variant/2/228_3.png index 955a885c5bd..2660c2b1042 100644 Binary files a/public/images/pokemon/icons/variant/2/228_3.png and b/public/images/pokemon/icons/variant/2/228_3.png differ diff --git a/public/images/pokemon/icons/variant/2/229-mega_2.png b/public/images/pokemon/icons/variant/2/229-mega_2.png index 4adddebdfeb..2182f6bf8d7 100644 Binary files a/public/images/pokemon/icons/variant/2/229-mega_2.png and b/public/images/pokemon/icons/variant/2/229-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/2/229-mega_3.png b/public/images/pokemon/icons/variant/2/229-mega_3.png index 6cc092843e3..1268d7ad78e 100644 Binary files a/public/images/pokemon/icons/variant/2/229-mega_3.png and b/public/images/pokemon/icons/variant/2/229-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/2/229_2.png b/public/images/pokemon/icons/variant/2/229_2.png index e3b8402d724..3d923368ffd 100644 Binary files a/public/images/pokemon/icons/variant/2/229_2.png and b/public/images/pokemon/icons/variant/2/229_2.png differ diff --git a/public/images/pokemon/icons/variant/2/229_3.png b/public/images/pokemon/icons/variant/2/229_3.png index 88781b55c18..328be50160e 100644 Binary files a/public/images/pokemon/icons/variant/2/229_3.png and b/public/images/pokemon/icons/variant/2/229_3.png differ diff --git a/public/images/pokemon/icons/variant/2/230_2.png b/public/images/pokemon/icons/variant/2/230_2.png index 531b9e30568..ac63aacf395 100644 Binary files a/public/images/pokemon/icons/variant/2/230_2.png and b/public/images/pokemon/icons/variant/2/230_2.png differ diff --git a/public/images/pokemon/icons/variant/2/230_3.png b/public/images/pokemon/icons/variant/2/230_3.png index 334483d449e..88b9d718868 100644 Binary files a/public/images/pokemon/icons/variant/2/230_3.png and b/public/images/pokemon/icons/variant/2/230_3.png differ diff --git a/public/images/pokemon/icons/variant/2/231_2.png b/public/images/pokemon/icons/variant/2/231_2.png index 9647697984d..311255b88a4 100644 Binary files a/public/images/pokemon/icons/variant/2/231_2.png and b/public/images/pokemon/icons/variant/2/231_2.png differ diff --git a/public/images/pokemon/icons/variant/2/231_3.png b/public/images/pokemon/icons/variant/2/231_3.png index 6151d0752c0..227658cc1f8 100644 Binary files a/public/images/pokemon/icons/variant/2/231_3.png and b/public/images/pokemon/icons/variant/2/231_3.png differ diff --git a/public/images/pokemon/icons/variant/2/232_2.png b/public/images/pokemon/icons/variant/2/232_2.png index 5e92f389f95..9f450f72618 100644 Binary files a/public/images/pokemon/icons/variant/2/232_2.png and b/public/images/pokemon/icons/variant/2/232_2.png differ diff --git a/public/images/pokemon/icons/variant/2/232_3.png b/public/images/pokemon/icons/variant/2/232_3.png index 644393c86df..8df24d239c1 100644 Binary files a/public/images/pokemon/icons/variant/2/232_3.png and b/public/images/pokemon/icons/variant/2/232_3.png differ diff --git a/public/images/pokemon/icons/variant/2/233_2.png b/public/images/pokemon/icons/variant/2/233_2.png index b36994631dc..1918d5785b7 100644 Binary files a/public/images/pokemon/icons/variant/2/233_2.png and b/public/images/pokemon/icons/variant/2/233_2.png differ diff --git a/public/images/pokemon/icons/variant/2/233_3.png b/public/images/pokemon/icons/variant/2/233_3.png index 09d9ae1fe59..970af324453 100644 Binary files a/public/images/pokemon/icons/variant/2/233_3.png and b/public/images/pokemon/icons/variant/2/233_3.png differ diff --git a/public/images/pokemon/icons/variant/2/235_2.png b/public/images/pokemon/icons/variant/2/235_2.png index c70ef6d7f42..3b69b60135f 100644 Binary files a/public/images/pokemon/icons/variant/2/235_2.png and b/public/images/pokemon/icons/variant/2/235_2.png differ diff --git a/public/images/pokemon/icons/variant/2/235_3.png b/public/images/pokemon/icons/variant/2/235_3.png index ef96a964ebe..0f8cf1cc53d 100644 Binary files a/public/images/pokemon/icons/variant/2/235_3.png and b/public/images/pokemon/icons/variant/2/235_3.png differ diff --git a/public/images/pokemon/icons/variant/2/239_1.png b/public/images/pokemon/icons/variant/2/239_1.png index e4fe2ae4e14..0ab97ac876d 100644 Binary files a/public/images/pokemon/icons/variant/2/239_1.png and b/public/images/pokemon/icons/variant/2/239_1.png differ diff --git a/public/images/pokemon/icons/variant/2/239_2.png b/public/images/pokemon/icons/variant/2/239_2.png index 7a3c759ff62..a3cf03eaa7f 100644 Binary files a/public/images/pokemon/icons/variant/2/239_2.png and b/public/images/pokemon/icons/variant/2/239_2.png differ diff --git a/public/images/pokemon/icons/variant/2/239_3.png b/public/images/pokemon/icons/variant/2/239_3.png index f2d33133fab..b6b4482db2e 100644 Binary files a/public/images/pokemon/icons/variant/2/239_3.png and b/public/images/pokemon/icons/variant/2/239_3.png differ diff --git a/public/images/pokemon/icons/variant/2/240_2.png b/public/images/pokemon/icons/variant/2/240_2.png index 118ad1f4fd2..59e3027c07e 100644 Binary files a/public/images/pokemon/icons/variant/2/240_2.png and b/public/images/pokemon/icons/variant/2/240_2.png differ diff --git a/public/images/pokemon/icons/variant/2/240_3.png b/public/images/pokemon/icons/variant/2/240_3.png index 5d21cedde2d..f210edf0116 100644 Binary files a/public/images/pokemon/icons/variant/2/240_3.png and b/public/images/pokemon/icons/variant/2/240_3.png differ diff --git a/public/images/pokemon/icons/variant/2/242_1.png b/public/images/pokemon/icons/variant/2/242_1.png index cb486161264..334941add9d 100644 Binary files a/public/images/pokemon/icons/variant/2/242_1.png and b/public/images/pokemon/icons/variant/2/242_1.png differ diff --git a/public/images/pokemon/icons/variant/2/242_2.png b/public/images/pokemon/icons/variant/2/242_2.png index 478db55af73..715b51e2c3a 100644 Binary files a/public/images/pokemon/icons/variant/2/242_2.png and b/public/images/pokemon/icons/variant/2/242_2.png differ diff --git a/public/images/pokemon/icons/variant/2/242_3.png b/public/images/pokemon/icons/variant/2/242_3.png index 6a22a1ebbf1..e972dc7481f 100644 Binary files a/public/images/pokemon/icons/variant/2/242_3.png and b/public/images/pokemon/icons/variant/2/242_3.png differ diff --git a/public/images/pokemon/icons/variant/2/243_2.png b/public/images/pokemon/icons/variant/2/243_2.png index 586b706f4e8..986fa30510e 100644 Binary files a/public/images/pokemon/icons/variant/2/243_2.png and b/public/images/pokemon/icons/variant/2/243_2.png differ diff --git a/public/images/pokemon/icons/variant/2/243_3.png b/public/images/pokemon/icons/variant/2/243_3.png index 58aa6b3470c..502e7e4df29 100644 Binary files a/public/images/pokemon/icons/variant/2/243_3.png and b/public/images/pokemon/icons/variant/2/243_3.png differ diff --git a/public/images/pokemon/icons/variant/2/244_2.png b/public/images/pokemon/icons/variant/2/244_2.png index 753fce18f2e..cd7cad6c1a9 100644 Binary files a/public/images/pokemon/icons/variant/2/244_2.png and b/public/images/pokemon/icons/variant/2/244_2.png differ diff --git a/public/images/pokemon/icons/variant/2/244_3.png b/public/images/pokemon/icons/variant/2/244_3.png index 3ce134570d5..d83af29ebdb 100644 Binary files a/public/images/pokemon/icons/variant/2/244_3.png and b/public/images/pokemon/icons/variant/2/244_3.png differ diff --git a/public/images/pokemon/icons/variant/2/245_2.png b/public/images/pokemon/icons/variant/2/245_2.png index 54a5eccc7bb..f9753417bef 100644 Binary files a/public/images/pokemon/icons/variant/2/245_2.png and b/public/images/pokemon/icons/variant/2/245_2.png differ diff --git a/public/images/pokemon/icons/variant/2/245_3.png b/public/images/pokemon/icons/variant/2/245_3.png index 91a195809d7..cca2879dda8 100644 Binary files a/public/images/pokemon/icons/variant/2/245_3.png and b/public/images/pokemon/icons/variant/2/245_3.png differ diff --git a/public/images/pokemon/icons/variant/2/246_2.png b/public/images/pokemon/icons/variant/2/246_2.png index 3faafe913f7..eb6529a937c 100644 Binary files a/public/images/pokemon/icons/variant/2/246_2.png and b/public/images/pokemon/icons/variant/2/246_2.png differ diff --git a/public/images/pokemon/icons/variant/2/246_3.png b/public/images/pokemon/icons/variant/2/246_3.png index 7b2d6933597..8c41ffa40be 100644 Binary files a/public/images/pokemon/icons/variant/2/246_3.png and b/public/images/pokemon/icons/variant/2/246_3.png differ diff --git a/public/images/pokemon/icons/variant/2/247_2.png b/public/images/pokemon/icons/variant/2/247_2.png index 922800d3049..34f77e3514f 100644 Binary files a/public/images/pokemon/icons/variant/2/247_2.png and b/public/images/pokemon/icons/variant/2/247_2.png differ diff --git a/public/images/pokemon/icons/variant/2/247_3.png b/public/images/pokemon/icons/variant/2/247_3.png index 1c86c107867..d216086021b 100644 Binary files a/public/images/pokemon/icons/variant/2/247_3.png and b/public/images/pokemon/icons/variant/2/247_3.png differ diff --git a/public/images/pokemon/icons/variant/2/248-mega_2.png b/public/images/pokemon/icons/variant/2/248-mega_2.png index a6f0e3ec85d..0d68449bffb 100644 Binary files a/public/images/pokemon/icons/variant/2/248-mega_2.png and b/public/images/pokemon/icons/variant/2/248-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/2/248-mega_3.png b/public/images/pokemon/icons/variant/2/248-mega_3.png index b7d682d305d..02aeeb161a7 100644 Binary files a/public/images/pokemon/icons/variant/2/248-mega_3.png and b/public/images/pokemon/icons/variant/2/248-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/2/248_2.png b/public/images/pokemon/icons/variant/2/248_2.png index bd6933472a7..377f29ce9e1 100644 Binary files a/public/images/pokemon/icons/variant/2/248_2.png and b/public/images/pokemon/icons/variant/2/248_2.png differ diff --git a/public/images/pokemon/icons/variant/2/248_3.png b/public/images/pokemon/icons/variant/2/248_3.png index 40078658448..734822428b7 100644 Binary files a/public/images/pokemon/icons/variant/2/248_3.png and b/public/images/pokemon/icons/variant/2/248_3.png differ diff --git a/public/images/pokemon/icons/variant/2/249_2.png b/public/images/pokemon/icons/variant/2/249_2.png index 87b8525c716..f7a7cec78dc 100644 Binary files a/public/images/pokemon/icons/variant/2/249_2.png and b/public/images/pokemon/icons/variant/2/249_2.png differ diff --git a/public/images/pokemon/icons/variant/2/249_3.png b/public/images/pokemon/icons/variant/2/249_3.png index b8142d29758..b5bba25c239 100644 Binary files a/public/images/pokemon/icons/variant/2/249_3.png and b/public/images/pokemon/icons/variant/2/249_3.png differ diff --git a/public/images/pokemon/icons/variant/2/250_2.png b/public/images/pokemon/icons/variant/2/250_2.png index cbdd7d6c17f..e63a9706e70 100644 Binary files a/public/images/pokemon/icons/variant/2/250_2.png and b/public/images/pokemon/icons/variant/2/250_2.png differ diff --git a/public/images/pokemon/icons/variant/2/250_3.png b/public/images/pokemon/icons/variant/2/250_3.png index 160bc12a516..f5d9e50184b 100644 Binary files a/public/images/pokemon/icons/variant/2/250_3.png and b/public/images/pokemon/icons/variant/2/250_3.png differ diff --git a/public/images/pokemon/icons/variant/2/251_2.png b/public/images/pokemon/icons/variant/2/251_2.png index 05ba4721a89..921b3e7ffbf 100644 Binary files a/public/images/pokemon/icons/variant/2/251_2.png and b/public/images/pokemon/icons/variant/2/251_2.png differ diff --git a/public/images/pokemon/icons/variant/2/251_3.png b/public/images/pokemon/icons/variant/2/251_3.png index 05084ac8687..fc446aeeb4e 100644 Binary files a/public/images/pokemon/icons/variant/2/251_3.png and b/public/images/pokemon/icons/variant/2/251_3.png differ diff --git a/public/images/pokemon/icons/variant/3/255-f_2.png b/public/images/pokemon/icons/variant/3/255-f_2.png index adf8c6ea8bc..c8513275842 100644 Binary files a/public/images/pokemon/icons/variant/3/255-f_2.png and b/public/images/pokemon/icons/variant/3/255-f_2.png differ diff --git a/public/images/pokemon/icons/variant/3/255-f_3.png b/public/images/pokemon/icons/variant/3/255-f_3.png index 48fc5610e94..b97fb379461 100644 Binary files a/public/images/pokemon/icons/variant/3/255-f_3.png and b/public/images/pokemon/icons/variant/3/255-f_3.png differ diff --git a/public/images/pokemon/icons/variant/3/255_2.png b/public/images/pokemon/icons/variant/3/255_2.png index b40b8f1607c..be393acfbb7 100644 Binary files a/public/images/pokemon/icons/variant/3/255_2.png and b/public/images/pokemon/icons/variant/3/255_2.png differ diff --git a/public/images/pokemon/icons/variant/3/255_3.png b/public/images/pokemon/icons/variant/3/255_3.png index 2ae8ef351f5..bd9c3cbe3c5 100644 Binary files a/public/images/pokemon/icons/variant/3/255_3.png and b/public/images/pokemon/icons/variant/3/255_3.png differ diff --git a/public/images/pokemon/icons/variant/3/256-f_2.png b/public/images/pokemon/icons/variant/3/256-f_2.png index b372f1ff981..b6820fdf816 100644 Binary files a/public/images/pokemon/icons/variant/3/256-f_2.png and b/public/images/pokemon/icons/variant/3/256-f_2.png differ diff --git a/public/images/pokemon/icons/variant/3/256-f_3.png b/public/images/pokemon/icons/variant/3/256-f_3.png index 5d36370218b..efdfe855e6c 100644 Binary files a/public/images/pokemon/icons/variant/3/256-f_3.png and b/public/images/pokemon/icons/variant/3/256-f_3.png differ diff --git a/public/images/pokemon/icons/variant/3/256_2.png b/public/images/pokemon/icons/variant/3/256_2.png index 43919a2db06..5970317e131 100644 Binary files a/public/images/pokemon/icons/variant/3/256_2.png and b/public/images/pokemon/icons/variant/3/256_2.png differ diff --git a/public/images/pokemon/icons/variant/3/256_3.png b/public/images/pokemon/icons/variant/3/256_3.png index bb1cbfe0809..a859e5b5664 100644 Binary files a/public/images/pokemon/icons/variant/3/256_3.png and b/public/images/pokemon/icons/variant/3/256_3.png differ diff --git a/public/images/pokemon/icons/variant/3/257-f_2.png b/public/images/pokemon/icons/variant/3/257-f_2.png index 05dec9629ed..d1ade64bf84 100644 Binary files a/public/images/pokemon/icons/variant/3/257-f_2.png and b/public/images/pokemon/icons/variant/3/257-f_2.png differ diff --git a/public/images/pokemon/icons/variant/3/257-f_3.png b/public/images/pokemon/icons/variant/3/257-f_3.png index df9584837b0..a9834857ce2 100644 Binary files a/public/images/pokemon/icons/variant/3/257-f_3.png and b/public/images/pokemon/icons/variant/3/257-f_3.png differ diff --git a/public/images/pokemon/icons/variant/3/257-mega_2.png b/public/images/pokemon/icons/variant/3/257-mega_2.png index e04d8d8e1fe..3599318c51e 100644 Binary files a/public/images/pokemon/icons/variant/3/257-mega_2.png and b/public/images/pokemon/icons/variant/3/257-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/257-mega_3.png b/public/images/pokemon/icons/variant/3/257-mega_3.png index f32e684a503..3421b48ab19 100644 Binary files a/public/images/pokemon/icons/variant/3/257-mega_3.png and b/public/images/pokemon/icons/variant/3/257-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/257_2.png b/public/images/pokemon/icons/variant/3/257_2.png index 305fab85238..e9e718225bb 100644 Binary files a/public/images/pokemon/icons/variant/3/257_2.png and b/public/images/pokemon/icons/variant/3/257_2.png differ diff --git a/public/images/pokemon/icons/variant/3/257_3.png b/public/images/pokemon/icons/variant/3/257_3.png index cccaab5db12..801cd0b87d0 100644 Binary files a/public/images/pokemon/icons/variant/3/257_3.png and b/public/images/pokemon/icons/variant/3/257_3.png differ diff --git a/public/images/pokemon/icons/variant/3/261_2.png b/public/images/pokemon/icons/variant/3/261_2.png index 31d46738062..8da413e0651 100644 Binary files a/public/images/pokemon/icons/variant/3/261_2.png and b/public/images/pokemon/icons/variant/3/261_2.png differ diff --git a/public/images/pokemon/icons/variant/3/261_3.png b/public/images/pokemon/icons/variant/3/261_3.png index a00afc04114..5d9693963c3 100644 Binary files a/public/images/pokemon/icons/variant/3/261_3.png and b/public/images/pokemon/icons/variant/3/261_3.png differ diff --git a/public/images/pokemon/icons/variant/3/262_2.png b/public/images/pokemon/icons/variant/3/262_2.png index 0490ad8b552..9249a6aa6b1 100644 Binary files a/public/images/pokemon/icons/variant/3/262_2.png and b/public/images/pokemon/icons/variant/3/262_2.png differ diff --git a/public/images/pokemon/icons/variant/3/262_3.png b/public/images/pokemon/icons/variant/3/262_3.png index eec06b91c5c..531887747ef 100644 Binary files a/public/images/pokemon/icons/variant/3/262_3.png and b/public/images/pokemon/icons/variant/3/262_3.png differ diff --git a/public/images/pokemon/icons/variant/3/263_2.png b/public/images/pokemon/icons/variant/3/263_2.png index b638deec648..b8ba7070e58 100644 Binary files a/public/images/pokemon/icons/variant/3/263_2.png and b/public/images/pokemon/icons/variant/3/263_2.png differ diff --git a/public/images/pokemon/icons/variant/3/263_3.png b/public/images/pokemon/icons/variant/3/263_3.png index 5c5f447c79a..afa3eb6295e 100644 Binary files a/public/images/pokemon/icons/variant/3/263_3.png and b/public/images/pokemon/icons/variant/3/263_3.png differ diff --git a/public/images/pokemon/icons/variant/3/264_2.png b/public/images/pokemon/icons/variant/3/264_2.png index 42f87b76058..82a17c77e7c 100644 Binary files a/public/images/pokemon/icons/variant/3/264_2.png and b/public/images/pokemon/icons/variant/3/264_2.png differ diff --git a/public/images/pokemon/icons/variant/3/264_3.png b/public/images/pokemon/icons/variant/3/264_3.png index 88d700d9a9e..1cc4094069a 100644 Binary files a/public/images/pokemon/icons/variant/3/264_3.png and b/public/images/pokemon/icons/variant/3/264_3.png differ diff --git a/public/images/pokemon/icons/variant/3/276_2.png b/public/images/pokemon/icons/variant/3/276_2.png index d7e8a3aa9ca..87045ee0e71 100644 Binary files a/public/images/pokemon/icons/variant/3/276_2.png and b/public/images/pokemon/icons/variant/3/276_2.png differ diff --git a/public/images/pokemon/icons/variant/3/276_3.png b/public/images/pokemon/icons/variant/3/276_3.png index b9cfa276eb2..62dda9f6ff0 100644 Binary files a/public/images/pokemon/icons/variant/3/276_3.png and b/public/images/pokemon/icons/variant/3/276_3.png differ diff --git a/public/images/pokemon/icons/variant/3/277_2.png b/public/images/pokemon/icons/variant/3/277_2.png index f4d58f259c3..fb0ce3bc0d2 100644 Binary files a/public/images/pokemon/icons/variant/3/277_2.png and b/public/images/pokemon/icons/variant/3/277_2.png differ diff --git a/public/images/pokemon/icons/variant/3/277_3.png b/public/images/pokemon/icons/variant/3/277_3.png index 69ccce9069b..4b4f12088f3 100644 Binary files a/public/images/pokemon/icons/variant/3/277_3.png and b/public/images/pokemon/icons/variant/3/277_3.png differ diff --git a/public/images/pokemon/icons/variant/3/278_1.png b/public/images/pokemon/icons/variant/3/278_1.png index 4f8f65eabf2..7c4412ceebb 100644 Binary files a/public/images/pokemon/icons/variant/3/278_1.png and b/public/images/pokemon/icons/variant/3/278_1.png differ diff --git a/public/images/pokemon/icons/variant/3/278_2.png b/public/images/pokemon/icons/variant/3/278_2.png index 4791920bca5..c700093d035 100644 Binary files a/public/images/pokemon/icons/variant/3/278_2.png and b/public/images/pokemon/icons/variant/3/278_2.png differ diff --git a/public/images/pokemon/icons/variant/3/278_3.png b/public/images/pokemon/icons/variant/3/278_3.png index 95555099b8d..021c2e56c7a 100644 Binary files a/public/images/pokemon/icons/variant/3/278_3.png and b/public/images/pokemon/icons/variant/3/278_3.png differ diff --git a/public/images/pokemon/icons/variant/3/279_1.png b/public/images/pokemon/icons/variant/3/279_1.png index 661c6e102c7..809c682ea6b 100644 Binary files a/public/images/pokemon/icons/variant/3/279_1.png and b/public/images/pokemon/icons/variant/3/279_1.png differ diff --git a/public/images/pokemon/icons/variant/3/279_2.png b/public/images/pokemon/icons/variant/3/279_2.png index 007f58ba39f..3b05816b47b 100644 Binary files a/public/images/pokemon/icons/variant/3/279_2.png and b/public/images/pokemon/icons/variant/3/279_2.png differ diff --git a/public/images/pokemon/icons/variant/3/279_3.png b/public/images/pokemon/icons/variant/3/279_3.png index 57c4e388fcc..fcec969389f 100644 Binary files a/public/images/pokemon/icons/variant/3/279_3.png and b/public/images/pokemon/icons/variant/3/279_3.png differ diff --git a/public/images/pokemon/icons/variant/3/280_2.png b/public/images/pokemon/icons/variant/3/280_2.png index 81324dd8389..b9f713fa2a2 100644 Binary files a/public/images/pokemon/icons/variant/3/280_2.png and b/public/images/pokemon/icons/variant/3/280_2.png differ diff --git a/public/images/pokemon/icons/variant/3/280_3.png b/public/images/pokemon/icons/variant/3/280_3.png index 3a21eba2918..b968957d534 100644 Binary files a/public/images/pokemon/icons/variant/3/280_3.png and b/public/images/pokemon/icons/variant/3/280_3.png differ diff --git a/public/images/pokemon/icons/variant/3/281_2.png b/public/images/pokemon/icons/variant/3/281_2.png index 701fdbe7c39..c6eaeada8a4 100644 Binary files a/public/images/pokemon/icons/variant/3/281_2.png and b/public/images/pokemon/icons/variant/3/281_2.png differ diff --git a/public/images/pokemon/icons/variant/3/281_3.png b/public/images/pokemon/icons/variant/3/281_3.png index 1a5164b2a1d..374c37189ba 100644 Binary files a/public/images/pokemon/icons/variant/3/281_3.png and b/public/images/pokemon/icons/variant/3/281_3.png differ diff --git a/public/images/pokemon/icons/variant/3/282-mega_2.png b/public/images/pokemon/icons/variant/3/282-mega_2.png index c5900e79f76..09dbbd6e221 100644 Binary files a/public/images/pokemon/icons/variant/3/282-mega_2.png and b/public/images/pokemon/icons/variant/3/282-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/282-mega_3.png b/public/images/pokemon/icons/variant/3/282-mega_3.png index 315901a33b4..13a85593da2 100644 Binary files a/public/images/pokemon/icons/variant/3/282-mega_3.png and b/public/images/pokemon/icons/variant/3/282-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/282_2.png b/public/images/pokemon/icons/variant/3/282_2.png index 0b2ebd9603a..d9f4671bcbf 100644 Binary files a/public/images/pokemon/icons/variant/3/282_2.png and b/public/images/pokemon/icons/variant/3/282_2.png differ diff --git a/public/images/pokemon/icons/variant/3/282_3.png b/public/images/pokemon/icons/variant/3/282_3.png index 5a1c2e9110e..9d0647dba7e 100644 Binary files a/public/images/pokemon/icons/variant/3/282_3.png and b/public/images/pokemon/icons/variant/3/282_3.png differ diff --git a/public/images/pokemon/icons/variant/3/285_2.png b/public/images/pokemon/icons/variant/3/285_2.png index b05cc520bbe..40e4f858e6a 100644 Binary files a/public/images/pokemon/icons/variant/3/285_2.png and b/public/images/pokemon/icons/variant/3/285_2.png differ diff --git a/public/images/pokemon/icons/variant/3/285_3.png b/public/images/pokemon/icons/variant/3/285_3.png index 890a902003f..93735dd5178 100644 Binary files a/public/images/pokemon/icons/variant/3/285_3.png and b/public/images/pokemon/icons/variant/3/285_3.png differ diff --git a/public/images/pokemon/icons/variant/3/286_2.png b/public/images/pokemon/icons/variant/3/286_2.png index a0b4f9ba99d..6847910f7f8 100644 Binary files a/public/images/pokemon/icons/variant/3/286_2.png and b/public/images/pokemon/icons/variant/3/286_2.png differ diff --git a/public/images/pokemon/icons/variant/3/286_3.png b/public/images/pokemon/icons/variant/3/286_3.png index 96d11a91d18..5fa392f6bda 100644 Binary files a/public/images/pokemon/icons/variant/3/286_3.png and b/public/images/pokemon/icons/variant/3/286_3.png differ diff --git a/public/images/pokemon/icons/variant/3/290_1.png b/public/images/pokemon/icons/variant/3/290_1.png index 579e4b838ed..f0b247d48f7 100644 Binary files a/public/images/pokemon/icons/variant/3/290_1.png and b/public/images/pokemon/icons/variant/3/290_1.png differ diff --git a/public/images/pokemon/icons/variant/3/290_2.png b/public/images/pokemon/icons/variant/3/290_2.png index 659f57722eb..eb6ba459420 100644 Binary files a/public/images/pokemon/icons/variant/3/290_2.png and b/public/images/pokemon/icons/variant/3/290_2.png differ diff --git a/public/images/pokemon/icons/variant/3/290_3.png b/public/images/pokemon/icons/variant/3/290_3.png index 962386bea49..57c32ded6ad 100644 Binary files a/public/images/pokemon/icons/variant/3/290_3.png and b/public/images/pokemon/icons/variant/3/290_3.png differ diff --git a/public/images/pokemon/icons/variant/3/291_1.png b/public/images/pokemon/icons/variant/3/291_1.png index ab56b0f6763..1d178e9041b 100644 Binary files a/public/images/pokemon/icons/variant/3/291_1.png and b/public/images/pokemon/icons/variant/3/291_1.png differ diff --git a/public/images/pokemon/icons/variant/3/291_2.png b/public/images/pokemon/icons/variant/3/291_2.png index 55706b1ad44..082e632315a 100644 Binary files a/public/images/pokemon/icons/variant/3/291_2.png and b/public/images/pokemon/icons/variant/3/291_2.png differ diff --git a/public/images/pokemon/icons/variant/3/291_3.png b/public/images/pokemon/icons/variant/3/291_3.png index 4e4a5aa421b..2b0eed4812f 100644 Binary files a/public/images/pokemon/icons/variant/3/291_3.png and b/public/images/pokemon/icons/variant/3/291_3.png differ diff --git a/public/images/pokemon/icons/variant/3/292_1.png b/public/images/pokemon/icons/variant/3/292_1.png index b03645b1550..c1a2a387fe2 100644 Binary files a/public/images/pokemon/icons/variant/3/292_1.png and b/public/images/pokemon/icons/variant/3/292_1.png differ diff --git a/public/images/pokemon/icons/variant/3/292_2.png b/public/images/pokemon/icons/variant/3/292_2.png index 2b3a097c067..4ce5ebd67aa 100644 Binary files a/public/images/pokemon/icons/variant/3/292_2.png and b/public/images/pokemon/icons/variant/3/292_2.png differ diff --git a/public/images/pokemon/icons/variant/3/292_3.png b/public/images/pokemon/icons/variant/3/292_3.png index d8cd945026a..dffa2888e66 100644 Binary files a/public/images/pokemon/icons/variant/3/292_3.png and b/public/images/pokemon/icons/variant/3/292_3.png differ diff --git a/public/images/pokemon/icons/variant/3/298_2.png b/public/images/pokemon/icons/variant/3/298_2.png index 2c959be835a..a8538a40f60 100644 Binary files a/public/images/pokemon/icons/variant/3/298_2.png and b/public/images/pokemon/icons/variant/3/298_2.png differ diff --git a/public/images/pokemon/icons/variant/3/298_3.png b/public/images/pokemon/icons/variant/3/298_3.png index 559bc8434cd..65ea97d6828 100644 Binary files a/public/images/pokemon/icons/variant/3/298_3.png and b/public/images/pokemon/icons/variant/3/298_3.png differ diff --git a/public/images/pokemon/icons/variant/3/299_2.png b/public/images/pokemon/icons/variant/3/299_2.png index fa674c3afda..2b54c9a5ccc 100644 Binary files a/public/images/pokemon/icons/variant/3/299_2.png and b/public/images/pokemon/icons/variant/3/299_2.png differ diff --git a/public/images/pokemon/icons/variant/3/299_3.png b/public/images/pokemon/icons/variant/3/299_3.png index 68d8a893316..65e20f7c501 100644 Binary files a/public/images/pokemon/icons/variant/3/299_3.png and b/public/images/pokemon/icons/variant/3/299_3.png differ diff --git a/public/images/pokemon/icons/variant/3/300_1.png b/public/images/pokemon/icons/variant/3/300_1.png index 3e3665320b0..43938b4735f 100644 Binary files a/public/images/pokemon/icons/variant/3/300_1.png and b/public/images/pokemon/icons/variant/3/300_1.png differ diff --git a/public/images/pokemon/icons/variant/3/300_2.png b/public/images/pokemon/icons/variant/3/300_2.png index a436bc177c3..5185dfb6277 100644 Binary files a/public/images/pokemon/icons/variant/3/300_2.png and b/public/images/pokemon/icons/variant/3/300_2.png differ diff --git a/public/images/pokemon/icons/variant/3/300_3.png b/public/images/pokemon/icons/variant/3/300_3.png index ec4565df0d5..4dab9f98fde 100644 Binary files a/public/images/pokemon/icons/variant/3/300_3.png and b/public/images/pokemon/icons/variant/3/300_3.png differ diff --git a/public/images/pokemon/icons/variant/3/301_1.png b/public/images/pokemon/icons/variant/3/301_1.png index a32df44a3cd..82d737c1b35 100644 Binary files a/public/images/pokemon/icons/variant/3/301_1.png and b/public/images/pokemon/icons/variant/3/301_1.png differ diff --git a/public/images/pokemon/icons/variant/3/301_2.png b/public/images/pokemon/icons/variant/3/301_2.png index 38aa20f736e..c629f377bf4 100644 Binary files a/public/images/pokemon/icons/variant/3/301_2.png and b/public/images/pokemon/icons/variant/3/301_2.png differ diff --git a/public/images/pokemon/icons/variant/3/301_3.png b/public/images/pokemon/icons/variant/3/301_3.png index 6ca7830a437..1a70cc49ead 100644 Binary files a/public/images/pokemon/icons/variant/3/301_3.png and b/public/images/pokemon/icons/variant/3/301_3.png differ diff --git a/public/images/pokemon/icons/variant/3/302-mega_2.png b/public/images/pokemon/icons/variant/3/302-mega_2.png index 48b5992ab66..865ad63b0b3 100644 Binary files a/public/images/pokemon/icons/variant/3/302-mega_2.png and b/public/images/pokemon/icons/variant/3/302-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/302-mega_3.png b/public/images/pokemon/icons/variant/3/302-mega_3.png index 74d67dc22a3..289e4926c0c 100644 Binary files a/public/images/pokemon/icons/variant/3/302-mega_3.png and b/public/images/pokemon/icons/variant/3/302-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/302_2.png b/public/images/pokemon/icons/variant/3/302_2.png index d0d8e8d6ee8..dcadbd8f504 100644 Binary files a/public/images/pokemon/icons/variant/3/302_2.png and b/public/images/pokemon/icons/variant/3/302_2.png differ diff --git a/public/images/pokemon/icons/variant/3/302_3.png b/public/images/pokemon/icons/variant/3/302_3.png index ee741749902..73821a1d273 100644 Binary files a/public/images/pokemon/icons/variant/3/302_3.png and b/public/images/pokemon/icons/variant/3/302_3.png differ diff --git a/public/images/pokemon/icons/variant/3/303-mega_1.png b/public/images/pokemon/icons/variant/3/303-mega_1.png index 0290f7c2662..f58c73415bf 100644 Binary files a/public/images/pokemon/icons/variant/3/303-mega_1.png and b/public/images/pokemon/icons/variant/3/303-mega_1.png differ diff --git a/public/images/pokemon/icons/variant/3/303-mega_2.png b/public/images/pokemon/icons/variant/3/303-mega_2.png index f0132c2e149..61a6a0c61e5 100644 Binary files a/public/images/pokemon/icons/variant/3/303-mega_2.png and b/public/images/pokemon/icons/variant/3/303-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/303-mega_3.png b/public/images/pokemon/icons/variant/3/303-mega_3.png index 4e81c96c1b8..ba8d48b0447 100644 Binary files a/public/images/pokemon/icons/variant/3/303-mega_3.png and b/public/images/pokemon/icons/variant/3/303-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/303_1.png b/public/images/pokemon/icons/variant/3/303_1.png index 813cd91b44e..d3d4f1e5db0 100644 Binary files a/public/images/pokemon/icons/variant/3/303_1.png and b/public/images/pokemon/icons/variant/3/303_1.png differ diff --git a/public/images/pokemon/icons/variant/3/303_2.png b/public/images/pokemon/icons/variant/3/303_2.png index 394d3676be4..a50039ca0ca 100644 Binary files a/public/images/pokemon/icons/variant/3/303_2.png and b/public/images/pokemon/icons/variant/3/303_2.png differ diff --git a/public/images/pokemon/icons/variant/3/303_3.png b/public/images/pokemon/icons/variant/3/303_3.png index 7f862199926..e07ebf51452 100644 Binary files a/public/images/pokemon/icons/variant/3/303_3.png and b/public/images/pokemon/icons/variant/3/303_3.png differ diff --git a/public/images/pokemon/icons/variant/3/304_1.png b/public/images/pokemon/icons/variant/3/304_1.png index a32ec0a4a33..9da1ed2685d 100644 Binary files a/public/images/pokemon/icons/variant/3/304_1.png and b/public/images/pokemon/icons/variant/3/304_1.png differ diff --git a/public/images/pokemon/icons/variant/3/304_2.png b/public/images/pokemon/icons/variant/3/304_2.png index c670ee0ee21..eadcd637d8e 100644 Binary files a/public/images/pokemon/icons/variant/3/304_2.png and b/public/images/pokemon/icons/variant/3/304_2.png differ diff --git a/public/images/pokemon/icons/variant/3/304_3.png b/public/images/pokemon/icons/variant/3/304_3.png index e83399a5ff7..af397e85ebe 100644 Binary files a/public/images/pokemon/icons/variant/3/304_3.png and b/public/images/pokemon/icons/variant/3/304_3.png differ diff --git a/public/images/pokemon/icons/variant/3/305_1.png b/public/images/pokemon/icons/variant/3/305_1.png index c98222a0bdd..23f84c4d29c 100644 Binary files a/public/images/pokemon/icons/variant/3/305_1.png and b/public/images/pokemon/icons/variant/3/305_1.png differ diff --git a/public/images/pokemon/icons/variant/3/305_2.png b/public/images/pokemon/icons/variant/3/305_2.png index d1db8f49dcc..8824c54ba8d 100644 Binary files a/public/images/pokemon/icons/variant/3/305_2.png and b/public/images/pokemon/icons/variant/3/305_2.png differ diff --git a/public/images/pokemon/icons/variant/3/305_3.png b/public/images/pokemon/icons/variant/3/305_3.png index 404d304f493..9601fbf6519 100644 Binary files a/public/images/pokemon/icons/variant/3/305_3.png and b/public/images/pokemon/icons/variant/3/305_3.png differ diff --git a/public/images/pokemon/icons/variant/3/306-mega_1.png b/public/images/pokemon/icons/variant/3/306-mega_1.png index c2a5bde0654..6f57c1ec9d3 100644 Binary files a/public/images/pokemon/icons/variant/3/306-mega_1.png and b/public/images/pokemon/icons/variant/3/306-mega_1.png differ diff --git a/public/images/pokemon/icons/variant/3/306-mega_2.png b/public/images/pokemon/icons/variant/3/306-mega_2.png index 87eb1a366b7..1bacae79aa7 100644 Binary files a/public/images/pokemon/icons/variant/3/306-mega_2.png and b/public/images/pokemon/icons/variant/3/306-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/306-mega_3.png b/public/images/pokemon/icons/variant/3/306-mega_3.png index 5a87dae0a45..e543534056b 100644 Binary files a/public/images/pokemon/icons/variant/3/306-mega_3.png and b/public/images/pokemon/icons/variant/3/306-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/306_1.png b/public/images/pokemon/icons/variant/3/306_1.png index dc4cdd8fb54..63f05ee0835 100644 Binary files a/public/images/pokemon/icons/variant/3/306_1.png and b/public/images/pokemon/icons/variant/3/306_1.png differ diff --git a/public/images/pokemon/icons/variant/3/306_2.png b/public/images/pokemon/icons/variant/3/306_2.png index 4d5ed76f0c5..eb3dce06197 100644 Binary files a/public/images/pokemon/icons/variant/3/306_2.png and b/public/images/pokemon/icons/variant/3/306_2.png differ diff --git a/public/images/pokemon/icons/variant/3/306_3.png b/public/images/pokemon/icons/variant/3/306_3.png index de5e70eb4e6..6877139f254 100644 Binary files a/public/images/pokemon/icons/variant/3/306_3.png and b/public/images/pokemon/icons/variant/3/306_3.png differ diff --git a/public/images/pokemon/icons/variant/3/307_2.png b/public/images/pokemon/icons/variant/3/307_2.png index 13af3fbcf5e..48248ddde76 100644 Binary files a/public/images/pokemon/icons/variant/3/307_2.png and b/public/images/pokemon/icons/variant/3/307_2.png differ diff --git a/public/images/pokemon/icons/variant/3/307_3.png b/public/images/pokemon/icons/variant/3/307_3.png index 1ad23e2038d..aabb749ad88 100644 Binary files a/public/images/pokemon/icons/variant/3/307_3.png and b/public/images/pokemon/icons/variant/3/307_3.png differ diff --git a/public/images/pokemon/icons/variant/3/308-mega_2.png b/public/images/pokemon/icons/variant/3/308-mega_2.png index 8a5213092f9..ebaf61cb8a9 100644 Binary files a/public/images/pokemon/icons/variant/3/308-mega_2.png and b/public/images/pokemon/icons/variant/3/308-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/308-mega_3.png b/public/images/pokemon/icons/variant/3/308-mega_3.png index 7e3d7ddc258..2f2095611b4 100644 Binary files a/public/images/pokemon/icons/variant/3/308-mega_3.png and b/public/images/pokemon/icons/variant/3/308-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/308_2.png b/public/images/pokemon/icons/variant/3/308_2.png index d72c502ea22..36cfde18fc8 100644 Binary files a/public/images/pokemon/icons/variant/3/308_2.png and b/public/images/pokemon/icons/variant/3/308_2.png differ diff --git a/public/images/pokemon/icons/variant/3/308_3.png b/public/images/pokemon/icons/variant/3/308_3.png index 135e7bc80a0..ed12cfa3c8f 100644 Binary files a/public/images/pokemon/icons/variant/3/308_3.png and b/public/images/pokemon/icons/variant/3/308_3.png differ diff --git a/public/images/pokemon/icons/variant/3/309_2.png b/public/images/pokemon/icons/variant/3/309_2.png index 96321bed7b4..259db49a04b 100644 Binary files a/public/images/pokemon/icons/variant/3/309_2.png and b/public/images/pokemon/icons/variant/3/309_2.png differ diff --git a/public/images/pokemon/icons/variant/3/309_3.png b/public/images/pokemon/icons/variant/3/309_3.png index a186f8caf08..a5eecde2042 100644 Binary files a/public/images/pokemon/icons/variant/3/309_3.png and b/public/images/pokemon/icons/variant/3/309_3.png differ diff --git a/public/images/pokemon/icons/variant/3/310-mega_2.png b/public/images/pokemon/icons/variant/3/310-mega_2.png index 0d5e9c9d949..dc914fd5ba5 100644 Binary files a/public/images/pokemon/icons/variant/3/310-mega_2.png and b/public/images/pokemon/icons/variant/3/310-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/310-mega_3.png b/public/images/pokemon/icons/variant/3/310-mega_3.png index 0bf7151a167..c1fee3831e1 100644 Binary files a/public/images/pokemon/icons/variant/3/310-mega_3.png and b/public/images/pokemon/icons/variant/3/310-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/310_2.png b/public/images/pokemon/icons/variant/3/310_2.png index 9740c5d90bd..66c944f634f 100644 Binary files a/public/images/pokemon/icons/variant/3/310_2.png and b/public/images/pokemon/icons/variant/3/310_2.png differ diff --git a/public/images/pokemon/icons/variant/3/310_3.png b/public/images/pokemon/icons/variant/3/310_3.png index d6c98bd3345..7174ea1646f 100644 Binary files a/public/images/pokemon/icons/variant/3/310_3.png and b/public/images/pokemon/icons/variant/3/310_3.png differ diff --git a/public/images/pokemon/icons/variant/3/311_1.png b/public/images/pokemon/icons/variant/3/311_1.png index cc452edb63e..150e4fd9ef4 100644 Binary files a/public/images/pokemon/icons/variant/3/311_1.png and b/public/images/pokemon/icons/variant/3/311_1.png differ diff --git a/public/images/pokemon/icons/variant/3/311_2.png b/public/images/pokemon/icons/variant/3/311_2.png index 576dc178357..722e5bef133 100644 Binary files a/public/images/pokemon/icons/variant/3/311_2.png and b/public/images/pokemon/icons/variant/3/311_2.png differ diff --git a/public/images/pokemon/icons/variant/3/311_3.png b/public/images/pokemon/icons/variant/3/311_3.png index 211f761c5f9..a5ed1ec8d45 100644 Binary files a/public/images/pokemon/icons/variant/3/311_3.png and b/public/images/pokemon/icons/variant/3/311_3.png differ diff --git a/public/images/pokemon/icons/variant/3/312_2.png b/public/images/pokemon/icons/variant/3/312_2.png index 140653e6303..a60b618dd3d 100644 Binary files a/public/images/pokemon/icons/variant/3/312_2.png and b/public/images/pokemon/icons/variant/3/312_2.png differ diff --git a/public/images/pokemon/icons/variant/3/312_3.png b/public/images/pokemon/icons/variant/3/312_3.png index edf091157b5..9730a026f88 100644 Binary files a/public/images/pokemon/icons/variant/3/312_3.png and b/public/images/pokemon/icons/variant/3/312_3.png differ diff --git a/public/images/pokemon/icons/variant/3/313_2.png b/public/images/pokemon/icons/variant/3/313_2.png index 501bb3f859b..832c74d3138 100644 Binary files a/public/images/pokemon/icons/variant/3/313_2.png and b/public/images/pokemon/icons/variant/3/313_2.png differ diff --git a/public/images/pokemon/icons/variant/3/313_3.png b/public/images/pokemon/icons/variant/3/313_3.png index 89c81375da8..f33e73f09e3 100644 Binary files a/public/images/pokemon/icons/variant/3/313_3.png and b/public/images/pokemon/icons/variant/3/313_3.png differ diff --git a/public/images/pokemon/icons/variant/3/314_2.png b/public/images/pokemon/icons/variant/3/314_2.png index 0242553f41a..fcbc69a9458 100644 Binary files a/public/images/pokemon/icons/variant/3/314_2.png and b/public/images/pokemon/icons/variant/3/314_2.png differ diff --git a/public/images/pokemon/icons/variant/3/314_3.png b/public/images/pokemon/icons/variant/3/314_3.png index 716ffccd3f2..98b19783283 100644 Binary files a/public/images/pokemon/icons/variant/3/314_3.png and b/public/images/pokemon/icons/variant/3/314_3.png differ diff --git a/public/images/pokemon/icons/variant/3/315_2.png b/public/images/pokemon/icons/variant/3/315_2.png index 31b5c5ce50c..45a97caa17c 100644 Binary files a/public/images/pokemon/icons/variant/3/315_2.png and b/public/images/pokemon/icons/variant/3/315_2.png differ diff --git a/public/images/pokemon/icons/variant/3/315_3.png b/public/images/pokemon/icons/variant/3/315_3.png index fe3fd14671f..ebd32178a96 100644 Binary files a/public/images/pokemon/icons/variant/3/315_3.png and b/public/images/pokemon/icons/variant/3/315_3.png differ diff --git a/public/images/pokemon/icons/variant/3/320_2.png b/public/images/pokemon/icons/variant/3/320_2.png index 3cc82654b85..dbd584dee8b 100644 Binary files a/public/images/pokemon/icons/variant/3/320_2.png and b/public/images/pokemon/icons/variant/3/320_2.png differ diff --git a/public/images/pokemon/icons/variant/3/320_3.png b/public/images/pokemon/icons/variant/3/320_3.png index 967dbe095fe..7aff30b9920 100644 Binary files a/public/images/pokemon/icons/variant/3/320_3.png and b/public/images/pokemon/icons/variant/3/320_3.png differ diff --git a/public/images/pokemon/icons/variant/3/321_2.png b/public/images/pokemon/icons/variant/3/321_2.png index fc49d4dc014..7971f4a029d 100644 Binary files a/public/images/pokemon/icons/variant/3/321_2.png and b/public/images/pokemon/icons/variant/3/321_2.png differ diff --git a/public/images/pokemon/icons/variant/3/321_3.png b/public/images/pokemon/icons/variant/3/321_3.png index e672b28040c..56c51ee749f 100644 Binary files a/public/images/pokemon/icons/variant/3/321_3.png and b/public/images/pokemon/icons/variant/3/321_3.png differ diff --git a/public/images/pokemon/icons/variant/3/325_2.png b/public/images/pokemon/icons/variant/3/325_2.png index 0792a8aa840..dd80b2a84f9 100644 Binary files a/public/images/pokemon/icons/variant/3/325_2.png and b/public/images/pokemon/icons/variant/3/325_2.png differ diff --git a/public/images/pokemon/icons/variant/3/325_3.png b/public/images/pokemon/icons/variant/3/325_3.png index dfd13bd75be..5dc1d565281 100644 Binary files a/public/images/pokemon/icons/variant/3/325_3.png and b/public/images/pokemon/icons/variant/3/325_3.png differ diff --git a/public/images/pokemon/icons/variant/3/326_2.png b/public/images/pokemon/icons/variant/3/326_2.png index b23be901c9a..953f2a0861b 100644 Binary files a/public/images/pokemon/icons/variant/3/326_2.png and b/public/images/pokemon/icons/variant/3/326_2.png differ diff --git a/public/images/pokemon/icons/variant/3/326_3.png b/public/images/pokemon/icons/variant/3/326_3.png index 6c4025d0842..c5d721db431 100644 Binary files a/public/images/pokemon/icons/variant/3/326_3.png and b/public/images/pokemon/icons/variant/3/326_3.png differ diff --git a/public/images/pokemon/icons/variant/3/327_2.png b/public/images/pokemon/icons/variant/3/327_2.png index 3013d175e7b..34973672fde 100644 Binary files a/public/images/pokemon/icons/variant/3/327_2.png and b/public/images/pokemon/icons/variant/3/327_2.png differ diff --git a/public/images/pokemon/icons/variant/3/327_3.png b/public/images/pokemon/icons/variant/3/327_3.png index 85d494eb661..f01db86be8b 100644 Binary files a/public/images/pokemon/icons/variant/3/327_3.png and b/public/images/pokemon/icons/variant/3/327_3.png differ diff --git a/public/images/pokemon/icons/variant/3/328_2.png b/public/images/pokemon/icons/variant/3/328_2.png index 8fa26e80d4b..b9554ca71d4 100644 Binary files a/public/images/pokemon/icons/variant/3/328_2.png and b/public/images/pokemon/icons/variant/3/328_2.png differ diff --git a/public/images/pokemon/icons/variant/3/328_3.png b/public/images/pokemon/icons/variant/3/328_3.png index 10b2d3cf6e2..d1ee158aa72 100644 Binary files a/public/images/pokemon/icons/variant/3/328_3.png and b/public/images/pokemon/icons/variant/3/328_3.png differ diff --git a/public/images/pokemon/icons/variant/3/329_2.png b/public/images/pokemon/icons/variant/3/329_2.png index ec4da909118..1d0dcc4496f 100644 Binary files a/public/images/pokemon/icons/variant/3/329_2.png and b/public/images/pokemon/icons/variant/3/329_2.png differ diff --git a/public/images/pokemon/icons/variant/3/329_3.png b/public/images/pokemon/icons/variant/3/329_3.png index c58ca1f9b4b..5ab90439a19 100644 Binary files a/public/images/pokemon/icons/variant/3/329_3.png and b/public/images/pokemon/icons/variant/3/329_3.png differ diff --git a/public/images/pokemon/icons/variant/3/330_2.png b/public/images/pokemon/icons/variant/3/330_2.png index db09dd178c0..d30cfe9ddfa 100644 Binary files a/public/images/pokemon/icons/variant/3/330_2.png and b/public/images/pokemon/icons/variant/3/330_2.png differ diff --git a/public/images/pokemon/icons/variant/3/330_3.png b/public/images/pokemon/icons/variant/3/330_3.png index 457139323d8..7a0318084ee 100644 Binary files a/public/images/pokemon/icons/variant/3/330_3.png and b/public/images/pokemon/icons/variant/3/330_3.png differ diff --git a/public/images/pokemon/icons/variant/3/331_2.png b/public/images/pokemon/icons/variant/3/331_2.png index 19b80296a1e..cfc7aed0ddc 100644 Binary files a/public/images/pokemon/icons/variant/3/331_2.png and b/public/images/pokemon/icons/variant/3/331_2.png differ diff --git a/public/images/pokemon/icons/variant/3/331_3.png b/public/images/pokemon/icons/variant/3/331_3.png index 01b93a1d086..388843ef2d6 100644 Binary files a/public/images/pokemon/icons/variant/3/331_3.png and b/public/images/pokemon/icons/variant/3/331_3.png differ diff --git a/public/images/pokemon/icons/variant/3/332_2.png b/public/images/pokemon/icons/variant/3/332_2.png index ff9077cec0a..2e42fdad831 100644 Binary files a/public/images/pokemon/icons/variant/3/332_2.png and b/public/images/pokemon/icons/variant/3/332_2.png differ diff --git a/public/images/pokemon/icons/variant/3/332_3.png b/public/images/pokemon/icons/variant/3/332_3.png index c1c6cee7947..dc3481afb16 100644 Binary files a/public/images/pokemon/icons/variant/3/332_3.png and b/public/images/pokemon/icons/variant/3/332_3.png differ diff --git a/public/images/pokemon/icons/variant/3/333_2.png b/public/images/pokemon/icons/variant/3/333_2.png index dba83c56e4c..71d88253e18 100644 Binary files a/public/images/pokemon/icons/variant/3/333_2.png and b/public/images/pokemon/icons/variant/3/333_2.png differ diff --git a/public/images/pokemon/icons/variant/3/333_3.png b/public/images/pokemon/icons/variant/3/333_3.png index 052e9cdbb6e..7880ad74cba 100644 Binary files a/public/images/pokemon/icons/variant/3/333_3.png and b/public/images/pokemon/icons/variant/3/333_3.png differ diff --git a/public/images/pokemon/icons/variant/3/334-mega_2.png b/public/images/pokemon/icons/variant/3/334-mega_2.png index dbd6e0d6d2e..14e7003cbf1 100644 Binary files a/public/images/pokemon/icons/variant/3/334-mega_2.png and b/public/images/pokemon/icons/variant/3/334-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/334-mega_3.png b/public/images/pokemon/icons/variant/3/334-mega_3.png index 6386fd580a5..4c41e2ca2e2 100644 Binary files a/public/images/pokemon/icons/variant/3/334-mega_3.png and b/public/images/pokemon/icons/variant/3/334-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/334_2.png b/public/images/pokemon/icons/variant/3/334_2.png index ed4a145fa40..ddd61a73309 100644 Binary files a/public/images/pokemon/icons/variant/3/334_2.png and b/public/images/pokemon/icons/variant/3/334_2.png differ diff --git a/public/images/pokemon/icons/variant/3/334_3.png b/public/images/pokemon/icons/variant/3/334_3.png index 08d3ac09a40..1d5947d5eba 100644 Binary files a/public/images/pokemon/icons/variant/3/334_3.png and b/public/images/pokemon/icons/variant/3/334_3.png differ diff --git a/public/images/pokemon/icons/variant/3/335_2.png b/public/images/pokemon/icons/variant/3/335_2.png index d80d7eed180..59d688fcd94 100644 Binary files a/public/images/pokemon/icons/variant/3/335_2.png and b/public/images/pokemon/icons/variant/3/335_2.png differ diff --git a/public/images/pokemon/icons/variant/3/335_3.png b/public/images/pokemon/icons/variant/3/335_3.png index 99dd3396f6b..e4e7fb4cd5c 100644 Binary files a/public/images/pokemon/icons/variant/3/335_3.png and b/public/images/pokemon/icons/variant/3/335_3.png differ diff --git a/public/images/pokemon/icons/variant/3/336_2.png b/public/images/pokemon/icons/variant/3/336_2.png index 385bb807f1a..e5139fe001b 100644 Binary files a/public/images/pokemon/icons/variant/3/336_2.png and b/public/images/pokemon/icons/variant/3/336_2.png differ diff --git a/public/images/pokemon/icons/variant/3/336_3.png b/public/images/pokemon/icons/variant/3/336_3.png index b2d2add9558..039c038a281 100644 Binary files a/public/images/pokemon/icons/variant/3/336_3.png and b/public/images/pokemon/icons/variant/3/336_3.png differ diff --git a/public/images/pokemon/icons/variant/3/337_2.png b/public/images/pokemon/icons/variant/3/337_2.png index feb9de9766c..bc1482fb1f5 100644 Binary files a/public/images/pokemon/icons/variant/3/337_2.png and b/public/images/pokemon/icons/variant/3/337_2.png differ diff --git a/public/images/pokemon/icons/variant/3/337_3.png b/public/images/pokemon/icons/variant/3/337_3.png index 456109305ad..6ae69d21a11 100644 Binary files a/public/images/pokemon/icons/variant/3/337_3.png and b/public/images/pokemon/icons/variant/3/337_3.png differ diff --git a/public/images/pokemon/icons/variant/3/338_2.png b/public/images/pokemon/icons/variant/3/338_2.png index 16abeba277a..b172482a54e 100644 Binary files a/public/images/pokemon/icons/variant/3/338_2.png and b/public/images/pokemon/icons/variant/3/338_2.png differ diff --git a/public/images/pokemon/icons/variant/3/338_3.png b/public/images/pokemon/icons/variant/3/338_3.png index f11206858a5..a9e685344a9 100644 Binary files a/public/images/pokemon/icons/variant/3/338_3.png and b/public/images/pokemon/icons/variant/3/338_3.png differ diff --git a/public/images/pokemon/icons/variant/3/339_2.png b/public/images/pokemon/icons/variant/3/339_2.png index d4a6b9c0c63..34ac995996f 100644 Binary files a/public/images/pokemon/icons/variant/3/339_2.png and b/public/images/pokemon/icons/variant/3/339_2.png differ diff --git a/public/images/pokemon/icons/variant/3/339_3.png b/public/images/pokemon/icons/variant/3/339_3.png index 2f5399ce5fb..a4c0f4d6e21 100644 Binary files a/public/images/pokemon/icons/variant/3/339_3.png and b/public/images/pokemon/icons/variant/3/339_3.png differ diff --git a/public/images/pokemon/icons/variant/3/340_2.png b/public/images/pokemon/icons/variant/3/340_2.png index a53af7dd28f..f00ac23e189 100644 Binary files a/public/images/pokemon/icons/variant/3/340_2.png and b/public/images/pokemon/icons/variant/3/340_2.png differ diff --git a/public/images/pokemon/icons/variant/3/340_3.png b/public/images/pokemon/icons/variant/3/340_3.png index 55844131ca8..58e8f85e6cf 100644 Binary files a/public/images/pokemon/icons/variant/3/340_3.png and b/public/images/pokemon/icons/variant/3/340_3.png differ diff --git a/public/images/pokemon/icons/variant/3/341_2.png b/public/images/pokemon/icons/variant/3/341_2.png index 25d2e5fedd6..efc98fb8882 100644 Binary files a/public/images/pokemon/icons/variant/3/341_2.png and b/public/images/pokemon/icons/variant/3/341_2.png differ diff --git a/public/images/pokemon/icons/variant/3/341_3.png b/public/images/pokemon/icons/variant/3/341_3.png index c753a6cd0ac..07abb0c3307 100644 Binary files a/public/images/pokemon/icons/variant/3/341_3.png and b/public/images/pokemon/icons/variant/3/341_3.png differ diff --git a/public/images/pokemon/icons/variant/3/342_2.png b/public/images/pokemon/icons/variant/3/342_2.png index 45381350bc3..d19e432c307 100644 Binary files a/public/images/pokemon/icons/variant/3/342_2.png and b/public/images/pokemon/icons/variant/3/342_2.png differ diff --git a/public/images/pokemon/icons/variant/3/342_3.png b/public/images/pokemon/icons/variant/3/342_3.png index 35948405685..a5333aa3aaa 100644 Binary files a/public/images/pokemon/icons/variant/3/342_3.png and b/public/images/pokemon/icons/variant/3/342_3.png differ diff --git a/public/images/pokemon/icons/variant/3/345_2.png b/public/images/pokemon/icons/variant/3/345_2.png index 015696265f9..d3a227a947c 100644 Binary files a/public/images/pokemon/icons/variant/3/345_2.png and b/public/images/pokemon/icons/variant/3/345_2.png differ diff --git a/public/images/pokemon/icons/variant/3/345_3.png b/public/images/pokemon/icons/variant/3/345_3.png index 41ba6766c21..eb186933ea3 100644 Binary files a/public/images/pokemon/icons/variant/3/345_3.png and b/public/images/pokemon/icons/variant/3/345_3.png differ diff --git a/public/images/pokemon/icons/variant/3/346_2.png b/public/images/pokemon/icons/variant/3/346_2.png index 71e233c31cc..eca4dab3000 100644 Binary files a/public/images/pokemon/icons/variant/3/346_2.png and b/public/images/pokemon/icons/variant/3/346_2.png differ diff --git a/public/images/pokemon/icons/variant/3/346_3.png b/public/images/pokemon/icons/variant/3/346_3.png index 14514bb6183..1e906b2768e 100644 Binary files a/public/images/pokemon/icons/variant/3/346_3.png and b/public/images/pokemon/icons/variant/3/346_3.png differ diff --git a/public/images/pokemon/icons/variant/3/351-rainy_1.png b/public/images/pokemon/icons/variant/3/351-rainy_1.png index 7038b441db7..9300f027c93 100644 Binary files a/public/images/pokemon/icons/variant/3/351-rainy_1.png and b/public/images/pokemon/icons/variant/3/351-rainy_1.png differ diff --git a/public/images/pokemon/icons/variant/3/351-rainy_2.png b/public/images/pokemon/icons/variant/3/351-rainy_2.png index 87617e2761e..5eb1825ab41 100644 Binary files a/public/images/pokemon/icons/variant/3/351-rainy_2.png and b/public/images/pokemon/icons/variant/3/351-rainy_2.png differ diff --git a/public/images/pokemon/icons/variant/3/351-rainy_3.png b/public/images/pokemon/icons/variant/3/351-rainy_3.png index 9be0fd449ae..0f144c01948 100644 Binary files a/public/images/pokemon/icons/variant/3/351-rainy_3.png and b/public/images/pokemon/icons/variant/3/351-rainy_3.png differ diff --git a/public/images/pokemon/icons/variant/3/351-snowy_1.png b/public/images/pokemon/icons/variant/3/351-snowy_1.png index 12527d321ce..94bb9b63631 100644 Binary files a/public/images/pokemon/icons/variant/3/351-snowy_1.png and b/public/images/pokemon/icons/variant/3/351-snowy_1.png differ diff --git a/public/images/pokemon/icons/variant/3/351-snowy_2.png b/public/images/pokemon/icons/variant/3/351-snowy_2.png index 22ee53ee9e9..249db5c0dad 100644 Binary files a/public/images/pokemon/icons/variant/3/351-snowy_2.png and b/public/images/pokemon/icons/variant/3/351-snowy_2.png differ diff --git a/public/images/pokemon/icons/variant/3/351-snowy_3.png b/public/images/pokemon/icons/variant/3/351-snowy_3.png index af0437e2599..14d0cf70c25 100644 Binary files a/public/images/pokemon/icons/variant/3/351-snowy_3.png and b/public/images/pokemon/icons/variant/3/351-snowy_3.png differ diff --git a/public/images/pokemon/icons/variant/3/351-sunny_1.png b/public/images/pokemon/icons/variant/3/351-sunny_1.png index 2b24ac4d0b1..7bdf93a6ee1 100644 Binary files a/public/images/pokemon/icons/variant/3/351-sunny_1.png and b/public/images/pokemon/icons/variant/3/351-sunny_1.png differ diff --git a/public/images/pokemon/icons/variant/3/351-sunny_2.png b/public/images/pokemon/icons/variant/3/351-sunny_2.png index cb1584e4c69..203e8db57a9 100644 Binary files a/public/images/pokemon/icons/variant/3/351-sunny_2.png and b/public/images/pokemon/icons/variant/3/351-sunny_2.png differ diff --git a/public/images/pokemon/icons/variant/3/351-sunny_3.png b/public/images/pokemon/icons/variant/3/351-sunny_3.png index 6c92a04864b..cacec6d8bf0 100644 Binary files a/public/images/pokemon/icons/variant/3/351-sunny_3.png and b/public/images/pokemon/icons/variant/3/351-sunny_3.png differ diff --git a/public/images/pokemon/icons/variant/3/351_2.png b/public/images/pokemon/icons/variant/3/351_2.png index f318301a31b..c4668965d95 100644 Binary files a/public/images/pokemon/icons/variant/3/351_2.png and b/public/images/pokemon/icons/variant/3/351_2.png differ diff --git a/public/images/pokemon/icons/variant/3/351_3.png b/public/images/pokemon/icons/variant/3/351_3.png index 9035c6243ad..de43c113d7e 100644 Binary files a/public/images/pokemon/icons/variant/3/351_3.png and b/public/images/pokemon/icons/variant/3/351_3.png differ diff --git a/public/images/pokemon/icons/variant/3/352_1.png b/public/images/pokemon/icons/variant/3/352_1.png index 2368c95ed59..2de9ec08a99 100644 Binary files a/public/images/pokemon/icons/variant/3/352_1.png and b/public/images/pokemon/icons/variant/3/352_1.png differ diff --git a/public/images/pokemon/icons/variant/3/352_2.png b/public/images/pokemon/icons/variant/3/352_2.png index d0776e840c3..33c3af609ac 100644 Binary files a/public/images/pokemon/icons/variant/3/352_2.png and b/public/images/pokemon/icons/variant/3/352_2.png differ diff --git a/public/images/pokemon/icons/variant/3/352_3.png b/public/images/pokemon/icons/variant/3/352_3.png index 36189d852a2..672b48bc49b 100644 Binary files a/public/images/pokemon/icons/variant/3/352_3.png and b/public/images/pokemon/icons/variant/3/352_3.png differ diff --git a/public/images/pokemon/icons/variant/3/353_2.png b/public/images/pokemon/icons/variant/3/353_2.png index 347bf7d92f9..19caf6dbc19 100644 Binary files a/public/images/pokemon/icons/variant/3/353_2.png and b/public/images/pokemon/icons/variant/3/353_2.png differ diff --git a/public/images/pokemon/icons/variant/3/353_3.png b/public/images/pokemon/icons/variant/3/353_3.png index b2b6fe99fd1..977f59f73bf 100644 Binary files a/public/images/pokemon/icons/variant/3/353_3.png and b/public/images/pokemon/icons/variant/3/353_3.png differ diff --git a/public/images/pokemon/icons/variant/3/354-mega_2.png b/public/images/pokemon/icons/variant/3/354-mega_2.png index 6ead74c4cdb..1c66db34bb5 100644 Binary files a/public/images/pokemon/icons/variant/3/354-mega_2.png and b/public/images/pokemon/icons/variant/3/354-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/354-mega_3.png b/public/images/pokemon/icons/variant/3/354-mega_3.png index aea0e119118..ed2273efe1b 100644 Binary files a/public/images/pokemon/icons/variant/3/354-mega_3.png and b/public/images/pokemon/icons/variant/3/354-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/354_2.png b/public/images/pokemon/icons/variant/3/354_2.png index 502385a3d7c..828bc6ab996 100644 Binary files a/public/images/pokemon/icons/variant/3/354_2.png and b/public/images/pokemon/icons/variant/3/354_2.png differ diff --git a/public/images/pokemon/icons/variant/3/354_3.png b/public/images/pokemon/icons/variant/3/354_3.png index 91b04e826a9..a978d036606 100644 Binary files a/public/images/pokemon/icons/variant/3/354_3.png and b/public/images/pokemon/icons/variant/3/354_3.png differ diff --git a/public/images/pokemon/icons/variant/3/357_2.png b/public/images/pokemon/icons/variant/3/357_2.png index 8ba7b0439f3..fa5cc1874a9 100644 Binary files a/public/images/pokemon/icons/variant/3/357_2.png and b/public/images/pokemon/icons/variant/3/357_2.png differ diff --git a/public/images/pokemon/icons/variant/3/357_3.png b/public/images/pokemon/icons/variant/3/357_3.png index 820201b7159..d2a309cd3fe 100644 Binary files a/public/images/pokemon/icons/variant/3/357_3.png and b/public/images/pokemon/icons/variant/3/357_3.png differ diff --git a/public/images/pokemon/icons/variant/3/358_1.png b/public/images/pokemon/icons/variant/3/358_1.png index 14deda92d58..af3e5385c0e 100644 Binary files a/public/images/pokemon/icons/variant/3/358_1.png and b/public/images/pokemon/icons/variant/3/358_1.png differ diff --git a/public/images/pokemon/icons/variant/3/358_2.png b/public/images/pokemon/icons/variant/3/358_2.png index 181fe4226c1..1ee0c14ac6a 100644 Binary files a/public/images/pokemon/icons/variant/3/358_2.png and b/public/images/pokemon/icons/variant/3/358_2.png differ diff --git a/public/images/pokemon/icons/variant/3/358_3.png b/public/images/pokemon/icons/variant/3/358_3.png index a5b66165185..bd9c3f12135 100644 Binary files a/public/images/pokemon/icons/variant/3/358_3.png and b/public/images/pokemon/icons/variant/3/358_3.png differ diff --git a/public/images/pokemon/icons/variant/3/359-mega_2.png b/public/images/pokemon/icons/variant/3/359-mega_2.png index 35290c15aa9..7dfef9cc7e6 100644 Binary files a/public/images/pokemon/icons/variant/3/359-mega_2.png and b/public/images/pokemon/icons/variant/3/359-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/359-mega_3.png b/public/images/pokemon/icons/variant/3/359-mega_3.png index 5a3250b944d..6d2c6f96c58 100644 Binary files a/public/images/pokemon/icons/variant/3/359-mega_3.png and b/public/images/pokemon/icons/variant/3/359-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/359_2.png b/public/images/pokemon/icons/variant/3/359_2.png index 0fa229141fd..8534266e914 100644 Binary files a/public/images/pokemon/icons/variant/3/359_2.png and b/public/images/pokemon/icons/variant/3/359_2.png differ diff --git a/public/images/pokemon/icons/variant/3/359_3.png b/public/images/pokemon/icons/variant/3/359_3.png index 54ba72028ac..82b473544ae 100644 Binary files a/public/images/pokemon/icons/variant/3/359_3.png and b/public/images/pokemon/icons/variant/3/359_3.png differ diff --git a/public/images/pokemon/icons/variant/3/361_2.png b/public/images/pokemon/icons/variant/3/361_2.png index 4f4cfc270c0..0a3fdf03a7b 100644 Binary files a/public/images/pokemon/icons/variant/3/361_2.png and b/public/images/pokemon/icons/variant/3/361_2.png differ diff --git a/public/images/pokemon/icons/variant/3/361_3.png b/public/images/pokemon/icons/variant/3/361_3.png index 3845b99646f..49fd6cc40b2 100644 Binary files a/public/images/pokemon/icons/variant/3/361_3.png and b/public/images/pokemon/icons/variant/3/361_3.png differ diff --git a/public/images/pokemon/icons/variant/3/362-mega_2.png b/public/images/pokemon/icons/variant/3/362-mega_2.png index 1c2faa4d8aa..89af7d73bea 100644 Binary files a/public/images/pokemon/icons/variant/3/362-mega_2.png and b/public/images/pokemon/icons/variant/3/362-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/362-mega_3.png b/public/images/pokemon/icons/variant/3/362-mega_3.png index f592c16aa08..c5124b79b02 100644 Binary files a/public/images/pokemon/icons/variant/3/362-mega_3.png and b/public/images/pokemon/icons/variant/3/362-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/362_2.png b/public/images/pokemon/icons/variant/3/362_2.png index 4503edba4f6..823236c5813 100644 Binary files a/public/images/pokemon/icons/variant/3/362_2.png and b/public/images/pokemon/icons/variant/3/362_2.png differ diff --git a/public/images/pokemon/icons/variant/3/362_3.png b/public/images/pokemon/icons/variant/3/362_3.png index 78985c204f4..d3b41a36c00 100644 Binary files a/public/images/pokemon/icons/variant/3/362_3.png and b/public/images/pokemon/icons/variant/3/362_3.png differ diff --git a/public/images/pokemon/icons/variant/3/369_2.png b/public/images/pokemon/icons/variant/3/369_2.png index 5f247e91802..8e0442ccc3b 100644 Binary files a/public/images/pokemon/icons/variant/3/369_2.png and b/public/images/pokemon/icons/variant/3/369_2.png differ diff --git a/public/images/pokemon/icons/variant/3/369_3.png b/public/images/pokemon/icons/variant/3/369_3.png index 5e1a40f149c..1263e47e48b 100644 Binary files a/public/images/pokemon/icons/variant/3/369_3.png and b/public/images/pokemon/icons/variant/3/369_3.png differ diff --git a/public/images/pokemon/icons/variant/3/370_2.png b/public/images/pokemon/icons/variant/3/370_2.png index 97be23cb47b..ad947106d05 100644 Binary files a/public/images/pokemon/icons/variant/3/370_2.png and b/public/images/pokemon/icons/variant/3/370_2.png differ diff --git a/public/images/pokemon/icons/variant/3/370_3.png b/public/images/pokemon/icons/variant/3/370_3.png index 39bbbf7277f..eebba56ee1d 100644 Binary files a/public/images/pokemon/icons/variant/3/370_3.png and b/public/images/pokemon/icons/variant/3/370_3.png differ diff --git a/public/images/pokemon/icons/variant/3/371_2.png b/public/images/pokemon/icons/variant/3/371_2.png index ab0c5d20606..f33668e4431 100644 Binary files a/public/images/pokemon/icons/variant/3/371_2.png and b/public/images/pokemon/icons/variant/3/371_2.png differ diff --git a/public/images/pokemon/icons/variant/3/371_3.png b/public/images/pokemon/icons/variant/3/371_3.png index b0f27c88ed3..b9b7a7dd77c 100644 Binary files a/public/images/pokemon/icons/variant/3/371_3.png and b/public/images/pokemon/icons/variant/3/371_3.png differ diff --git a/public/images/pokemon/icons/variant/3/372_2.png b/public/images/pokemon/icons/variant/3/372_2.png index 9ee2adbfa07..efff8a09248 100644 Binary files a/public/images/pokemon/icons/variant/3/372_2.png and b/public/images/pokemon/icons/variant/3/372_2.png differ diff --git a/public/images/pokemon/icons/variant/3/372_3.png b/public/images/pokemon/icons/variant/3/372_3.png index 00ad94a4fe7..ff638654118 100644 Binary files a/public/images/pokemon/icons/variant/3/372_3.png and b/public/images/pokemon/icons/variant/3/372_3.png differ diff --git a/public/images/pokemon/icons/variant/3/373-mega_2.png b/public/images/pokemon/icons/variant/3/373-mega_2.png index 1ec3b8409e5..3f339d4fd5f 100644 Binary files a/public/images/pokemon/icons/variant/3/373-mega_2.png and b/public/images/pokemon/icons/variant/3/373-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/373-mega_3.png b/public/images/pokemon/icons/variant/3/373-mega_3.png index 9f0952fd6ef..6c4570d98c1 100644 Binary files a/public/images/pokemon/icons/variant/3/373-mega_3.png and b/public/images/pokemon/icons/variant/3/373-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/373_2.png b/public/images/pokemon/icons/variant/3/373_2.png index 38401abab0e..47e1c2b4dc8 100644 Binary files a/public/images/pokemon/icons/variant/3/373_2.png and b/public/images/pokemon/icons/variant/3/373_2.png differ diff --git a/public/images/pokemon/icons/variant/3/373_3.png b/public/images/pokemon/icons/variant/3/373_3.png index 8e2d3eabf26..185c4e4c044 100644 Binary files a/public/images/pokemon/icons/variant/3/373_3.png and b/public/images/pokemon/icons/variant/3/373_3.png differ diff --git a/public/images/pokemon/icons/variant/3/374_2.png b/public/images/pokemon/icons/variant/3/374_2.png index 356f1d29177..74897d9ff20 100644 Binary files a/public/images/pokemon/icons/variant/3/374_2.png and b/public/images/pokemon/icons/variant/3/374_2.png differ diff --git a/public/images/pokemon/icons/variant/3/374_3.png b/public/images/pokemon/icons/variant/3/374_3.png index 19eb72b7eba..91bb1ece177 100644 Binary files a/public/images/pokemon/icons/variant/3/374_3.png and b/public/images/pokemon/icons/variant/3/374_3.png differ diff --git a/public/images/pokemon/icons/variant/3/375_2.png b/public/images/pokemon/icons/variant/3/375_2.png index de4efa75503..344a27a2dae 100644 Binary files a/public/images/pokemon/icons/variant/3/375_2.png and b/public/images/pokemon/icons/variant/3/375_2.png differ diff --git a/public/images/pokemon/icons/variant/3/375_3.png b/public/images/pokemon/icons/variant/3/375_3.png index 2b6b637f48e..a26939d4c19 100644 Binary files a/public/images/pokemon/icons/variant/3/375_3.png and b/public/images/pokemon/icons/variant/3/375_3.png differ diff --git a/public/images/pokemon/icons/variant/3/376-mega_2.png b/public/images/pokemon/icons/variant/3/376-mega_2.png index 86557ca063f..3ba087fe181 100644 Binary files a/public/images/pokemon/icons/variant/3/376-mega_2.png and b/public/images/pokemon/icons/variant/3/376-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/376-mega_3.png b/public/images/pokemon/icons/variant/3/376-mega_3.png index 01b165922bd..a34548ba6fc 100644 Binary files a/public/images/pokemon/icons/variant/3/376-mega_3.png and b/public/images/pokemon/icons/variant/3/376-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/376_2.png b/public/images/pokemon/icons/variant/3/376_2.png index f07844d885b..a107493e357 100644 Binary files a/public/images/pokemon/icons/variant/3/376_2.png and b/public/images/pokemon/icons/variant/3/376_2.png differ diff --git a/public/images/pokemon/icons/variant/3/376_3.png b/public/images/pokemon/icons/variant/3/376_3.png index 19b62f2eee7..db89aaa1d70 100644 Binary files a/public/images/pokemon/icons/variant/3/376_3.png and b/public/images/pokemon/icons/variant/3/376_3.png differ diff --git a/public/images/pokemon/icons/variant/3/377_2.png b/public/images/pokemon/icons/variant/3/377_2.png index f90f337c32e..9f73ed8079b 100644 Binary files a/public/images/pokemon/icons/variant/3/377_2.png and b/public/images/pokemon/icons/variant/3/377_2.png differ diff --git a/public/images/pokemon/icons/variant/3/377_3.png b/public/images/pokemon/icons/variant/3/377_3.png index 0957178662a..bfaa78e5908 100644 Binary files a/public/images/pokemon/icons/variant/3/377_3.png and b/public/images/pokemon/icons/variant/3/377_3.png differ diff --git a/public/images/pokemon/icons/variant/3/378_1.png b/public/images/pokemon/icons/variant/3/378_1.png index 32bc37d9e33..845f0793a67 100644 Binary files a/public/images/pokemon/icons/variant/3/378_1.png and b/public/images/pokemon/icons/variant/3/378_1.png differ diff --git a/public/images/pokemon/icons/variant/3/378_2.png b/public/images/pokemon/icons/variant/3/378_2.png index 9f310bc92c8..35082a58124 100644 Binary files a/public/images/pokemon/icons/variant/3/378_2.png and b/public/images/pokemon/icons/variant/3/378_2.png differ diff --git a/public/images/pokemon/icons/variant/3/378_3.png b/public/images/pokemon/icons/variant/3/378_3.png index 45afe9a71a9..51d93a471d4 100644 Binary files a/public/images/pokemon/icons/variant/3/378_3.png and b/public/images/pokemon/icons/variant/3/378_3.png differ diff --git a/public/images/pokemon/icons/variant/3/379_2.png b/public/images/pokemon/icons/variant/3/379_2.png index ad928fd752e..5c9a8ee3c17 100644 Binary files a/public/images/pokemon/icons/variant/3/379_2.png and b/public/images/pokemon/icons/variant/3/379_2.png differ diff --git a/public/images/pokemon/icons/variant/3/379_3.png b/public/images/pokemon/icons/variant/3/379_3.png index acb86b4f665..92bcb7e7a5e 100644 Binary files a/public/images/pokemon/icons/variant/3/379_3.png and b/public/images/pokemon/icons/variant/3/379_3.png differ diff --git a/public/images/pokemon/icons/variant/3/380-mega_2.png b/public/images/pokemon/icons/variant/3/380-mega_2.png index fcec45a699d..4e5bab653da 100644 Binary files a/public/images/pokemon/icons/variant/3/380-mega_2.png and b/public/images/pokemon/icons/variant/3/380-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/380-mega_3.png b/public/images/pokemon/icons/variant/3/380-mega_3.png index 6d0f0be1a47..2355de3a202 100644 Binary files a/public/images/pokemon/icons/variant/3/380-mega_3.png and b/public/images/pokemon/icons/variant/3/380-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/380_2.png b/public/images/pokemon/icons/variant/3/380_2.png index 397465205dd..8b3959076ad 100644 Binary files a/public/images/pokemon/icons/variant/3/380_2.png and b/public/images/pokemon/icons/variant/3/380_2.png differ diff --git a/public/images/pokemon/icons/variant/3/380_3.png b/public/images/pokemon/icons/variant/3/380_3.png index 85b4b46b4f0..aa6987d903a 100644 Binary files a/public/images/pokemon/icons/variant/3/380_3.png and b/public/images/pokemon/icons/variant/3/380_3.png differ diff --git a/public/images/pokemon/icons/variant/3/381-mega_2.png b/public/images/pokemon/icons/variant/3/381-mega_2.png index b1a8b998122..a931a3d5b7b 100644 Binary files a/public/images/pokemon/icons/variant/3/381-mega_2.png and b/public/images/pokemon/icons/variant/3/381-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/381-mega_3.png b/public/images/pokemon/icons/variant/3/381-mega_3.png index 9dfbc4851fe..283404ac3ee 100644 Binary files a/public/images/pokemon/icons/variant/3/381-mega_3.png and b/public/images/pokemon/icons/variant/3/381-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/381_2.png b/public/images/pokemon/icons/variant/3/381_2.png index 43038b9374f..b70ebd7dbea 100644 Binary files a/public/images/pokemon/icons/variant/3/381_2.png and b/public/images/pokemon/icons/variant/3/381_2.png differ diff --git a/public/images/pokemon/icons/variant/3/381_3.png b/public/images/pokemon/icons/variant/3/381_3.png index 4bf798dcedc..29f6f982974 100644 Binary files a/public/images/pokemon/icons/variant/3/381_3.png and b/public/images/pokemon/icons/variant/3/381_3.png differ diff --git a/public/images/pokemon/icons/variant/3/382-primal_2.png b/public/images/pokemon/icons/variant/3/382-primal_2.png index ef646e58170..c5794a90789 100644 Binary files a/public/images/pokemon/icons/variant/3/382-primal_2.png and b/public/images/pokemon/icons/variant/3/382-primal_2.png differ diff --git a/public/images/pokemon/icons/variant/3/382-primal_3.png b/public/images/pokemon/icons/variant/3/382-primal_3.png index 4a2eba5f6c9..5f8874162c8 100644 Binary files a/public/images/pokemon/icons/variant/3/382-primal_3.png and b/public/images/pokemon/icons/variant/3/382-primal_3.png differ diff --git a/public/images/pokemon/icons/variant/3/382_2.png b/public/images/pokemon/icons/variant/3/382_2.png index 987672917b5..e53e53d2d5c 100644 Binary files a/public/images/pokemon/icons/variant/3/382_2.png and b/public/images/pokemon/icons/variant/3/382_2.png differ diff --git a/public/images/pokemon/icons/variant/3/382_3.png b/public/images/pokemon/icons/variant/3/382_3.png index 6765d49f856..75cecb55bd5 100644 Binary files a/public/images/pokemon/icons/variant/3/382_3.png and b/public/images/pokemon/icons/variant/3/382_3.png differ diff --git a/public/images/pokemon/icons/variant/3/383-primal_2.png b/public/images/pokemon/icons/variant/3/383-primal_2.png index 32abb4b9132..b03c13527ed 100644 Binary files a/public/images/pokemon/icons/variant/3/383-primal_2.png and b/public/images/pokemon/icons/variant/3/383-primal_2.png differ diff --git a/public/images/pokemon/icons/variant/3/383-primal_3.png b/public/images/pokemon/icons/variant/3/383-primal_3.png index 952e08e33d2..6d15e1f1b14 100644 Binary files a/public/images/pokemon/icons/variant/3/383-primal_3.png and b/public/images/pokemon/icons/variant/3/383-primal_3.png differ diff --git a/public/images/pokemon/icons/variant/3/383_2.png b/public/images/pokemon/icons/variant/3/383_2.png index 3f5353822a1..09a9651772a 100644 Binary files a/public/images/pokemon/icons/variant/3/383_2.png and b/public/images/pokemon/icons/variant/3/383_2.png differ diff --git a/public/images/pokemon/icons/variant/3/383_3.png b/public/images/pokemon/icons/variant/3/383_3.png index 2549558a301..93d63a4b552 100644 Binary files a/public/images/pokemon/icons/variant/3/383_3.png and b/public/images/pokemon/icons/variant/3/383_3.png differ diff --git a/public/images/pokemon/icons/variant/3/384-mega_2.png b/public/images/pokemon/icons/variant/3/384-mega_2.png index 4715d127ff6..0585cee6f16 100644 Binary files a/public/images/pokemon/icons/variant/3/384-mega_2.png and b/public/images/pokemon/icons/variant/3/384-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/3/384-mega_3.png b/public/images/pokemon/icons/variant/3/384-mega_3.png index ee344250831..a68fc9c549e 100644 Binary files a/public/images/pokemon/icons/variant/3/384-mega_3.png and b/public/images/pokemon/icons/variant/3/384-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/3/384_2.png b/public/images/pokemon/icons/variant/3/384_2.png index 2835499beca..28bd929ff5b 100644 Binary files a/public/images/pokemon/icons/variant/3/384_2.png and b/public/images/pokemon/icons/variant/3/384_2.png differ diff --git a/public/images/pokemon/icons/variant/3/384_3.png b/public/images/pokemon/icons/variant/3/384_3.png index 84ff706b9fa..fe2d27a715a 100644 Binary files a/public/images/pokemon/icons/variant/3/384_3.png and b/public/images/pokemon/icons/variant/3/384_3.png differ diff --git a/public/images/pokemon/icons/variant/3/385_1.png b/public/images/pokemon/icons/variant/3/385_1.png index 5b66629d94b..e6dd0355e3c 100644 Binary files a/public/images/pokemon/icons/variant/3/385_1.png and b/public/images/pokemon/icons/variant/3/385_1.png differ diff --git a/public/images/pokemon/icons/variant/3/385_2.png b/public/images/pokemon/icons/variant/3/385_2.png index f9efafe0634..d6c47bafa22 100644 Binary files a/public/images/pokemon/icons/variant/3/385_2.png and b/public/images/pokemon/icons/variant/3/385_2.png differ diff --git a/public/images/pokemon/icons/variant/3/385_3.png b/public/images/pokemon/icons/variant/3/385_3.png index 6b2bdaa1fac..867a79f1dcb 100644 Binary files a/public/images/pokemon/icons/variant/3/385_3.png and b/public/images/pokemon/icons/variant/3/385_3.png differ diff --git a/public/images/pokemon/icons/variant/4/387_2.png b/public/images/pokemon/icons/variant/4/387_2.png index 21715e2567c..116cc260773 100644 Binary files a/public/images/pokemon/icons/variant/4/387_2.png and b/public/images/pokemon/icons/variant/4/387_2.png differ diff --git a/public/images/pokemon/icons/variant/4/387_3.png b/public/images/pokemon/icons/variant/4/387_3.png index d393d716862..858dae4a32e 100644 Binary files a/public/images/pokemon/icons/variant/4/387_3.png and b/public/images/pokemon/icons/variant/4/387_3.png differ diff --git a/public/images/pokemon/icons/variant/4/388_2.png b/public/images/pokemon/icons/variant/4/388_2.png index 06a4de56e25..d81bd06ffa9 100644 Binary files a/public/images/pokemon/icons/variant/4/388_2.png and b/public/images/pokemon/icons/variant/4/388_2.png differ diff --git a/public/images/pokemon/icons/variant/4/388_3.png b/public/images/pokemon/icons/variant/4/388_3.png index fa936198abb..617911357ec 100644 Binary files a/public/images/pokemon/icons/variant/4/388_3.png and b/public/images/pokemon/icons/variant/4/388_3.png differ diff --git a/public/images/pokemon/icons/variant/4/389_2.png b/public/images/pokemon/icons/variant/4/389_2.png index d9d68f081b6..b308dfcd1ee 100644 Binary files a/public/images/pokemon/icons/variant/4/389_2.png and b/public/images/pokemon/icons/variant/4/389_2.png differ diff --git a/public/images/pokemon/icons/variant/4/389_3.png b/public/images/pokemon/icons/variant/4/389_3.png index a785dea429c..63ffb762d89 100644 Binary files a/public/images/pokemon/icons/variant/4/389_3.png and b/public/images/pokemon/icons/variant/4/389_3.png differ diff --git a/public/images/pokemon/icons/variant/4/390_2.png b/public/images/pokemon/icons/variant/4/390_2.png index f29d3561210..dcb730cd053 100644 Binary files a/public/images/pokemon/icons/variant/4/390_2.png and b/public/images/pokemon/icons/variant/4/390_2.png differ diff --git a/public/images/pokemon/icons/variant/4/390_3.png b/public/images/pokemon/icons/variant/4/390_3.png index 7634f2e8639..73570f2c43b 100644 Binary files a/public/images/pokemon/icons/variant/4/390_3.png and b/public/images/pokemon/icons/variant/4/390_3.png differ diff --git a/public/images/pokemon/icons/variant/4/391_2.png b/public/images/pokemon/icons/variant/4/391_2.png index 470de43c7bc..628ccdfb355 100644 Binary files a/public/images/pokemon/icons/variant/4/391_2.png and b/public/images/pokemon/icons/variant/4/391_2.png differ diff --git a/public/images/pokemon/icons/variant/4/391_3.png b/public/images/pokemon/icons/variant/4/391_3.png index 8996fdb025c..3998a73f79b 100644 Binary files a/public/images/pokemon/icons/variant/4/391_3.png and b/public/images/pokemon/icons/variant/4/391_3.png differ diff --git a/public/images/pokemon/icons/variant/4/392_2.png b/public/images/pokemon/icons/variant/4/392_2.png index 0550a20e94d..5336af08597 100644 Binary files a/public/images/pokemon/icons/variant/4/392_2.png and b/public/images/pokemon/icons/variant/4/392_2.png differ diff --git a/public/images/pokemon/icons/variant/4/392_3.png b/public/images/pokemon/icons/variant/4/392_3.png index 7a66926b533..1ab19eaa1c6 100644 Binary files a/public/images/pokemon/icons/variant/4/392_3.png and b/public/images/pokemon/icons/variant/4/392_3.png differ diff --git a/public/images/pokemon/icons/variant/4/393_2.png b/public/images/pokemon/icons/variant/4/393_2.png index e26a72dd850..2657a6a481b 100644 Binary files a/public/images/pokemon/icons/variant/4/393_2.png and b/public/images/pokemon/icons/variant/4/393_2.png differ diff --git a/public/images/pokemon/icons/variant/4/393_3.png b/public/images/pokemon/icons/variant/4/393_3.png index 7fcd8815e4f..80c018bf6c8 100644 Binary files a/public/images/pokemon/icons/variant/4/393_3.png and b/public/images/pokemon/icons/variant/4/393_3.png differ diff --git a/public/images/pokemon/icons/variant/4/394_2.png b/public/images/pokemon/icons/variant/4/394_2.png index 637cc289736..1b6526b0ac6 100644 Binary files a/public/images/pokemon/icons/variant/4/394_2.png and b/public/images/pokemon/icons/variant/4/394_2.png differ diff --git a/public/images/pokemon/icons/variant/4/394_3.png b/public/images/pokemon/icons/variant/4/394_3.png index 2a471dcc51e..a2965262528 100644 Binary files a/public/images/pokemon/icons/variant/4/394_3.png and b/public/images/pokemon/icons/variant/4/394_3.png differ diff --git a/public/images/pokemon/icons/variant/4/395_2.png b/public/images/pokemon/icons/variant/4/395_2.png index 733fede6d6b..db2bd5f1b15 100644 Binary files a/public/images/pokemon/icons/variant/4/395_2.png and b/public/images/pokemon/icons/variant/4/395_2.png differ diff --git a/public/images/pokemon/icons/variant/4/395_3.png b/public/images/pokemon/icons/variant/4/395_3.png index 43bd23c5c58..262ae3d821d 100644 Binary files a/public/images/pokemon/icons/variant/4/395_3.png and b/public/images/pokemon/icons/variant/4/395_3.png differ diff --git a/public/images/pokemon/icons/variant/4/396_2.png b/public/images/pokemon/icons/variant/4/396_2.png index d7d23b494ab..02664f373bb 100644 Binary files a/public/images/pokemon/icons/variant/4/396_2.png and b/public/images/pokemon/icons/variant/4/396_2.png differ diff --git a/public/images/pokemon/icons/variant/4/396_3.png b/public/images/pokemon/icons/variant/4/396_3.png index 6725912b199..a4cfddc99f6 100644 Binary files a/public/images/pokemon/icons/variant/4/396_3.png and b/public/images/pokemon/icons/variant/4/396_3.png differ diff --git a/public/images/pokemon/icons/variant/4/397_2.png b/public/images/pokemon/icons/variant/4/397_2.png index f6982eeece4..3c64627efd8 100644 Binary files a/public/images/pokemon/icons/variant/4/397_2.png and b/public/images/pokemon/icons/variant/4/397_2.png differ diff --git a/public/images/pokemon/icons/variant/4/397_3.png b/public/images/pokemon/icons/variant/4/397_3.png index 83c2755599a..417cf283a56 100644 Binary files a/public/images/pokemon/icons/variant/4/397_3.png and b/public/images/pokemon/icons/variant/4/397_3.png differ diff --git a/public/images/pokemon/icons/variant/4/398_2.png b/public/images/pokemon/icons/variant/4/398_2.png index bbe04248c7b..e47a44013bf 100644 Binary files a/public/images/pokemon/icons/variant/4/398_2.png and b/public/images/pokemon/icons/variant/4/398_2.png differ diff --git a/public/images/pokemon/icons/variant/4/398_3.png b/public/images/pokemon/icons/variant/4/398_3.png index a1d47a95b1a..7703a64a5fa 100644 Binary files a/public/images/pokemon/icons/variant/4/398_3.png and b/public/images/pokemon/icons/variant/4/398_3.png differ diff --git a/public/images/pokemon/icons/variant/4/399_2.png b/public/images/pokemon/icons/variant/4/399_2.png index bdf0093d408..5477405ddf0 100644 Binary files a/public/images/pokemon/icons/variant/4/399_2.png and b/public/images/pokemon/icons/variant/4/399_2.png differ diff --git a/public/images/pokemon/icons/variant/4/399_3.png b/public/images/pokemon/icons/variant/4/399_3.png index 5459fc5a8a1..b7f513eba00 100644 Binary files a/public/images/pokemon/icons/variant/4/399_3.png and b/public/images/pokemon/icons/variant/4/399_3.png differ diff --git a/public/images/pokemon/icons/variant/4/400_2.png b/public/images/pokemon/icons/variant/4/400_2.png index b7a5ad3e272..166d25c198d 100644 Binary files a/public/images/pokemon/icons/variant/4/400_2.png and b/public/images/pokemon/icons/variant/4/400_2.png differ diff --git a/public/images/pokemon/icons/variant/4/400_3.png b/public/images/pokemon/icons/variant/4/400_3.png index 2d4c4c03c3d..08fcdffd36a 100644 Binary files a/public/images/pokemon/icons/variant/4/400_3.png and b/public/images/pokemon/icons/variant/4/400_3.png differ diff --git a/public/images/pokemon/icons/variant/4/401_2.png b/public/images/pokemon/icons/variant/4/401_2.png index aa9b4aa0ed9..86579e8d3eb 100644 Binary files a/public/images/pokemon/icons/variant/4/401_2.png and b/public/images/pokemon/icons/variant/4/401_2.png differ diff --git a/public/images/pokemon/icons/variant/4/401_3.png b/public/images/pokemon/icons/variant/4/401_3.png index 69fb5864f87..5d2fc39607f 100644 Binary files a/public/images/pokemon/icons/variant/4/401_3.png and b/public/images/pokemon/icons/variant/4/401_3.png differ diff --git a/public/images/pokemon/icons/variant/4/402_2.png b/public/images/pokemon/icons/variant/4/402_2.png index 1ce8776332b..7371e113549 100644 Binary files a/public/images/pokemon/icons/variant/4/402_2.png and b/public/images/pokemon/icons/variant/4/402_2.png differ diff --git a/public/images/pokemon/icons/variant/4/402_3.png b/public/images/pokemon/icons/variant/4/402_3.png index d020e81ef43..6b17bb7356c 100644 Binary files a/public/images/pokemon/icons/variant/4/402_3.png and b/public/images/pokemon/icons/variant/4/402_3.png differ diff --git a/public/images/pokemon/icons/variant/4/403_2.png b/public/images/pokemon/icons/variant/4/403_2.png index 410d3126e54..0b2e29dbd93 100644 Binary files a/public/images/pokemon/icons/variant/4/403_2.png and b/public/images/pokemon/icons/variant/4/403_2.png differ diff --git a/public/images/pokemon/icons/variant/4/403_3.png b/public/images/pokemon/icons/variant/4/403_3.png index 0064c7d7d3f..629861ef0cc 100644 Binary files a/public/images/pokemon/icons/variant/4/403_3.png and b/public/images/pokemon/icons/variant/4/403_3.png differ diff --git a/public/images/pokemon/icons/variant/4/404_2.png b/public/images/pokemon/icons/variant/4/404_2.png index 9bd7a6ed7bf..5c74731368d 100644 Binary files a/public/images/pokemon/icons/variant/4/404_2.png and b/public/images/pokemon/icons/variant/4/404_2.png differ diff --git a/public/images/pokemon/icons/variant/4/404_3.png b/public/images/pokemon/icons/variant/4/404_3.png index 5ec14183070..b4ab63bb6f0 100644 Binary files a/public/images/pokemon/icons/variant/4/404_3.png and b/public/images/pokemon/icons/variant/4/404_3.png differ diff --git a/public/images/pokemon/icons/variant/4/405_2.png b/public/images/pokemon/icons/variant/4/405_2.png index 28515b8350b..031145724c6 100644 Binary files a/public/images/pokemon/icons/variant/4/405_2.png and b/public/images/pokemon/icons/variant/4/405_2.png differ diff --git a/public/images/pokemon/icons/variant/4/405_3.png b/public/images/pokemon/icons/variant/4/405_3.png index 82f0270bd5b..352ae2dc7fb 100644 Binary files a/public/images/pokemon/icons/variant/4/405_3.png and b/public/images/pokemon/icons/variant/4/405_3.png differ diff --git a/public/images/pokemon/icons/variant/4/406_2.png b/public/images/pokemon/icons/variant/4/406_2.png index 7c9b98af4e3..51a1354a143 100644 Binary files a/public/images/pokemon/icons/variant/4/406_2.png and b/public/images/pokemon/icons/variant/4/406_2.png differ diff --git a/public/images/pokemon/icons/variant/4/406_3.png b/public/images/pokemon/icons/variant/4/406_3.png index c8c6754748b..d2031ea8044 100644 Binary files a/public/images/pokemon/icons/variant/4/406_3.png and b/public/images/pokemon/icons/variant/4/406_3.png differ diff --git a/public/images/pokemon/icons/variant/4/407_2.png b/public/images/pokemon/icons/variant/4/407_2.png index bce95b2f96e..3a6a3bfc03e 100644 Binary files a/public/images/pokemon/icons/variant/4/407_2.png and b/public/images/pokemon/icons/variant/4/407_2.png differ diff --git a/public/images/pokemon/icons/variant/4/407_3.png b/public/images/pokemon/icons/variant/4/407_3.png index 2f8137169f9..93942ebc5dc 100644 Binary files a/public/images/pokemon/icons/variant/4/407_3.png and b/public/images/pokemon/icons/variant/4/407_3.png differ diff --git a/public/images/pokemon/icons/variant/4/412-plant_1.png b/public/images/pokemon/icons/variant/4/412-plant_1.png index 90c6db39a68..20a1e068cd7 100644 Binary files a/public/images/pokemon/icons/variant/4/412-plant_1.png and b/public/images/pokemon/icons/variant/4/412-plant_1.png differ diff --git a/public/images/pokemon/icons/variant/4/412-plant_2.png b/public/images/pokemon/icons/variant/4/412-plant_2.png index 419e830b846..d2c308360b5 100644 Binary files a/public/images/pokemon/icons/variant/4/412-plant_2.png and b/public/images/pokemon/icons/variant/4/412-plant_2.png differ diff --git a/public/images/pokemon/icons/variant/4/412-plant_3.png b/public/images/pokemon/icons/variant/4/412-plant_3.png index fbca4157b54..8a1cfefd165 100644 Binary files a/public/images/pokemon/icons/variant/4/412-plant_3.png and b/public/images/pokemon/icons/variant/4/412-plant_3.png differ diff --git a/public/images/pokemon/icons/variant/4/412-sandy_1.png b/public/images/pokemon/icons/variant/4/412-sandy_1.png index db49eed4e53..9fe4f32f0fe 100644 Binary files a/public/images/pokemon/icons/variant/4/412-sandy_1.png and b/public/images/pokemon/icons/variant/4/412-sandy_1.png differ diff --git a/public/images/pokemon/icons/variant/4/412-sandy_2.png b/public/images/pokemon/icons/variant/4/412-sandy_2.png index 76e3df0261e..c907ccfbf72 100644 Binary files a/public/images/pokemon/icons/variant/4/412-sandy_2.png and b/public/images/pokemon/icons/variant/4/412-sandy_2.png differ diff --git a/public/images/pokemon/icons/variant/4/412-sandy_3.png b/public/images/pokemon/icons/variant/4/412-sandy_3.png index d14d57d46fd..bf58a1ce8f5 100644 Binary files a/public/images/pokemon/icons/variant/4/412-sandy_3.png and b/public/images/pokemon/icons/variant/4/412-sandy_3.png differ diff --git a/public/images/pokemon/icons/variant/4/412-trash_1.png b/public/images/pokemon/icons/variant/4/412-trash_1.png index 4cf68a7b35f..761fe6ee145 100644 Binary files a/public/images/pokemon/icons/variant/4/412-trash_1.png and b/public/images/pokemon/icons/variant/4/412-trash_1.png differ diff --git a/public/images/pokemon/icons/variant/4/412-trash_2.png b/public/images/pokemon/icons/variant/4/412-trash_2.png index 29fca44a407..6c7f93d234c 100644 Binary files a/public/images/pokemon/icons/variant/4/412-trash_2.png and b/public/images/pokemon/icons/variant/4/412-trash_2.png differ diff --git a/public/images/pokemon/icons/variant/4/412-trash_3.png b/public/images/pokemon/icons/variant/4/412-trash_3.png index beba11c1527..5f9f86af942 100644 Binary files a/public/images/pokemon/icons/variant/4/412-trash_3.png and b/public/images/pokemon/icons/variant/4/412-trash_3.png differ diff --git a/public/images/pokemon/icons/variant/4/413-plant_1.png b/public/images/pokemon/icons/variant/4/413-plant_1.png index d4046fcea46..41ea95ec4be 100644 Binary files a/public/images/pokemon/icons/variant/4/413-plant_1.png and b/public/images/pokemon/icons/variant/4/413-plant_1.png differ diff --git a/public/images/pokemon/icons/variant/4/413-plant_2.png b/public/images/pokemon/icons/variant/4/413-plant_2.png index d0fd825b17c..4f2e1192084 100644 Binary files a/public/images/pokemon/icons/variant/4/413-plant_2.png and b/public/images/pokemon/icons/variant/4/413-plant_2.png differ diff --git a/public/images/pokemon/icons/variant/4/413-plant_3.png b/public/images/pokemon/icons/variant/4/413-plant_3.png index 1a1419c9eea..7c919937775 100644 Binary files a/public/images/pokemon/icons/variant/4/413-plant_3.png and b/public/images/pokemon/icons/variant/4/413-plant_3.png differ diff --git a/public/images/pokemon/icons/variant/4/413-sandy_1.png b/public/images/pokemon/icons/variant/4/413-sandy_1.png index 8e4dccd4a9f..0596d3fcde8 100644 Binary files a/public/images/pokemon/icons/variant/4/413-sandy_1.png and b/public/images/pokemon/icons/variant/4/413-sandy_1.png differ diff --git a/public/images/pokemon/icons/variant/4/413-sandy_2.png b/public/images/pokemon/icons/variant/4/413-sandy_2.png index 98631e94ba3..4fe586d9cba 100644 Binary files a/public/images/pokemon/icons/variant/4/413-sandy_2.png and b/public/images/pokemon/icons/variant/4/413-sandy_2.png differ diff --git a/public/images/pokemon/icons/variant/4/413-sandy_3.png b/public/images/pokemon/icons/variant/4/413-sandy_3.png index 29f26f17184..9f2bf508ca9 100644 Binary files a/public/images/pokemon/icons/variant/4/413-sandy_3.png and b/public/images/pokemon/icons/variant/4/413-sandy_3.png differ diff --git a/public/images/pokemon/icons/variant/4/413-trash_1.png b/public/images/pokemon/icons/variant/4/413-trash_1.png index 44030da66be..a8bc4b81170 100644 Binary files a/public/images/pokemon/icons/variant/4/413-trash_1.png and b/public/images/pokemon/icons/variant/4/413-trash_1.png differ diff --git a/public/images/pokemon/icons/variant/4/413-trash_2.png b/public/images/pokemon/icons/variant/4/413-trash_2.png index 236a6fd3116..367d171027d 100644 Binary files a/public/images/pokemon/icons/variant/4/413-trash_2.png and b/public/images/pokemon/icons/variant/4/413-trash_2.png differ diff --git a/public/images/pokemon/icons/variant/4/413-trash_3.png b/public/images/pokemon/icons/variant/4/413-trash_3.png index cdc4eab7e4b..60df5c6b0b0 100644 Binary files a/public/images/pokemon/icons/variant/4/413-trash_3.png and b/public/images/pokemon/icons/variant/4/413-trash_3.png differ diff --git a/public/images/pokemon/icons/variant/4/414_2.png b/public/images/pokemon/icons/variant/4/414_2.png index defec058b47..1ff6132edf3 100644 Binary files a/public/images/pokemon/icons/variant/4/414_2.png and b/public/images/pokemon/icons/variant/4/414_2.png differ diff --git a/public/images/pokemon/icons/variant/4/414_3.png b/public/images/pokemon/icons/variant/4/414_3.png index 90cb33dff76..16e919b8a4c 100644 Binary files a/public/images/pokemon/icons/variant/4/414_3.png and b/public/images/pokemon/icons/variant/4/414_3.png differ diff --git a/public/images/pokemon/icons/variant/4/417_2.png b/public/images/pokemon/icons/variant/4/417_2.png index e1bd9e52bb0..c689c9de110 100644 Binary files a/public/images/pokemon/icons/variant/4/417_2.png and b/public/images/pokemon/icons/variant/4/417_2.png differ diff --git a/public/images/pokemon/icons/variant/4/417_3.png b/public/images/pokemon/icons/variant/4/417_3.png index 4f9d1936f78..9312f424b2f 100644 Binary files a/public/images/pokemon/icons/variant/4/417_3.png and b/public/images/pokemon/icons/variant/4/417_3.png differ diff --git a/public/images/pokemon/icons/variant/4/418_2.png b/public/images/pokemon/icons/variant/4/418_2.png index 7712de363c1..fc3e0cf236a 100644 Binary files a/public/images/pokemon/icons/variant/4/418_2.png and b/public/images/pokemon/icons/variant/4/418_2.png differ diff --git a/public/images/pokemon/icons/variant/4/418_3.png b/public/images/pokemon/icons/variant/4/418_3.png index c400f59a7ab..cbc78f779ba 100644 Binary files a/public/images/pokemon/icons/variant/4/418_3.png and b/public/images/pokemon/icons/variant/4/418_3.png differ diff --git a/public/images/pokemon/icons/variant/4/419_2.png b/public/images/pokemon/icons/variant/4/419_2.png index a95721362bd..4c7da30146b 100644 Binary files a/public/images/pokemon/icons/variant/4/419_2.png and b/public/images/pokemon/icons/variant/4/419_2.png differ diff --git a/public/images/pokemon/icons/variant/4/419_3.png b/public/images/pokemon/icons/variant/4/419_3.png index 89fa83adf14..4b631646975 100644 Binary files a/public/images/pokemon/icons/variant/4/419_3.png and b/public/images/pokemon/icons/variant/4/419_3.png differ diff --git a/public/images/pokemon/icons/variant/4/420_2.png b/public/images/pokemon/icons/variant/4/420_2.png index 194ae1213e3..fff6123d259 100644 Binary files a/public/images/pokemon/icons/variant/4/420_2.png and b/public/images/pokemon/icons/variant/4/420_2.png differ diff --git a/public/images/pokemon/icons/variant/4/420_3.png b/public/images/pokemon/icons/variant/4/420_3.png index 71116e40243..a8a3e5d82b0 100644 Binary files a/public/images/pokemon/icons/variant/4/420_3.png and b/public/images/pokemon/icons/variant/4/420_3.png differ diff --git a/public/images/pokemon/icons/variant/4/421-overcast_2.png b/public/images/pokemon/icons/variant/4/421-overcast_2.png index 0a8260baf49..ea3ec8b501c 100644 Binary files a/public/images/pokemon/icons/variant/4/421-overcast_2.png and b/public/images/pokemon/icons/variant/4/421-overcast_2.png differ diff --git a/public/images/pokemon/icons/variant/4/421-overcast_3.png b/public/images/pokemon/icons/variant/4/421-overcast_3.png index 91fb8ef3d5f..c1e28ec7900 100644 Binary files a/public/images/pokemon/icons/variant/4/421-overcast_3.png and b/public/images/pokemon/icons/variant/4/421-overcast_3.png differ diff --git a/public/images/pokemon/icons/variant/4/421-sunshine_2.png b/public/images/pokemon/icons/variant/4/421-sunshine_2.png index 4872654e4be..181a4042751 100644 Binary files a/public/images/pokemon/icons/variant/4/421-sunshine_2.png and b/public/images/pokemon/icons/variant/4/421-sunshine_2.png differ diff --git a/public/images/pokemon/icons/variant/4/421-sunshine_3.png b/public/images/pokemon/icons/variant/4/421-sunshine_3.png index d615119bdf2..d644a101225 100644 Binary files a/public/images/pokemon/icons/variant/4/421-sunshine_3.png and b/public/images/pokemon/icons/variant/4/421-sunshine_3.png differ diff --git a/public/images/pokemon/icons/variant/4/422-east_1.png b/public/images/pokemon/icons/variant/4/422-east_1.png index 9fb5c74921a..fcb405ca36b 100644 Binary files a/public/images/pokemon/icons/variant/4/422-east_1.png and b/public/images/pokemon/icons/variant/4/422-east_1.png differ diff --git a/public/images/pokemon/icons/variant/4/422-east_2.png b/public/images/pokemon/icons/variant/4/422-east_2.png index fb9907e1539..1d66cfe4280 100644 Binary files a/public/images/pokemon/icons/variant/4/422-east_2.png and b/public/images/pokemon/icons/variant/4/422-east_2.png differ diff --git a/public/images/pokemon/icons/variant/4/422-east_3.png b/public/images/pokemon/icons/variant/4/422-east_3.png index 2a9194aa27d..7415e1ae466 100644 Binary files a/public/images/pokemon/icons/variant/4/422-east_3.png and b/public/images/pokemon/icons/variant/4/422-east_3.png differ diff --git a/public/images/pokemon/icons/variant/4/422-west_1.png b/public/images/pokemon/icons/variant/4/422-west_1.png index 8de03318895..116ec0ff66f 100644 Binary files a/public/images/pokemon/icons/variant/4/422-west_1.png and b/public/images/pokemon/icons/variant/4/422-west_1.png differ diff --git a/public/images/pokemon/icons/variant/4/422-west_2.png b/public/images/pokemon/icons/variant/4/422-west_2.png index e8188df28be..2d934bbae92 100644 Binary files a/public/images/pokemon/icons/variant/4/422-west_2.png and b/public/images/pokemon/icons/variant/4/422-west_2.png differ diff --git a/public/images/pokemon/icons/variant/4/422-west_3.png b/public/images/pokemon/icons/variant/4/422-west_3.png index 72219dead78..a14eacafb4d 100644 Binary files a/public/images/pokemon/icons/variant/4/422-west_3.png and b/public/images/pokemon/icons/variant/4/422-west_3.png differ diff --git a/public/images/pokemon/icons/variant/4/423-east_1.png b/public/images/pokemon/icons/variant/4/423-east_1.png index d072a3276de..394899ac29d 100644 Binary files a/public/images/pokemon/icons/variant/4/423-east_1.png and b/public/images/pokemon/icons/variant/4/423-east_1.png differ diff --git a/public/images/pokemon/icons/variant/4/423-east_2.png b/public/images/pokemon/icons/variant/4/423-east_2.png index a8cd25e2168..9c8adfa63cc 100644 Binary files a/public/images/pokemon/icons/variant/4/423-east_2.png and b/public/images/pokemon/icons/variant/4/423-east_2.png differ diff --git a/public/images/pokemon/icons/variant/4/423-east_3.png b/public/images/pokemon/icons/variant/4/423-east_3.png index 4a9b161eeb0..987f6bf3726 100644 Binary files a/public/images/pokemon/icons/variant/4/423-east_3.png and b/public/images/pokemon/icons/variant/4/423-east_3.png differ diff --git a/public/images/pokemon/icons/variant/4/423-west_1.png b/public/images/pokemon/icons/variant/4/423-west_1.png index ded72e1760a..a9af5ea2af4 100644 Binary files a/public/images/pokemon/icons/variant/4/423-west_1.png and b/public/images/pokemon/icons/variant/4/423-west_1.png differ diff --git a/public/images/pokemon/icons/variant/4/423-west_2.png b/public/images/pokemon/icons/variant/4/423-west_2.png index f13ac6bb8fe..f4f741004d7 100644 Binary files a/public/images/pokemon/icons/variant/4/423-west_2.png and b/public/images/pokemon/icons/variant/4/423-west_2.png differ diff --git a/public/images/pokemon/icons/variant/4/423-west_3.png b/public/images/pokemon/icons/variant/4/423-west_3.png index 2c18ab411f5..f8a9abaefe4 100644 Binary files a/public/images/pokemon/icons/variant/4/423-west_3.png and b/public/images/pokemon/icons/variant/4/423-west_3.png differ diff --git a/public/images/pokemon/icons/variant/4/424_2.png b/public/images/pokemon/icons/variant/4/424_2.png index 356858005eb..b03cf6b1b8a 100644 Binary files a/public/images/pokemon/icons/variant/4/424_2.png and b/public/images/pokemon/icons/variant/4/424_2.png differ diff --git a/public/images/pokemon/icons/variant/4/424_3.png b/public/images/pokemon/icons/variant/4/424_3.png index 78e066ba68c..7ddba530be5 100644 Binary files a/public/images/pokemon/icons/variant/4/424_3.png and b/public/images/pokemon/icons/variant/4/424_3.png differ diff --git a/public/images/pokemon/icons/variant/4/425_2.png b/public/images/pokemon/icons/variant/4/425_2.png index 5387e9cce3c..601dad76d47 100644 Binary files a/public/images/pokemon/icons/variant/4/425_2.png and b/public/images/pokemon/icons/variant/4/425_2.png differ diff --git a/public/images/pokemon/icons/variant/4/425_3.png b/public/images/pokemon/icons/variant/4/425_3.png index efe3d656964..32c56f028bc 100644 Binary files a/public/images/pokemon/icons/variant/4/425_3.png and b/public/images/pokemon/icons/variant/4/425_3.png differ diff --git a/public/images/pokemon/icons/variant/4/426_2.png b/public/images/pokemon/icons/variant/4/426_2.png index 5f1805f8acb..663e2ae5c0a 100644 Binary files a/public/images/pokemon/icons/variant/4/426_2.png and b/public/images/pokemon/icons/variant/4/426_2.png differ diff --git a/public/images/pokemon/icons/variant/4/426_3.png b/public/images/pokemon/icons/variant/4/426_3.png index 2a7b3be7ab9..336a6ab0e82 100644 Binary files a/public/images/pokemon/icons/variant/4/426_3.png and b/public/images/pokemon/icons/variant/4/426_3.png differ diff --git a/public/images/pokemon/icons/variant/4/427_2.png b/public/images/pokemon/icons/variant/4/427_2.png index ceaf11acb48..61b46801d67 100644 Binary files a/public/images/pokemon/icons/variant/4/427_2.png and b/public/images/pokemon/icons/variant/4/427_2.png differ diff --git a/public/images/pokemon/icons/variant/4/427_3.png b/public/images/pokemon/icons/variant/4/427_3.png index 5972f5e9489..ec74916c1be 100644 Binary files a/public/images/pokemon/icons/variant/4/427_3.png and b/public/images/pokemon/icons/variant/4/427_3.png differ diff --git a/public/images/pokemon/icons/variant/4/428-mega_2.png b/public/images/pokemon/icons/variant/4/428-mega_2.png index 32c3293a796..c982ebb9138 100644 Binary files a/public/images/pokemon/icons/variant/4/428-mega_2.png and b/public/images/pokemon/icons/variant/4/428-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/4/428-mega_3.png b/public/images/pokemon/icons/variant/4/428-mega_3.png index 4d6194bd554..e694b4a37cd 100644 Binary files a/public/images/pokemon/icons/variant/4/428-mega_3.png and b/public/images/pokemon/icons/variant/4/428-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/4/428_2.png b/public/images/pokemon/icons/variant/4/428_2.png index 5b325f3256a..c01bead1553 100644 Binary files a/public/images/pokemon/icons/variant/4/428_2.png and b/public/images/pokemon/icons/variant/4/428_2.png differ diff --git a/public/images/pokemon/icons/variant/4/428_3.png b/public/images/pokemon/icons/variant/4/428_3.png index b8bf01bb20d..728ecc7ecf9 100644 Binary files a/public/images/pokemon/icons/variant/4/428_3.png and b/public/images/pokemon/icons/variant/4/428_3.png differ diff --git a/public/images/pokemon/icons/variant/4/429_1.png b/public/images/pokemon/icons/variant/4/429_1.png index 667f389f5c1..a7c8c93a6f2 100644 Binary files a/public/images/pokemon/icons/variant/4/429_1.png and b/public/images/pokemon/icons/variant/4/429_1.png differ diff --git a/public/images/pokemon/icons/variant/4/429_2.png b/public/images/pokemon/icons/variant/4/429_2.png index 85cd47bd85f..33be621c7cb 100644 Binary files a/public/images/pokemon/icons/variant/4/429_2.png and b/public/images/pokemon/icons/variant/4/429_2.png differ diff --git a/public/images/pokemon/icons/variant/4/429_3.png b/public/images/pokemon/icons/variant/4/429_3.png index bb9b2384514..70aeefe6fc0 100644 Binary files a/public/images/pokemon/icons/variant/4/429_3.png and b/public/images/pokemon/icons/variant/4/429_3.png differ diff --git a/public/images/pokemon/icons/variant/4/430_2.png b/public/images/pokemon/icons/variant/4/430_2.png index 8026dd75141..f08bbdfb3af 100644 Binary files a/public/images/pokemon/icons/variant/4/430_2.png and b/public/images/pokemon/icons/variant/4/430_2.png differ diff --git a/public/images/pokemon/icons/variant/4/430_3.png b/public/images/pokemon/icons/variant/4/430_3.png index d83a4f349f0..b21e7ae7f18 100644 Binary files a/public/images/pokemon/icons/variant/4/430_3.png and b/public/images/pokemon/icons/variant/4/430_3.png differ diff --git a/public/images/pokemon/icons/variant/4/433_1.png b/public/images/pokemon/icons/variant/4/433_1.png index 04e9fbcaf3a..599b9d0bdd6 100644 Binary files a/public/images/pokemon/icons/variant/4/433_1.png and b/public/images/pokemon/icons/variant/4/433_1.png differ diff --git a/public/images/pokemon/icons/variant/4/433_2.png b/public/images/pokemon/icons/variant/4/433_2.png index fbccdb13cd0..2c117d10ff0 100644 Binary files a/public/images/pokemon/icons/variant/4/433_2.png and b/public/images/pokemon/icons/variant/4/433_2.png differ diff --git a/public/images/pokemon/icons/variant/4/433_3.png b/public/images/pokemon/icons/variant/4/433_3.png index 72b3389978f..2805f50c69f 100644 Binary files a/public/images/pokemon/icons/variant/4/433_3.png and b/public/images/pokemon/icons/variant/4/433_3.png differ diff --git a/public/images/pokemon/icons/variant/4/436_2.png b/public/images/pokemon/icons/variant/4/436_2.png index fe76bf3b86e..7fec9945688 100644 Binary files a/public/images/pokemon/icons/variant/4/436_2.png and b/public/images/pokemon/icons/variant/4/436_2.png differ diff --git a/public/images/pokemon/icons/variant/4/436_3.png b/public/images/pokemon/icons/variant/4/436_3.png index b0051761e60..ac1fa263c85 100644 Binary files a/public/images/pokemon/icons/variant/4/436_3.png and b/public/images/pokemon/icons/variant/4/436_3.png differ diff --git a/public/images/pokemon/icons/variant/4/437_2.png b/public/images/pokemon/icons/variant/4/437_2.png index d03d8075fad..462bad5da9f 100644 Binary files a/public/images/pokemon/icons/variant/4/437_2.png and b/public/images/pokemon/icons/variant/4/437_2.png differ diff --git a/public/images/pokemon/icons/variant/4/437_3.png b/public/images/pokemon/icons/variant/4/437_3.png index 41e630e5d08..34e813d3789 100644 Binary files a/public/images/pokemon/icons/variant/4/437_3.png and b/public/images/pokemon/icons/variant/4/437_3.png differ diff --git a/public/images/pokemon/icons/variant/4/438_2.png b/public/images/pokemon/icons/variant/4/438_2.png index 17e9774a8da..8fee69536a3 100644 Binary files a/public/images/pokemon/icons/variant/4/438_2.png and b/public/images/pokemon/icons/variant/4/438_2.png differ diff --git a/public/images/pokemon/icons/variant/4/438_3.png b/public/images/pokemon/icons/variant/4/438_3.png index d5022d89135..2e528989f7a 100644 Binary files a/public/images/pokemon/icons/variant/4/438_3.png and b/public/images/pokemon/icons/variant/4/438_3.png differ diff --git a/public/images/pokemon/icons/variant/4/440_1.png b/public/images/pokemon/icons/variant/4/440_1.png index 221f382a21b..7441738f7f1 100644 Binary files a/public/images/pokemon/icons/variant/4/440_1.png and b/public/images/pokemon/icons/variant/4/440_1.png differ diff --git a/public/images/pokemon/icons/variant/4/440_2.png b/public/images/pokemon/icons/variant/4/440_2.png index 13b7a152372..91c75e19880 100644 Binary files a/public/images/pokemon/icons/variant/4/440_2.png and b/public/images/pokemon/icons/variant/4/440_2.png differ diff --git a/public/images/pokemon/icons/variant/4/440_3.png b/public/images/pokemon/icons/variant/4/440_3.png index a97c51cd646..6c563939694 100644 Binary files a/public/images/pokemon/icons/variant/4/440_3.png and b/public/images/pokemon/icons/variant/4/440_3.png differ diff --git a/public/images/pokemon/icons/variant/4/441_2.png b/public/images/pokemon/icons/variant/4/441_2.png index de8e6a96d56..86e139288de 100644 Binary files a/public/images/pokemon/icons/variant/4/441_2.png and b/public/images/pokemon/icons/variant/4/441_2.png differ diff --git a/public/images/pokemon/icons/variant/4/441_3.png b/public/images/pokemon/icons/variant/4/441_3.png index 1ad59d63241..d7485fe3f85 100644 Binary files a/public/images/pokemon/icons/variant/4/441_3.png and b/public/images/pokemon/icons/variant/4/441_3.png differ diff --git a/public/images/pokemon/icons/variant/4/442_2.png b/public/images/pokemon/icons/variant/4/442_2.png index 9859bb7ce98..c0516cd5ae3 100644 Binary files a/public/images/pokemon/icons/variant/4/442_2.png and b/public/images/pokemon/icons/variant/4/442_2.png differ diff --git a/public/images/pokemon/icons/variant/4/442_3.png b/public/images/pokemon/icons/variant/4/442_3.png index d64848ac40d..ece2c70a11d 100644 Binary files a/public/images/pokemon/icons/variant/4/442_3.png and b/public/images/pokemon/icons/variant/4/442_3.png differ diff --git a/public/images/pokemon/icons/variant/4/443_1.png b/public/images/pokemon/icons/variant/4/443_1.png index 53d93aab99e..48a0a4e6348 100644 Binary files a/public/images/pokemon/icons/variant/4/443_1.png and b/public/images/pokemon/icons/variant/4/443_1.png differ diff --git a/public/images/pokemon/icons/variant/4/443_2.png b/public/images/pokemon/icons/variant/4/443_2.png index e7dfb3fdb5c..52d4305c745 100644 Binary files a/public/images/pokemon/icons/variant/4/443_2.png and b/public/images/pokemon/icons/variant/4/443_2.png differ diff --git a/public/images/pokemon/icons/variant/4/443_3.png b/public/images/pokemon/icons/variant/4/443_3.png index abf81433d96..bd55d1779da 100644 Binary files a/public/images/pokemon/icons/variant/4/443_3.png and b/public/images/pokemon/icons/variant/4/443_3.png differ diff --git a/public/images/pokemon/icons/variant/4/444_1.png b/public/images/pokemon/icons/variant/4/444_1.png index 1cb56ea2b84..f04bed81a26 100644 Binary files a/public/images/pokemon/icons/variant/4/444_1.png and b/public/images/pokemon/icons/variant/4/444_1.png differ diff --git a/public/images/pokemon/icons/variant/4/444_2.png b/public/images/pokemon/icons/variant/4/444_2.png index 00c4eefefb4..0f6b65bfc2b 100644 Binary files a/public/images/pokemon/icons/variant/4/444_2.png and b/public/images/pokemon/icons/variant/4/444_2.png differ diff --git a/public/images/pokemon/icons/variant/4/444_3.png b/public/images/pokemon/icons/variant/4/444_3.png index 477505c805b..736b22e939d 100644 Binary files a/public/images/pokemon/icons/variant/4/444_3.png and b/public/images/pokemon/icons/variant/4/444_3.png differ diff --git a/public/images/pokemon/icons/variant/4/445-mega_1.png b/public/images/pokemon/icons/variant/4/445-mega_1.png index ad7b058c3c1..af0cd7da9d4 100644 Binary files a/public/images/pokemon/icons/variant/4/445-mega_1.png and b/public/images/pokemon/icons/variant/4/445-mega_1.png differ diff --git a/public/images/pokemon/icons/variant/4/445-mega_2.png b/public/images/pokemon/icons/variant/4/445-mega_2.png index c7260ae2013..44d1ebe3f43 100644 Binary files a/public/images/pokemon/icons/variant/4/445-mega_2.png and b/public/images/pokemon/icons/variant/4/445-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/4/445-mega_3.png b/public/images/pokemon/icons/variant/4/445-mega_3.png index e05693129d3..4af490d03ff 100644 Binary files a/public/images/pokemon/icons/variant/4/445-mega_3.png and b/public/images/pokemon/icons/variant/4/445-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/4/445_1.png b/public/images/pokemon/icons/variant/4/445_1.png index 955f80fc48d..dcadee05f5a 100644 Binary files a/public/images/pokemon/icons/variant/4/445_1.png and b/public/images/pokemon/icons/variant/4/445_1.png differ diff --git a/public/images/pokemon/icons/variant/4/445_2.png b/public/images/pokemon/icons/variant/4/445_2.png index aa36c7791af..c9e251d6660 100644 Binary files a/public/images/pokemon/icons/variant/4/445_2.png and b/public/images/pokemon/icons/variant/4/445_2.png differ diff --git a/public/images/pokemon/icons/variant/4/445_3.png b/public/images/pokemon/icons/variant/4/445_3.png index a0b6ed9cd1d..4d1c115b2b9 100644 Binary files a/public/images/pokemon/icons/variant/4/445_3.png and b/public/images/pokemon/icons/variant/4/445_3.png differ diff --git a/public/images/pokemon/icons/variant/4/446_2.png b/public/images/pokemon/icons/variant/4/446_2.png index 900f3a5996b..34d96ac667d 100644 Binary files a/public/images/pokemon/icons/variant/4/446_2.png and b/public/images/pokemon/icons/variant/4/446_2.png differ diff --git a/public/images/pokemon/icons/variant/4/446_3.png b/public/images/pokemon/icons/variant/4/446_3.png index 04c40204baf..383c5a12d72 100644 Binary files a/public/images/pokemon/icons/variant/4/446_3.png and b/public/images/pokemon/icons/variant/4/446_3.png differ diff --git a/public/images/pokemon/icons/variant/4/447_1.png b/public/images/pokemon/icons/variant/4/447_1.png index 03173395ac8..696f05f926e 100644 Binary files a/public/images/pokemon/icons/variant/4/447_1.png and b/public/images/pokemon/icons/variant/4/447_1.png differ diff --git a/public/images/pokemon/icons/variant/4/447_2.png b/public/images/pokemon/icons/variant/4/447_2.png index 3fd9c515de9..617973aad8b 100644 Binary files a/public/images/pokemon/icons/variant/4/447_2.png and b/public/images/pokemon/icons/variant/4/447_2.png differ diff --git a/public/images/pokemon/icons/variant/4/447_3.png b/public/images/pokemon/icons/variant/4/447_3.png index 45f1b14a992..da06b509a5f 100644 Binary files a/public/images/pokemon/icons/variant/4/447_3.png and b/public/images/pokemon/icons/variant/4/447_3.png differ diff --git a/public/images/pokemon/icons/variant/4/448-mega_1.png b/public/images/pokemon/icons/variant/4/448-mega_1.png index 9c694d8915a..009aaa36427 100644 Binary files a/public/images/pokemon/icons/variant/4/448-mega_1.png and b/public/images/pokemon/icons/variant/4/448-mega_1.png differ diff --git a/public/images/pokemon/icons/variant/4/448-mega_2.png b/public/images/pokemon/icons/variant/4/448-mega_2.png index 2bb37f8df08..4bd86476f51 100644 Binary files a/public/images/pokemon/icons/variant/4/448-mega_2.png and b/public/images/pokemon/icons/variant/4/448-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/4/448-mega_3.png b/public/images/pokemon/icons/variant/4/448-mega_3.png index 5dbdb78b839..1154099b2bd 100644 Binary files a/public/images/pokemon/icons/variant/4/448-mega_3.png and b/public/images/pokemon/icons/variant/4/448-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/4/448_1.png b/public/images/pokemon/icons/variant/4/448_1.png index 362927f30c3..1da904e3692 100644 Binary files a/public/images/pokemon/icons/variant/4/448_1.png and b/public/images/pokemon/icons/variant/4/448_1.png differ diff --git a/public/images/pokemon/icons/variant/4/448_2.png b/public/images/pokemon/icons/variant/4/448_2.png index 83a9783c4c1..3726a6379c0 100644 Binary files a/public/images/pokemon/icons/variant/4/448_2.png and b/public/images/pokemon/icons/variant/4/448_2.png differ diff --git a/public/images/pokemon/icons/variant/4/448_3.png b/public/images/pokemon/icons/variant/4/448_3.png index 65684e49bd8..5bb88003402 100644 Binary files a/public/images/pokemon/icons/variant/4/448_3.png and b/public/images/pokemon/icons/variant/4/448_3.png differ diff --git a/public/images/pokemon/icons/variant/4/453_2.png b/public/images/pokemon/icons/variant/4/453_2.png index 6131ef61811..01add7cd867 100644 Binary files a/public/images/pokemon/icons/variant/4/453_2.png and b/public/images/pokemon/icons/variant/4/453_2.png differ diff --git a/public/images/pokemon/icons/variant/4/453_3.png b/public/images/pokemon/icons/variant/4/453_3.png index 2f8d8604298..2aef2ded747 100644 Binary files a/public/images/pokemon/icons/variant/4/453_3.png and b/public/images/pokemon/icons/variant/4/453_3.png differ diff --git a/public/images/pokemon/icons/variant/4/454_2.png b/public/images/pokemon/icons/variant/4/454_2.png index 6d057af9dad..f58274d3220 100644 Binary files a/public/images/pokemon/icons/variant/4/454_2.png and b/public/images/pokemon/icons/variant/4/454_2.png differ diff --git a/public/images/pokemon/icons/variant/4/454_3.png b/public/images/pokemon/icons/variant/4/454_3.png index 733df0b3fee..38e7b815aea 100644 Binary files a/public/images/pokemon/icons/variant/4/454_3.png and b/public/images/pokemon/icons/variant/4/454_3.png differ diff --git a/public/images/pokemon/icons/variant/4/455_2.png b/public/images/pokemon/icons/variant/4/455_2.png index 206ba13205f..47ef3fdb208 100644 Binary files a/public/images/pokemon/icons/variant/4/455_2.png and b/public/images/pokemon/icons/variant/4/455_2.png differ diff --git a/public/images/pokemon/icons/variant/4/455_3.png b/public/images/pokemon/icons/variant/4/455_3.png index 199976e2f67..1a16bab99be 100644 Binary files a/public/images/pokemon/icons/variant/4/455_3.png and b/public/images/pokemon/icons/variant/4/455_3.png differ diff --git a/public/images/pokemon/icons/variant/4/456_2.png b/public/images/pokemon/icons/variant/4/456_2.png index c3817b56fb4..1cd501482f1 100644 Binary files a/public/images/pokemon/icons/variant/4/456_2.png and b/public/images/pokemon/icons/variant/4/456_2.png differ diff --git a/public/images/pokemon/icons/variant/4/456_3.png b/public/images/pokemon/icons/variant/4/456_3.png index 1af49a05518..d9f712d6d14 100644 Binary files a/public/images/pokemon/icons/variant/4/456_3.png and b/public/images/pokemon/icons/variant/4/456_3.png differ diff --git a/public/images/pokemon/icons/variant/4/457_2.png b/public/images/pokemon/icons/variant/4/457_2.png index 8f120cc478d..77eb59a15b0 100644 Binary files a/public/images/pokemon/icons/variant/4/457_2.png and b/public/images/pokemon/icons/variant/4/457_2.png differ diff --git a/public/images/pokemon/icons/variant/4/457_3.png b/public/images/pokemon/icons/variant/4/457_3.png index e65119dd11a..e95b04bb770 100644 Binary files a/public/images/pokemon/icons/variant/4/457_3.png and b/public/images/pokemon/icons/variant/4/457_3.png differ diff --git a/public/images/pokemon/icons/variant/4/458_2.png b/public/images/pokemon/icons/variant/4/458_2.png index 9d4114f8263..fe633d9f8c8 100644 Binary files a/public/images/pokemon/icons/variant/4/458_2.png and b/public/images/pokemon/icons/variant/4/458_2.png differ diff --git a/public/images/pokemon/icons/variant/4/458_3.png b/public/images/pokemon/icons/variant/4/458_3.png index 6cf77428ebe..8bf90816219 100644 Binary files a/public/images/pokemon/icons/variant/4/458_3.png and b/public/images/pokemon/icons/variant/4/458_3.png differ diff --git a/public/images/pokemon/icons/variant/4/461_2.png b/public/images/pokemon/icons/variant/4/461_2.png index 5b6559554eb..3ebf7c448e3 100644 Binary files a/public/images/pokemon/icons/variant/4/461_2.png and b/public/images/pokemon/icons/variant/4/461_2.png differ diff --git a/public/images/pokemon/icons/variant/4/461_3.png b/public/images/pokemon/icons/variant/4/461_3.png index 5097166d3ed..f74e80e51d6 100644 Binary files a/public/images/pokemon/icons/variant/4/461_3.png and b/public/images/pokemon/icons/variant/4/461_3.png differ diff --git a/public/images/pokemon/icons/variant/4/462_2.png b/public/images/pokemon/icons/variant/4/462_2.png index 3e8b0d8f4cc..12c217e4034 100644 Binary files a/public/images/pokemon/icons/variant/4/462_2.png and b/public/images/pokemon/icons/variant/4/462_2.png differ diff --git a/public/images/pokemon/icons/variant/4/462_3.png b/public/images/pokemon/icons/variant/4/462_3.png index d9fcca16979..3e5bb2f597c 100644 Binary files a/public/images/pokemon/icons/variant/4/462_3.png and b/public/images/pokemon/icons/variant/4/462_3.png differ diff --git a/public/images/pokemon/icons/variant/4/464_2.png b/public/images/pokemon/icons/variant/4/464_2.png index cc0a4833b61..d6bb8bf022e 100644 Binary files a/public/images/pokemon/icons/variant/4/464_2.png and b/public/images/pokemon/icons/variant/4/464_2.png differ diff --git a/public/images/pokemon/icons/variant/4/464_3.png b/public/images/pokemon/icons/variant/4/464_3.png index 4e5b4c42080..4c3fb4f4353 100644 Binary files a/public/images/pokemon/icons/variant/4/464_3.png and b/public/images/pokemon/icons/variant/4/464_3.png differ diff --git a/public/images/pokemon/icons/variant/4/465_2.png b/public/images/pokemon/icons/variant/4/465_2.png index 710405e802c..033a06132ae 100644 Binary files a/public/images/pokemon/icons/variant/4/465_2.png and b/public/images/pokemon/icons/variant/4/465_2.png differ diff --git a/public/images/pokemon/icons/variant/4/465_3.png b/public/images/pokemon/icons/variant/4/465_3.png index e53ff65765d..7c340a57ebd 100644 Binary files a/public/images/pokemon/icons/variant/4/465_3.png and b/public/images/pokemon/icons/variant/4/465_3.png differ diff --git a/public/images/pokemon/icons/variant/4/466_1.png b/public/images/pokemon/icons/variant/4/466_1.png index 32423eb1384..6a2608630bb 100644 Binary files a/public/images/pokemon/icons/variant/4/466_1.png and b/public/images/pokemon/icons/variant/4/466_1.png differ diff --git a/public/images/pokemon/icons/variant/4/466_2.png b/public/images/pokemon/icons/variant/4/466_2.png index 0d39f0798c7..5dbffb0a117 100644 Binary files a/public/images/pokemon/icons/variant/4/466_2.png and b/public/images/pokemon/icons/variant/4/466_2.png differ diff --git a/public/images/pokemon/icons/variant/4/466_3.png b/public/images/pokemon/icons/variant/4/466_3.png index eca9ef7724c..31fc107a50c 100644 Binary files a/public/images/pokemon/icons/variant/4/466_3.png and b/public/images/pokemon/icons/variant/4/466_3.png differ diff --git a/public/images/pokemon/icons/variant/4/467_2.png b/public/images/pokemon/icons/variant/4/467_2.png index 46395657b20..e17b9f86074 100644 Binary files a/public/images/pokemon/icons/variant/4/467_2.png and b/public/images/pokemon/icons/variant/4/467_2.png differ diff --git a/public/images/pokemon/icons/variant/4/467_3.png b/public/images/pokemon/icons/variant/4/467_3.png index 0a5821dc61f..4d606969936 100644 Binary files a/public/images/pokemon/icons/variant/4/467_3.png and b/public/images/pokemon/icons/variant/4/467_3.png differ diff --git a/public/images/pokemon/icons/variant/4/468_1.png b/public/images/pokemon/icons/variant/4/468_1.png index 686326a1aa8..32159551dbc 100644 Binary files a/public/images/pokemon/icons/variant/4/468_1.png and b/public/images/pokemon/icons/variant/4/468_1.png differ diff --git a/public/images/pokemon/icons/variant/4/468_2.png b/public/images/pokemon/icons/variant/4/468_2.png index 96f525ce43e..c0348ffd323 100644 Binary files a/public/images/pokemon/icons/variant/4/468_2.png and b/public/images/pokemon/icons/variant/4/468_2.png differ diff --git a/public/images/pokemon/icons/variant/4/468_3.png b/public/images/pokemon/icons/variant/4/468_3.png index 7e907f3eae3..4c8bd4b4d1d 100644 Binary files a/public/images/pokemon/icons/variant/4/468_3.png and b/public/images/pokemon/icons/variant/4/468_3.png differ diff --git a/public/images/pokemon/icons/variant/4/469_2.png b/public/images/pokemon/icons/variant/4/469_2.png index 8eb2dfece00..c63043c263e 100644 Binary files a/public/images/pokemon/icons/variant/4/469_2.png and b/public/images/pokemon/icons/variant/4/469_2.png differ diff --git a/public/images/pokemon/icons/variant/4/469_3.png b/public/images/pokemon/icons/variant/4/469_3.png index 10f4c01442b..46cde862ca9 100644 Binary files a/public/images/pokemon/icons/variant/4/469_3.png and b/public/images/pokemon/icons/variant/4/469_3.png differ diff --git a/public/images/pokemon/icons/variant/4/470_1.png b/public/images/pokemon/icons/variant/4/470_1.png index 4ba723592e3..1a6570ee737 100644 Binary files a/public/images/pokemon/icons/variant/4/470_1.png and b/public/images/pokemon/icons/variant/4/470_1.png differ diff --git a/public/images/pokemon/icons/variant/4/470_2.png b/public/images/pokemon/icons/variant/4/470_2.png index 87324b2666a..84e966cc958 100644 Binary files a/public/images/pokemon/icons/variant/4/470_2.png and b/public/images/pokemon/icons/variant/4/470_2.png differ diff --git a/public/images/pokemon/icons/variant/4/470_3.png b/public/images/pokemon/icons/variant/4/470_3.png index 421ce166559..b72d69bb112 100644 Binary files a/public/images/pokemon/icons/variant/4/470_3.png and b/public/images/pokemon/icons/variant/4/470_3.png differ diff --git a/public/images/pokemon/icons/variant/4/471_1.png b/public/images/pokemon/icons/variant/4/471_1.png index d37a7515a00..0a20940c661 100644 Binary files a/public/images/pokemon/icons/variant/4/471_1.png and b/public/images/pokemon/icons/variant/4/471_1.png differ diff --git a/public/images/pokemon/icons/variant/4/471_2.png b/public/images/pokemon/icons/variant/4/471_2.png index 429544cc591..4b73c6feebe 100644 Binary files a/public/images/pokemon/icons/variant/4/471_2.png and b/public/images/pokemon/icons/variant/4/471_2.png differ diff --git a/public/images/pokemon/icons/variant/4/471_3.png b/public/images/pokemon/icons/variant/4/471_3.png index 95b8e481818..200eee716a5 100644 Binary files a/public/images/pokemon/icons/variant/4/471_3.png and b/public/images/pokemon/icons/variant/4/471_3.png differ diff --git a/public/images/pokemon/icons/variant/4/472_2.png b/public/images/pokemon/icons/variant/4/472_2.png index 29cb7014389..86a41acf1b7 100644 Binary files a/public/images/pokemon/icons/variant/4/472_2.png and b/public/images/pokemon/icons/variant/4/472_2.png differ diff --git a/public/images/pokemon/icons/variant/4/472_3.png b/public/images/pokemon/icons/variant/4/472_3.png index 33361c267cf..43bd82a52b2 100644 Binary files a/public/images/pokemon/icons/variant/4/472_3.png and b/public/images/pokemon/icons/variant/4/472_3.png differ diff --git a/public/images/pokemon/icons/variant/4/474_2.png b/public/images/pokemon/icons/variant/4/474_2.png index cbc6b709c8d..000472c3374 100644 Binary files a/public/images/pokemon/icons/variant/4/474_2.png and b/public/images/pokemon/icons/variant/4/474_2.png differ diff --git a/public/images/pokemon/icons/variant/4/474_3.png b/public/images/pokemon/icons/variant/4/474_3.png index 5cc48efdaf2..34fca8c8a1c 100644 Binary files a/public/images/pokemon/icons/variant/4/474_3.png and b/public/images/pokemon/icons/variant/4/474_3.png differ diff --git a/public/images/pokemon/icons/variant/4/475-mega_2.png b/public/images/pokemon/icons/variant/4/475-mega_2.png index d47842f3343..b6b04041ae6 100644 Binary files a/public/images/pokemon/icons/variant/4/475-mega_2.png and b/public/images/pokemon/icons/variant/4/475-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/4/475-mega_3.png b/public/images/pokemon/icons/variant/4/475-mega_3.png index c067c36c836..0f5866af3e7 100644 Binary files a/public/images/pokemon/icons/variant/4/475-mega_3.png and b/public/images/pokemon/icons/variant/4/475-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/4/475_2.png b/public/images/pokemon/icons/variant/4/475_2.png index 1b1e562497b..bf29aa47921 100644 Binary files a/public/images/pokemon/icons/variant/4/475_2.png and b/public/images/pokemon/icons/variant/4/475_2.png differ diff --git a/public/images/pokemon/icons/variant/4/475_3.png b/public/images/pokemon/icons/variant/4/475_3.png index 4a8f5bdb56d..a9adbe11cc5 100644 Binary files a/public/images/pokemon/icons/variant/4/475_3.png and b/public/images/pokemon/icons/variant/4/475_3.png differ diff --git a/public/images/pokemon/icons/variant/4/476_2.png b/public/images/pokemon/icons/variant/4/476_2.png index 9b36a6f127e..d1669000820 100644 Binary files a/public/images/pokemon/icons/variant/4/476_2.png and b/public/images/pokemon/icons/variant/4/476_2.png differ diff --git a/public/images/pokemon/icons/variant/4/476_3.png b/public/images/pokemon/icons/variant/4/476_3.png index 39cb2a72088..1001ca3d74e 100644 Binary files a/public/images/pokemon/icons/variant/4/476_3.png and b/public/images/pokemon/icons/variant/4/476_3.png differ diff --git a/public/images/pokemon/icons/variant/4/478_2.png b/public/images/pokemon/icons/variant/4/478_2.png index b9f71fc19d9..f90540f42fa 100644 Binary files a/public/images/pokemon/icons/variant/4/478_2.png and b/public/images/pokemon/icons/variant/4/478_2.png differ diff --git a/public/images/pokemon/icons/variant/4/478_3.png b/public/images/pokemon/icons/variant/4/478_3.png index cd6be788e32..c0fcde52cb6 100644 Binary files a/public/images/pokemon/icons/variant/4/478_3.png and b/public/images/pokemon/icons/variant/4/478_3.png differ diff --git a/public/images/pokemon/icons/variant/4/479-fan_2.png b/public/images/pokemon/icons/variant/4/479-fan_2.png index 2d421219259..8294fc940ce 100644 Binary files a/public/images/pokemon/icons/variant/4/479-fan_2.png and b/public/images/pokemon/icons/variant/4/479-fan_2.png differ diff --git a/public/images/pokemon/icons/variant/4/479-fan_3.png b/public/images/pokemon/icons/variant/4/479-fan_3.png index 590e3c7e7a2..741e7ba6390 100644 Binary files a/public/images/pokemon/icons/variant/4/479-fan_3.png and b/public/images/pokemon/icons/variant/4/479-fan_3.png differ diff --git a/public/images/pokemon/icons/variant/4/479-frost_2.png b/public/images/pokemon/icons/variant/4/479-frost_2.png index abe9280ab03..e0447c7bc27 100644 Binary files a/public/images/pokemon/icons/variant/4/479-frost_2.png and b/public/images/pokemon/icons/variant/4/479-frost_2.png differ diff --git a/public/images/pokemon/icons/variant/4/479-frost_3.png b/public/images/pokemon/icons/variant/4/479-frost_3.png index 55576d669da..439dcbfd02e 100644 Binary files a/public/images/pokemon/icons/variant/4/479-frost_3.png and b/public/images/pokemon/icons/variant/4/479-frost_3.png differ diff --git a/public/images/pokemon/icons/variant/4/479-heat_2.png b/public/images/pokemon/icons/variant/4/479-heat_2.png index 9a440f95b3b..4209e4336c3 100644 Binary files a/public/images/pokemon/icons/variant/4/479-heat_2.png and b/public/images/pokemon/icons/variant/4/479-heat_2.png differ diff --git a/public/images/pokemon/icons/variant/4/479-heat_3.png b/public/images/pokemon/icons/variant/4/479-heat_3.png index 5c9482a5ff8..58c89409b22 100644 Binary files a/public/images/pokemon/icons/variant/4/479-heat_3.png and b/public/images/pokemon/icons/variant/4/479-heat_3.png differ diff --git a/public/images/pokemon/icons/variant/4/479-mow_2.png b/public/images/pokemon/icons/variant/4/479-mow_2.png index 9a785ccafd4..defb4cbb33c 100644 Binary files a/public/images/pokemon/icons/variant/4/479-mow_2.png and b/public/images/pokemon/icons/variant/4/479-mow_2.png differ diff --git a/public/images/pokemon/icons/variant/4/479-mow_3.png b/public/images/pokemon/icons/variant/4/479-mow_3.png index ac6b5121458..e06396cf80d 100644 Binary files a/public/images/pokemon/icons/variant/4/479-mow_3.png and b/public/images/pokemon/icons/variant/4/479-mow_3.png differ diff --git a/public/images/pokemon/icons/variant/4/479-wash_2.png b/public/images/pokemon/icons/variant/4/479-wash_2.png index 8f09f7b8992..20e2bc66a9e 100644 Binary files a/public/images/pokemon/icons/variant/4/479-wash_2.png and b/public/images/pokemon/icons/variant/4/479-wash_2.png differ diff --git a/public/images/pokemon/icons/variant/4/479-wash_3.png b/public/images/pokemon/icons/variant/4/479-wash_3.png index 8b5e3bb99fb..2de2bfdfd6b 100644 Binary files a/public/images/pokemon/icons/variant/4/479-wash_3.png and b/public/images/pokemon/icons/variant/4/479-wash_3.png differ diff --git a/public/images/pokemon/icons/variant/4/479_2.png b/public/images/pokemon/icons/variant/4/479_2.png index 3e9c85463b8..8217c3caaba 100644 Binary files a/public/images/pokemon/icons/variant/4/479_2.png and b/public/images/pokemon/icons/variant/4/479_2.png differ diff --git a/public/images/pokemon/icons/variant/4/479_3.png b/public/images/pokemon/icons/variant/4/479_3.png index ec7a623f0fe..8683c733972 100644 Binary files a/public/images/pokemon/icons/variant/4/479_3.png and b/public/images/pokemon/icons/variant/4/479_3.png differ diff --git a/public/images/pokemon/icons/variant/4/480_1.png b/public/images/pokemon/icons/variant/4/480_1.png index 3b9a496e3f9..8c726ec94c5 100644 Binary files a/public/images/pokemon/icons/variant/4/480_1.png and b/public/images/pokemon/icons/variant/4/480_1.png differ diff --git a/public/images/pokemon/icons/variant/4/480_2.png b/public/images/pokemon/icons/variant/4/480_2.png index 5db1971cb61..9f466813fae 100644 Binary files a/public/images/pokemon/icons/variant/4/480_2.png and b/public/images/pokemon/icons/variant/4/480_2.png differ diff --git a/public/images/pokemon/icons/variant/4/480_3.png b/public/images/pokemon/icons/variant/4/480_3.png index e7ca3ff5bc8..ea2512e2aeb 100644 Binary files a/public/images/pokemon/icons/variant/4/480_3.png and b/public/images/pokemon/icons/variant/4/480_3.png differ diff --git a/public/images/pokemon/icons/variant/4/481_1.png b/public/images/pokemon/icons/variant/4/481_1.png index 382851af42b..40bb2997897 100644 Binary files a/public/images/pokemon/icons/variant/4/481_1.png and b/public/images/pokemon/icons/variant/4/481_1.png differ diff --git a/public/images/pokemon/icons/variant/4/481_2.png b/public/images/pokemon/icons/variant/4/481_2.png index 8c62541d898..25fa2a1572c 100644 Binary files a/public/images/pokemon/icons/variant/4/481_2.png and b/public/images/pokemon/icons/variant/4/481_2.png differ diff --git a/public/images/pokemon/icons/variant/4/481_3.png b/public/images/pokemon/icons/variant/4/481_3.png index c42845e9ed7..49ce2ad5e3b 100644 Binary files a/public/images/pokemon/icons/variant/4/481_3.png and b/public/images/pokemon/icons/variant/4/481_3.png differ diff --git a/public/images/pokemon/icons/variant/4/482_1.png b/public/images/pokemon/icons/variant/4/482_1.png index 3e479c3c1c6..8beb30cba81 100644 Binary files a/public/images/pokemon/icons/variant/4/482_1.png and b/public/images/pokemon/icons/variant/4/482_1.png differ diff --git a/public/images/pokemon/icons/variant/4/482_2.png b/public/images/pokemon/icons/variant/4/482_2.png index a636973b33a..f7b960c7b71 100644 Binary files a/public/images/pokemon/icons/variant/4/482_2.png and b/public/images/pokemon/icons/variant/4/482_2.png differ diff --git a/public/images/pokemon/icons/variant/4/482_3.png b/public/images/pokemon/icons/variant/4/482_3.png index 28ec6f85f47..d25a0d30d11 100644 Binary files a/public/images/pokemon/icons/variant/4/482_3.png and b/public/images/pokemon/icons/variant/4/482_3.png differ diff --git a/public/images/pokemon/icons/variant/4/485_2.png b/public/images/pokemon/icons/variant/4/485_2.png index 57759e932a2..d2d3f3b7ec2 100644 Binary files a/public/images/pokemon/icons/variant/4/485_2.png and b/public/images/pokemon/icons/variant/4/485_2.png differ diff --git a/public/images/pokemon/icons/variant/4/485_3.png b/public/images/pokemon/icons/variant/4/485_3.png index 2f133e8fb98..62f9719b430 100644 Binary files a/public/images/pokemon/icons/variant/4/485_3.png and b/public/images/pokemon/icons/variant/4/485_3.png differ diff --git a/public/images/pokemon/icons/variant/4/486_2.png b/public/images/pokemon/icons/variant/4/486_2.png index d13c4861a4b..378579b4ce6 100644 Binary files a/public/images/pokemon/icons/variant/4/486_2.png and b/public/images/pokemon/icons/variant/4/486_2.png differ diff --git a/public/images/pokemon/icons/variant/4/486_3.png b/public/images/pokemon/icons/variant/4/486_3.png index cf33b01869a..acb27af55e3 100644 Binary files a/public/images/pokemon/icons/variant/4/486_3.png and b/public/images/pokemon/icons/variant/4/486_3.png differ diff --git a/public/images/pokemon/icons/variant/4/487-altered_2.png b/public/images/pokemon/icons/variant/4/487-altered_2.png index d9cbea5e323..a905ee807dc 100644 Binary files a/public/images/pokemon/icons/variant/4/487-altered_2.png and b/public/images/pokemon/icons/variant/4/487-altered_2.png differ diff --git a/public/images/pokemon/icons/variant/4/487-altered_3.png b/public/images/pokemon/icons/variant/4/487-altered_3.png index 59169ab9de8..1fbd691b298 100644 Binary files a/public/images/pokemon/icons/variant/4/487-altered_3.png and b/public/images/pokemon/icons/variant/4/487-altered_3.png differ diff --git a/public/images/pokemon/icons/variant/4/487-origin_2.png b/public/images/pokemon/icons/variant/4/487-origin_2.png index 61f322ac409..4f78e918c57 100644 Binary files a/public/images/pokemon/icons/variant/4/487-origin_2.png and b/public/images/pokemon/icons/variant/4/487-origin_2.png differ diff --git a/public/images/pokemon/icons/variant/4/487-origin_3.png b/public/images/pokemon/icons/variant/4/487-origin_3.png index e8fe8f61634..d7598d0ee1f 100644 Binary files a/public/images/pokemon/icons/variant/4/487-origin_3.png and b/public/images/pokemon/icons/variant/4/487-origin_3.png differ diff --git a/public/images/pokemon/icons/variant/4/488_2.png b/public/images/pokemon/icons/variant/4/488_2.png index 400a2d2d065..c17f7b18f69 100644 Binary files a/public/images/pokemon/icons/variant/4/488_2.png and b/public/images/pokemon/icons/variant/4/488_2.png differ diff --git a/public/images/pokemon/icons/variant/4/488_3.png b/public/images/pokemon/icons/variant/4/488_3.png index 595ceb54f82..8f5cdd1273a 100644 Binary files a/public/images/pokemon/icons/variant/4/488_3.png and b/public/images/pokemon/icons/variant/4/488_3.png differ diff --git a/public/images/pokemon/icons/variant/4/489_1.png b/public/images/pokemon/icons/variant/4/489_1.png index 9cb6e03888a..c83182e376e 100644 Binary files a/public/images/pokemon/icons/variant/4/489_1.png and b/public/images/pokemon/icons/variant/4/489_1.png differ diff --git a/public/images/pokemon/icons/variant/4/489_2.png b/public/images/pokemon/icons/variant/4/489_2.png index b4e32fe5259..1152d260d06 100644 Binary files a/public/images/pokemon/icons/variant/4/489_2.png and b/public/images/pokemon/icons/variant/4/489_2.png differ diff --git a/public/images/pokemon/icons/variant/4/489_3.png b/public/images/pokemon/icons/variant/4/489_3.png index 428156638bf..2f3031a9474 100644 Binary files a/public/images/pokemon/icons/variant/4/489_3.png and b/public/images/pokemon/icons/variant/4/489_3.png differ diff --git a/public/images/pokemon/icons/variant/4/490_1.png b/public/images/pokemon/icons/variant/4/490_1.png index 1fda8d15b43..2cff1ecf157 100644 Binary files a/public/images/pokemon/icons/variant/4/490_1.png and b/public/images/pokemon/icons/variant/4/490_1.png differ diff --git a/public/images/pokemon/icons/variant/4/490_2.png b/public/images/pokemon/icons/variant/4/490_2.png index b9014e88e18..f316c1b6344 100644 Binary files a/public/images/pokemon/icons/variant/4/490_2.png and b/public/images/pokemon/icons/variant/4/490_2.png differ diff --git a/public/images/pokemon/icons/variant/4/490_3.png b/public/images/pokemon/icons/variant/4/490_3.png index 87a055c99e0..5e686d919b0 100644 Binary files a/public/images/pokemon/icons/variant/4/490_3.png and b/public/images/pokemon/icons/variant/4/490_3.png differ diff --git a/public/images/pokemon/icons/variant/4/491_2.png b/public/images/pokemon/icons/variant/4/491_2.png index e5e8ed579be..a1467c54d04 100644 Binary files a/public/images/pokemon/icons/variant/4/491_2.png and b/public/images/pokemon/icons/variant/4/491_2.png differ diff --git a/public/images/pokemon/icons/variant/4/491_3.png b/public/images/pokemon/icons/variant/4/491_3.png index 630f7c57c09..397db52d1e9 100644 Binary files a/public/images/pokemon/icons/variant/4/491_3.png and b/public/images/pokemon/icons/variant/4/491_3.png differ diff --git a/public/images/pokemon/icons/variant/4/492-land_2.png b/public/images/pokemon/icons/variant/4/492-land_2.png index fdb71a83687..7f7fa4c069d 100644 Binary files a/public/images/pokemon/icons/variant/4/492-land_2.png and b/public/images/pokemon/icons/variant/4/492-land_2.png differ diff --git a/public/images/pokemon/icons/variant/4/492-land_3.png b/public/images/pokemon/icons/variant/4/492-land_3.png index 0262fb96375..908563fbbd4 100644 Binary files a/public/images/pokemon/icons/variant/4/492-land_3.png and b/public/images/pokemon/icons/variant/4/492-land_3.png differ diff --git a/public/images/pokemon/icons/variant/4/492-sky_2.png b/public/images/pokemon/icons/variant/4/492-sky_2.png index 6c704ab6089..cbf3d653870 100644 Binary files a/public/images/pokemon/icons/variant/4/492-sky_2.png and b/public/images/pokemon/icons/variant/4/492-sky_2.png differ diff --git a/public/images/pokemon/icons/variant/4/492-sky_3.png b/public/images/pokemon/icons/variant/4/492-sky_3.png index bd18e72a73d..fe63db91214 100644 Binary files a/public/images/pokemon/icons/variant/4/492-sky_3.png and b/public/images/pokemon/icons/variant/4/492-sky_3.png differ diff --git a/public/images/pokemon/icons/variant/5/494_2.png b/public/images/pokemon/icons/variant/5/494_2.png index bf0c810d1f8..4ac08d603d3 100644 Binary files a/public/images/pokemon/icons/variant/5/494_2.png and b/public/images/pokemon/icons/variant/5/494_2.png differ diff --git a/public/images/pokemon/icons/variant/5/494_3.png b/public/images/pokemon/icons/variant/5/494_3.png index 49a0c349338..0da88b5fa52 100644 Binary files a/public/images/pokemon/icons/variant/5/494_3.png and b/public/images/pokemon/icons/variant/5/494_3.png differ diff --git a/public/images/pokemon/icons/variant/5/495_2.png b/public/images/pokemon/icons/variant/5/495_2.png index f25803707c5..520a7db24cd 100644 Binary files a/public/images/pokemon/icons/variant/5/495_2.png and b/public/images/pokemon/icons/variant/5/495_2.png differ diff --git a/public/images/pokemon/icons/variant/5/495_3.png b/public/images/pokemon/icons/variant/5/495_3.png index f8aa4640b94..6c11914100d 100644 Binary files a/public/images/pokemon/icons/variant/5/495_3.png and b/public/images/pokemon/icons/variant/5/495_3.png differ diff --git a/public/images/pokemon/icons/variant/5/496_2.png b/public/images/pokemon/icons/variant/5/496_2.png index 7afe5afd0d8..ae73b53f6a1 100644 Binary files a/public/images/pokemon/icons/variant/5/496_2.png and b/public/images/pokemon/icons/variant/5/496_2.png differ diff --git a/public/images/pokemon/icons/variant/5/496_3.png b/public/images/pokemon/icons/variant/5/496_3.png index bcda92b7564..2d658557ca6 100644 Binary files a/public/images/pokemon/icons/variant/5/496_3.png and b/public/images/pokemon/icons/variant/5/496_3.png differ diff --git a/public/images/pokemon/icons/variant/5/497_2.png b/public/images/pokemon/icons/variant/5/497_2.png index ab85a310ff6..ff697c4f998 100644 Binary files a/public/images/pokemon/icons/variant/5/497_2.png and b/public/images/pokemon/icons/variant/5/497_2.png differ diff --git a/public/images/pokemon/icons/variant/5/497_3.png b/public/images/pokemon/icons/variant/5/497_3.png index d901b5060d3..d407cde5861 100644 Binary files a/public/images/pokemon/icons/variant/5/497_3.png and b/public/images/pokemon/icons/variant/5/497_3.png differ diff --git a/public/images/pokemon/icons/variant/5/498_2.png b/public/images/pokemon/icons/variant/5/498_2.png index 568e7ff7670..f30fbd396dd 100644 Binary files a/public/images/pokemon/icons/variant/5/498_2.png and b/public/images/pokemon/icons/variant/5/498_2.png differ diff --git a/public/images/pokemon/icons/variant/5/498_3.png b/public/images/pokemon/icons/variant/5/498_3.png index d592f83c9be..273faea133d 100644 Binary files a/public/images/pokemon/icons/variant/5/498_3.png and b/public/images/pokemon/icons/variant/5/498_3.png differ diff --git a/public/images/pokemon/icons/variant/5/499_2.png b/public/images/pokemon/icons/variant/5/499_2.png index 992d5edb00a..ca1bc8c3a14 100644 Binary files a/public/images/pokemon/icons/variant/5/499_2.png and b/public/images/pokemon/icons/variant/5/499_2.png differ diff --git a/public/images/pokemon/icons/variant/5/499_3.png b/public/images/pokemon/icons/variant/5/499_3.png index 151185e4556..ecc0d07639f 100644 Binary files a/public/images/pokemon/icons/variant/5/499_3.png and b/public/images/pokemon/icons/variant/5/499_3.png differ diff --git a/public/images/pokemon/icons/variant/5/500_2.png b/public/images/pokemon/icons/variant/5/500_2.png index e8b8e88c46e..e76e33a214a 100644 Binary files a/public/images/pokemon/icons/variant/5/500_2.png and b/public/images/pokemon/icons/variant/5/500_2.png differ diff --git a/public/images/pokemon/icons/variant/5/500_3.png b/public/images/pokemon/icons/variant/5/500_3.png index ad82f3d6ced..0a5ed7dc8b9 100644 Binary files a/public/images/pokemon/icons/variant/5/500_3.png and b/public/images/pokemon/icons/variant/5/500_3.png differ diff --git a/public/images/pokemon/icons/variant/5/501_2.png b/public/images/pokemon/icons/variant/5/501_2.png index d92f57a8399..9604c004c62 100644 Binary files a/public/images/pokemon/icons/variant/5/501_2.png and b/public/images/pokemon/icons/variant/5/501_2.png differ diff --git a/public/images/pokemon/icons/variant/5/501_3.png b/public/images/pokemon/icons/variant/5/501_3.png index 50bbb59a545..97cba941beb 100644 Binary files a/public/images/pokemon/icons/variant/5/501_3.png and b/public/images/pokemon/icons/variant/5/501_3.png differ diff --git a/public/images/pokemon/icons/variant/5/502_2.png b/public/images/pokemon/icons/variant/5/502_2.png index 3d327da2129..7a79f78c435 100644 Binary files a/public/images/pokemon/icons/variant/5/502_2.png and b/public/images/pokemon/icons/variant/5/502_2.png differ diff --git a/public/images/pokemon/icons/variant/5/502_3.png b/public/images/pokemon/icons/variant/5/502_3.png index a10810daed9..a086e888724 100644 Binary files a/public/images/pokemon/icons/variant/5/502_3.png and b/public/images/pokemon/icons/variant/5/502_3.png differ diff --git a/public/images/pokemon/icons/variant/5/503_2.png b/public/images/pokemon/icons/variant/5/503_2.png index b3611139d87..b727c8efb3c 100644 Binary files a/public/images/pokemon/icons/variant/5/503_2.png and b/public/images/pokemon/icons/variant/5/503_2.png differ diff --git a/public/images/pokemon/icons/variant/5/503_3.png b/public/images/pokemon/icons/variant/5/503_3.png index da3aa967ab5..a2b0b4a3320 100644 Binary files a/public/images/pokemon/icons/variant/5/503_3.png and b/public/images/pokemon/icons/variant/5/503_3.png differ diff --git a/public/images/pokemon/icons/variant/5/511_2.png b/public/images/pokemon/icons/variant/5/511_2.png index eea1484725e..112d948d59e 100644 Binary files a/public/images/pokemon/icons/variant/5/511_2.png and b/public/images/pokemon/icons/variant/5/511_2.png differ diff --git a/public/images/pokemon/icons/variant/5/511_3.png b/public/images/pokemon/icons/variant/5/511_3.png index fc434170eb2..1573398a51d 100644 Binary files a/public/images/pokemon/icons/variant/5/511_3.png and b/public/images/pokemon/icons/variant/5/511_3.png differ diff --git a/public/images/pokemon/icons/variant/5/512_2.png b/public/images/pokemon/icons/variant/5/512_2.png index b9e0a45c06c..2c5ded39b0a 100644 Binary files a/public/images/pokemon/icons/variant/5/512_2.png and b/public/images/pokemon/icons/variant/5/512_2.png differ diff --git a/public/images/pokemon/icons/variant/5/512_3.png b/public/images/pokemon/icons/variant/5/512_3.png index 1a53cc12d26..39aba477457 100644 Binary files a/public/images/pokemon/icons/variant/5/512_3.png and b/public/images/pokemon/icons/variant/5/512_3.png differ diff --git a/public/images/pokemon/icons/variant/5/513_2.png b/public/images/pokemon/icons/variant/5/513_2.png index 305903f3162..400965778d9 100644 Binary files a/public/images/pokemon/icons/variant/5/513_2.png and b/public/images/pokemon/icons/variant/5/513_2.png differ diff --git a/public/images/pokemon/icons/variant/5/513_3.png b/public/images/pokemon/icons/variant/5/513_3.png index 6c4592a0f54..07085cbb097 100644 Binary files a/public/images/pokemon/icons/variant/5/513_3.png and b/public/images/pokemon/icons/variant/5/513_3.png differ diff --git a/public/images/pokemon/icons/variant/5/514_2.png b/public/images/pokemon/icons/variant/5/514_2.png index 5e39da4c7f7..c612a9c1ddb 100644 Binary files a/public/images/pokemon/icons/variant/5/514_2.png and b/public/images/pokemon/icons/variant/5/514_2.png differ diff --git a/public/images/pokemon/icons/variant/5/514_3.png b/public/images/pokemon/icons/variant/5/514_3.png index ea6224485ce..cb5dd21920c 100644 Binary files a/public/images/pokemon/icons/variant/5/514_3.png and b/public/images/pokemon/icons/variant/5/514_3.png differ diff --git a/public/images/pokemon/icons/variant/5/515_2.png b/public/images/pokemon/icons/variant/5/515_2.png index 3d8af4a569f..6624aa8ad76 100644 Binary files a/public/images/pokemon/icons/variant/5/515_2.png and b/public/images/pokemon/icons/variant/5/515_2.png differ diff --git a/public/images/pokemon/icons/variant/5/515_3.png b/public/images/pokemon/icons/variant/5/515_3.png index bfd1a9e0011..a19c6614ecc 100644 Binary files a/public/images/pokemon/icons/variant/5/515_3.png and b/public/images/pokemon/icons/variant/5/515_3.png differ diff --git a/public/images/pokemon/icons/variant/5/516_2.png b/public/images/pokemon/icons/variant/5/516_2.png index 23257ea2c6f..e8946f86121 100644 Binary files a/public/images/pokemon/icons/variant/5/516_2.png and b/public/images/pokemon/icons/variant/5/516_2.png differ diff --git a/public/images/pokemon/icons/variant/5/516_3.png b/public/images/pokemon/icons/variant/5/516_3.png index 78cb41df064..3d88d287ef7 100644 Binary files a/public/images/pokemon/icons/variant/5/516_3.png and b/public/images/pokemon/icons/variant/5/516_3.png differ diff --git a/public/images/pokemon/icons/variant/5/517_2.png b/public/images/pokemon/icons/variant/5/517_2.png index c68cadf2269..7f81a253b3c 100644 Binary files a/public/images/pokemon/icons/variant/5/517_2.png and b/public/images/pokemon/icons/variant/5/517_2.png differ diff --git a/public/images/pokemon/icons/variant/5/517_3.png b/public/images/pokemon/icons/variant/5/517_3.png index 88e56af0b32..301809801b7 100644 Binary files a/public/images/pokemon/icons/variant/5/517_3.png and b/public/images/pokemon/icons/variant/5/517_3.png differ diff --git a/public/images/pokemon/icons/variant/5/518_2.png b/public/images/pokemon/icons/variant/5/518_2.png index 404cfc19668..3a19b11bc0d 100644 Binary files a/public/images/pokemon/icons/variant/5/518_2.png and b/public/images/pokemon/icons/variant/5/518_2.png differ diff --git a/public/images/pokemon/icons/variant/5/518_3.png b/public/images/pokemon/icons/variant/5/518_3.png index bf2f0711f82..78a95f927f5 100644 Binary files a/public/images/pokemon/icons/variant/5/518_3.png and b/public/images/pokemon/icons/variant/5/518_3.png differ diff --git a/public/images/pokemon/icons/variant/5/522_2.png b/public/images/pokemon/icons/variant/5/522_2.png index 111054ca1ab..672f98b9d65 100644 Binary files a/public/images/pokemon/icons/variant/5/522_2.png and b/public/images/pokemon/icons/variant/5/522_2.png differ diff --git a/public/images/pokemon/icons/variant/5/522_3.png b/public/images/pokemon/icons/variant/5/522_3.png index 03476f89139..5939495738c 100644 Binary files a/public/images/pokemon/icons/variant/5/522_3.png and b/public/images/pokemon/icons/variant/5/522_3.png differ diff --git a/public/images/pokemon/icons/variant/5/523_2.png b/public/images/pokemon/icons/variant/5/523_2.png index 238e8d64594..959331f67e5 100644 Binary files a/public/images/pokemon/icons/variant/5/523_2.png and b/public/images/pokemon/icons/variant/5/523_2.png differ diff --git a/public/images/pokemon/icons/variant/5/523_3.png b/public/images/pokemon/icons/variant/5/523_3.png index e2b12513061..26022de5b3c 100644 Binary files a/public/images/pokemon/icons/variant/5/523_3.png and b/public/images/pokemon/icons/variant/5/523_3.png differ diff --git a/public/images/pokemon/icons/variant/5/524_2.png b/public/images/pokemon/icons/variant/5/524_2.png index a93dcb3c02f..167806b09e4 100644 Binary files a/public/images/pokemon/icons/variant/5/524_2.png and b/public/images/pokemon/icons/variant/5/524_2.png differ diff --git a/public/images/pokemon/icons/variant/5/524_3.png b/public/images/pokemon/icons/variant/5/524_3.png index 25f6deb2438..88355b19f3c 100644 Binary files a/public/images/pokemon/icons/variant/5/524_3.png and b/public/images/pokemon/icons/variant/5/524_3.png differ diff --git a/public/images/pokemon/icons/variant/5/525_2.png b/public/images/pokemon/icons/variant/5/525_2.png index 794d8596d0d..00d23a9f039 100644 Binary files a/public/images/pokemon/icons/variant/5/525_2.png and b/public/images/pokemon/icons/variant/5/525_2.png differ diff --git a/public/images/pokemon/icons/variant/5/525_3.png b/public/images/pokemon/icons/variant/5/525_3.png index 8b96d696d69..40a0fb8fa9a 100644 Binary files a/public/images/pokemon/icons/variant/5/525_3.png and b/public/images/pokemon/icons/variant/5/525_3.png differ diff --git a/public/images/pokemon/icons/variant/5/526_2.png b/public/images/pokemon/icons/variant/5/526_2.png index 13b1cf0d0ac..c3b7ee1c1d1 100644 Binary files a/public/images/pokemon/icons/variant/5/526_2.png and b/public/images/pokemon/icons/variant/5/526_2.png differ diff --git a/public/images/pokemon/icons/variant/5/526_3.png b/public/images/pokemon/icons/variant/5/526_3.png index e563cfc41be..ff3ab4a1f92 100644 Binary files a/public/images/pokemon/icons/variant/5/526_3.png and b/public/images/pokemon/icons/variant/5/526_3.png differ diff --git a/public/images/pokemon/icons/variant/5/527_2.png b/public/images/pokemon/icons/variant/5/527_2.png index 3a0b284bfde..5929fd45309 100644 Binary files a/public/images/pokemon/icons/variant/5/527_2.png and b/public/images/pokemon/icons/variant/5/527_2.png differ diff --git a/public/images/pokemon/icons/variant/5/527_3.png b/public/images/pokemon/icons/variant/5/527_3.png index 39b54a23b1e..8936b76b780 100644 Binary files a/public/images/pokemon/icons/variant/5/527_3.png and b/public/images/pokemon/icons/variant/5/527_3.png differ diff --git a/public/images/pokemon/icons/variant/5/528_2.png b/public/images/pokemon/icons/variant/5/528_2.png index 4d209760134..5be88cbe7a8 100644 Binary files a/public/images/pokemon/icons/variant/5/528_2.png and b/public/images/pokemon/icons/variant/5/528_2.png differ diff --git a/public/images/pokemon/icons/variant/5/528_3.png b/public/images/pokemon/icons/variant/5/528_3.png index 1c887443660..4e79b3dfb45 100644 Binary files a/public/images/pokemon/icons/variant/5/528_3.png and b/public/images/pokemon/icons/variant/5/528_3.png differ diff --git a/public/images/pokemon/icons/variant/5/529_2.png b/public/images/pokemon/icons/variant/5/529_2.png index 69314ea54c8..8a9257fd4b7 100644 Binary files a/public/images/pokemon/icons/variant/5/529_2.png and b/public/images/pokemon/icons/variant/5/529_2.png differ diff --git a/public/images/pokemon/icons/variant/5/529_3.png b/public/images/pokemon/icons/variant/5/529_3.png index 07b809d0c26..6c2c36a7fb0 100644 Binary files a/public/images/pokemon/icons/variant/5/529_3.png and b/public/images/pokemon/icons/variant/5/529_3.png differ diff --git a/public/images/pokemon/icons/variant/5/530_2.png b/public/images/pokemon/icons/variant/5/530_2.png index ec7bcd42b04..1ba70bf662c 100644 Binary files a/public/images/pokemon/icons/variant/5/530_2.png and b/public/images/pokemon/icons/variant/5/530_2.png differ diff --git a/public/images/pokemon/icons/variant/5/530_3.png b/public/images/pokemon/icons/variant/5/530_3.png index fefebf87fd5..5d75119b5d7 100644 Binary files a/public/images/pokemon/icons/variant/5/530_3.png and b/public/images/pokemon/icons/variant/5/530_3.png differ diff --git a/public/images/pokemon/icons/variant/5/531-mega_2.png b/public/images/pokemon/icons/variant/5/531-mega_2.png index cd23fd25f62..80a02f1d67d 100644 Binary files a/public/images/pokemon/icons/variant/5/531-mega_2.png and b/public/images/pokemon/icons/variant/5/531-mega_2.png differ diff --git a/public/images/pokemon/icons/variant/5/531-mega_3.png b/public/images/pokemon/icons/variant/5/531-mega_3.png index a787eeae6ae..75ddc3f8747 100644 Binary files a/public/images/pokemon/icons/variant/5/531-mega_3.png and b/public/images/pokemon/icons/variant/5/531-mega_3.png differ diff --git a/public/images/pokemon/icons/variant/5/531_2.png b/public/images/pokemon/icons/variant/5/531_2.png index 3fa450360de..938d6ffc35c 100644 Binary files a/public/images/pokemon/icons/variant/5/531_2.png and b/public/images/pokemon/icons/variant/5/531_2.png differ diff --git a/public/images/pokemon/icons/variant/5/531_3.png b/public/images/pokemon/icons/variant/5/531_3.png index 24c3ad108c6..c73c30d2652 100644 Binary files a/public/images/pokemon/icons/variant/5/531_3.png and b/public/images/pokemon/icons/variant/5/531_3.png differ diff --git a/public/images/pokemon/icons/variant/5/532_2.png b/public/images/pokemon/icons/variant/5/532_2.png index 81c5ccccd02..ea2d6c174b6 100644 Binary files a/public/images/pokemon/icons/variant/5/532_2.png and b/public/images/pokemon/icons/variant/5/532_2.png differ diff --git a/public/images/pokemon/icons/variant/5/532_3.png b/public/images/pokemon/icons/variant/5/532_3.png index 276b7da7bac..4fe3ba40dcb 100644 Binary files a/public/images/pokemon/icons/variant/5/532_3.png and b/public/images/pokemon/icons/variant/5/532_3.png differ diff --git a/public/images/pokemon/icons/variant/5/533_2.png b/public/images/pokemon/icons/variant/5/533_2.png index 0a0e58b5af5..7a41e81ce2d 100644 Binary files a/public/images/pokemon/icons/variant/5/533_2.png and b/public/images/pokemon/icons/variant/5/533_2.png differ diff --git a/public/images/pokemon/icons/variant/5/533_3.png b/public/images/pokemon/icons/variant/5/533_3.png index abfa6b61c91..337755dc181 100644 Binary files a/public/images/pokemon/icons/variant/5/533_3.png and b/public/images/pokemon/icons/variant/5/533_3.png differ diff --git a/public/images/pokemon/icons/variant/5/534_2.png b/public/images/pokemon/icons/variant/5/534_2.png index 19a37ec320e..e0e9c6b514f 100644 Binary files a/public/images/pokemon/icons/variant/5/534_2.png and b/public/images/pokemon/icons/variant/5/534_2.png differ diff --git a/public/images/pokemon/icons/variant/5/534_3.png b/public/images/pokemon/icons/variant/5/534_3.png index bb5716edede..689280945ca 100644 Binary files a/public/images/pokemon/icons/variant/5/534_3.png and b/public/images/pokemon/icons/variant/5/534_3.png differ diff --git a/public/images/pokemon/icons/variant/5/535_2.png b/public/images/pokemon/icons/variant/5/535_2.png index 6f2f8a77136..aad0836a39a 100644 Binary files a/public/images/pokemon/icons/variant/5/535_2.png and b/public/images/pokemon/icons/variant/5/535_2.png differ diff --git a/public/images/pokemon/icons/variant/5/535_3.png b/public/images/pokemon/icons/variant/5/535_3.png index b97481faa8f..f4479d6aaa2 100644 Binary files a/public/images/pokemon/icons/variant/5/535_3.png and b/public/images/pokemon/icons/variant/5/535_3.png differ diff --git a/public/images/pokemon/icons/variant/5/536_2.png b/public/images/pokemon/icons/variant/5/536_2.png index 36a4a17dd2b..84ecf04f632 100644 Binary files a/public/images/pokemon/icons/variant/5/536_2.png and b/public/images/pokemon/icons/variant/5/536_2.png differ diff --git a/public/images/pokemon/icons/variant/5/536_3.png b/public/images/pokemon/icons/variant/5/536_3.png index 282864d38e9..845eec93616 100644 Binary files a/public/images/pokemon/icons/variant/5/536_3.png and b/public/images/pokemon/icons/variant/5/536_3.png differ diff --git a/public/images/pokemon/icons/variant/5/537_2.png b/public/images/pokemon/icons/variant/5/537_2.png index 599752ff7f1..67160991235 100644 Binary files a/public/images/pokemon/icons/variant/5/537_2.png and b/public/images/pokemon/icons/variant/5/537_2.png differ diff --git a/public/images/pokemon/icons/variant/5/537_3.png b/public/images/pokemon/icons/variant/5/537_3.png index 229dd83c8ce..42eefa7ecbc 100644 Binary files a/public/images/pokemon/icons/variant/5/537_3.png and b/public/images/pokemon/icons/variant/5/537_3.png differ diff --git a/public/images/pokemon/icons/variant/5/538_2.png b/public/images/pokemon/icons/variant/5/538_2.png index 0dac902463e..c26c96b5680 100644 Binary files a/public/images/pokemon/icons/variant/5/538_2.png and b/public/images/pokemon/icons/variant/5/538_2.png differ diff --git a/public/images/pokemon/icons/variant/5/538_3.png b/public/images/pokemon/icons/variant/5/538_3.png index 9793c9d7895..e2e79594f72 100644 Binary files a/public/images/pokemon/icons/variant/5/538_3.png and b/public/images/pokemon/icons/variant/5/538_3.png differ diff --git a/public/images/pokemon/icons/variant/5/539_2.png b/public/images/pokemon/icons/variant/5/539_2.png index 7e8788e5c4f..fe84a339729 100644 Binary files a/public/images/pokemon/icons/variant/5/539_2.png and b/public/images/pokemon/icons/variant/5/539_2.png differ diff --git a/public/images/pokemon/icons/variant/5/539_3.png b/public/images/pokemon/icons/variant/5/539_3.png index 3a35765d370..63f460e6e16 100644 Binary files a/public/images/pokemon/icons/variant/5/539_3.png and b/public/images/pokemon/icons/variant/5/539_3.png differ diff --git a/public/images/pokemon/icons/variant/5/540_2.png b/public/images/pokemon/icons/variant/5/540_2.png index 26123ac72c3..45db09c740f 100644 Binary files a/public/images/pokemon/icons/variant/5/540_2.png and b/public/images/pokemon/icons/variant/5/540_2.png differ diff --git a/public/images/pokemon/icons/variant/5/540_3.png b/public/images/pokemon/icons/variant/5/540_3.png index 3089a82cb9d..855fc6ddac8 100644 Binary files a/public/images/pokemon/icons/variant/5/540_3.png and b/public/images/pokemon/icons/variant/5/540_3.png differ diff --git a/public/images/pokemon/icons/variant/5/541_2.png b/public/images/pokemon/icons/variant/5/541_2.png index 6e14cea1d65..d092871721e 100644 Binary files a/public/images/pokemon/icons/variant/5/541_2.png and b/public/images/pokemon/icons/variant/5/541_2.png differ diff --git a/public/images/pokemon/icons/variant/5/541_3.png b/public/images/pokemon/icons/variant/5/541_3.png index f691017ebc6..2d9f6e6b39f 100644 Binary files a/public/images/pokemon/icons/variant/5/541_3.png and b/public/images/pokemon/icons/variant/5/541_3.png differ diff --git a/public/images/pokemon/icons/variant/5/542_2.png b/public/images/pokemon/icons/variant/5/542_2.png index c6fab880eee..72f340cac56 100644 Binary files a/public/images/pokemon/icons/variant/5/542_2.png and b/public/images/pokemon/icons/variant/5/542_2.png differ diff --git a/public/images/pokemon/icons/variant/5/542_3.png b/public/images/pokemon/icons/variant/5/542_3.png index ed2c5a0dbef..0a4834c864d 100644 Binary files a/public/images/pokemon/icons/variant/5/542_3.png and b/public/images/pokemon/icons/variant/5/542_3.png differ diff --git a/public/images/pokemon/icons/variant/5/543_2.png b/public/images/pokemon/icons/variant/5/543_2.png index 2d76a56ac2a..9c1b556d36a 100644 Binary files a/public/images/pokemon/icons/variant/5/543_2.png and b/public/images/pokemon/icons/variant/5/543_2.png differ diff --git a/public/images/pokemon/icons/variant/5/543_3.png b/public/images/pokemon/icons/variant/5/543_3.png index 1317d38d215..f4ce329f824 100644 Binary files a/public/images/pokemon/icons/variant/5/543_3.png and b/public/images/pokemon/icons/variant/5/543_3.png differ diff --git a/public/images/pokemon/icons/variant/5/544_2.png b/public/images/pokemon/icons/variant/5/544_2.png index 6feebe2493b..1119ebfbce7 100644 Binary files a/public/images/pokemon/icons/variant/5/544_2.png and b/public/images/pokemon/icons/variant/5/544_2.png differ diff --git a/public/images/pokemon/icons/variant/5/544_3.png b/public/images/pokemon/icons/variant/5/544_3.png index 8afd2655ad6..da58c7ce415 100644 Binary files a/public/images/pokemon/icons/variant/5/544_3.png and b/public/images/pokemon/icons/variant/5/544_3.png differ diff --git a/public/images/pokemon/icons/variant/5/545_2.png b/public/images/pokemon/icons/variant/5/545_2.png index a081772bcf6..0cc35692283 100644 Binary files a/public/images/pokemon/icons/variant/5/545_2.png and b/public/images/pokemon/icons/variant/5/545_2.png differ diff --git a/public/images/pokemon/icons/variant/5/545_3.png b/public/images/pokemon/icons/variant/5/545_3.png index 17cbab0624e..5e5c4e6658b 100644 Binary files a/public/images/pokemon/icons/variant/5/545_3.png and b/public/images/pokemon/icons/variant/5/545_3.png differ diff --git a/public/images/pokemon/icons/variant/5/546_2.png b/public/images/pokemon/icons/variant/5/546_2.png index 3b5ab0b300b..80a03bc7c91 100644 Binary files a/public/images/pokemon/icons/variant/5/546_2.png and b/public/images/pokemon/icons/variant/5/546_2.png differ diff --git a/public/images/pokemon/icons/variant/5/546_3.png b/public/images/pokemon/icons/variant/5/546_3.png index 2bc5d147c8c..cec5a843444 100644 Binary files a/public/images/pokemon/icons/variant/5/546_3.png and b/public/images/pokemon/icons/variant/5/546_3.png differ diff --git a/public/images/pokemon/icons/variant/5/547_2.png b/public/images/pokemon/icons/variant/5/547_2.png index 2294b11332a..34737f7cee3 100644 Binary files a/public/images/pokemon/icons/variant/5/547_2.png and b/public/images/pokemon/icons/variant/5/547_2.png differ diff --git a/public/images/pokemon/icons/variant/5/547_3.png b/public/images/pokemon/icons/variant/5/547_3.png index 1af57cc099a..8ad2b857984 100644 Binary files a/public/images/pokemon/icons/variant/5/547_3.png and b/public/images/pokemon/icons/variant/5/547_3.png differ diff --git a/public/images/pokemon/icons/variant/5/548_1.png b/public/images/pokemon/icons/variant/5/548_1.png index ee99f5110f2..053d956c025 100644 Binary files a/public/images/pokemon/icons/variant/5/548_1.png and b/public/images/pokemon/icons/variant/5/548_1.png differ diff --git a/public/images/pokemon/icons/variant/5/548_2.png b/public/images/pokemon/icons/variant/5/548_2.png index aafa94dc525..2e7c4c236b7 100644 Binary files a/public/images/pokemon/icons/variant/5/548_2.png and b/public/images/pokemon/icons/variant/5/548_2.png differ diff --git a/public/images/pokemon/icons/variant/5/548_3.png b/public/images/pokemon/icons/variant/5/548_3.png index 4b31b7c0bdd..bd0082283cd 100644 Binary files a/public/images/pokemon/icons/variant/5/548_3.png and b/public/images/pokemon/icons/variant/5/548_3.png differ diff --git a/public/images/pokemon/icons/variant/5/549_2.png b/public/images/pokemon/icons/variant/5/549_2.png index 9dbb35707b5..4757037fe86 100644 Binary files a/public/images/pokemon/icons/variant/5/549_2.png and b/public/images/pokemon/icons/variant/5/549_2.png differ diff --git a/public/images/pokemon/icons/variant/5/549_3.png b/public/images/pokemon/icons/variant/5/549_3.png index ef8dba0f5be..50f0fd78704 100644 Binary files a/public/images/pokemon/icons/variant/5/549_3.png and b/public/images/pokemon/icons/variant/5/549_3.png differ diff --git a/public/images/pokemon/icons/variant/5/551_2.png b/public/images/pokemon/icons/variant/5/551_2.png index ae2b2cd7f8a..4280243edd8 100644 Binary files a/public/images/pokemon/icons/variant/5/551_2.png and b/public/images/pokemon/icons/variant/5/551_2.png differ diff --git a/public/images/pokemon/icons/variant/5/551_3.png b/public/images/pokemon/icons/variant/5/551_3.png index a7992294947..a5ac440fddb 100644 Binary files a/public/images/pokemon/icons/variant/5/551_3.png and b/public/images/pokemon/icons/variant/5/551_3.png differ diff --git a/public/images/pokemon/icons/variant/5/552_2.png b/public/images/pokemon/icons/variant/5/552_2.png index 4b088ca0a19..c96e673c955 100644 Binary files a/public/images/pokemon/icons/variant/5/552_2.png and b/public/images/pokemon/icons/variant/5/552_2.png differ diff --git a/public/images/pokemon/icons/variant/5/552_3.png b/public/images/pokemon/icons/variant/5/552_3.png index 8c07fda33d6..68233b495b7 100644 Binary files a/public/images/pokemon/icons/variant/5/552_3.png and b/public/images/pokemon/icons/variant/5/552_3.png differ diff --git a/public/images/pokemon/icons/variant/5/553_2.png b/public/images/pokemon/icons/variant/5/553_2.png index 15ffd4fbcc3..77439eb5bf8 100644 Binary files a/public/images/pokemon/icons/variant/5/553_2.png and b/public/images/pokemon/icons/variant/5/553_2.png differ diff --git a/public/images/pokemon/icons/variant/5/553_3.png b/public/images/pokemon/icons/variant/5/553_3.png index ed4f333684f..1fa641f8dae 100644 Binary files a/public/images/pokemon/icons/variant/5/553_3.png and b/public/images/pokemon/icons/variant/5/553_3.png differ diff --git a/public/images/pokemon/icons/variant/5/554_2.png b/public/images/pokemon/icons/variant/5/554_2.png index 8f5df20db65..b8e5d8079ba 100644 Binary files a/public/images/pokemon/icons/variant/5/554_2.png and b/public/images/pokemon/icons/variant/5/554_2.png differ diff --git a/public/images/pokemon/icons/variant/5/554_3.png b/public/images/pokemon/icons/variant/5/554_3.png index 6827ee2b478..7fbaf460a33 100644 Binary files a/public/images/pokemon/icons/variant/5/554_3.png and b/public/images/pokemon/icons/variant/5/554_3.png differ diff --git a/public/images/pokemon/icons/variant/5/555-zen_2.png b/public/images/pokemon/icons/variant/5/555-zen_2.png index ae18a833759..7e09d1f992b 100644 Binary files a/public/images/pokemon/icons/variant/5/555-zen_2.png and b/public/images/pokemon/icons/variant/5/555-zen_2.png differ diff --git a/public/images/pokemon/icons/variant/5/555-zen_3.png b/public/images/pokemon/icons/variant/5/555-zen_3.png index 692e39985a6..44ebd83dca6 100644 Binary files a/public/images/pokemon/icons/variant/5/555-zen_3.png and b/public/images/pokemon/icons/variant/5/555-zen_3.png differ diff --git a/public/images/pokemon/icons/variant/5/555_2.png b/public/images/pokemon/icons/variant/5/555_2.png index f408122171a..395fe890c22 100644 Binary files a/public/images/pokemon/icons/variant/5/555_2.png and b/public/images/pokemon/icons/variant/5/555_2.png differ diff --git a/public/images/pokemon/icons/variant/5/555_3.png b/public/images/pokemon/icons/variant/5/555_3.png index 2994d3da2cf..b108ade456e 100644 Binary files a/public/images/pokemon/icons/variant/5/555_3.png and b/public/images/pokemon/icons/variant/5/555_3.png differ diff --git a/public/images/pokemon/icons/variant/5/556_2.png b/public/images/pokemon/icons/variant/5/556_2.png index 06c906d32d8..651855d40c1 100644 Binary files a/public/images/pokemon/icons/variant/5/556_2.png and b/public/images/pokemon/icons/variant/5/556_2.png differ diff --git a/public/images/pokemon/icons/variant/5/556_3.png b/public/images/pokemon/icons/variant/5/556_3.png index d617014f75f..45614ba5fe6 100644 Binary files a/public/images/pokemon/icons/variant/5/556_3.png and b/public/images/pokemon/icons/variant/5/556_3.png differ diff --git a/public/images/pokemon/icons/variant/5/559_1.png b/public/images/pokemon/icons/variant/5/559_1.png index 806899a722d..1b4f8453942 100644 Binary files a/public/images/pokemon/icons/variant/5/559_1.png and b/public/images/pokemon/icons/variant/5/559_1.png differ diff --git a/public/images/pokemon/icons/variant/5/559_2.png b/public/images/pokemon/icons/variant/5/559_2.png index 3323fc8c12f..45fd326de3c 100644 Binary files a/public/images/pokemon/icons/variant/5/559_2.png and b/public/images/pokemon/icons/variant/5/559_2.png differ diff --git a/public/images/pokemon/icons/variant/5/559_3.png b/public/images/pokemon/icons/variant/5/559_3.png index fdbb6f60687..ad774caee35 100644 Binary files a/public/images/pokemon/icons/variant/5/559_3.png and b/public/images/pokemon/icons/variant/5/559_3.png differ diff --git a/public/images/pokemon/icons/variant/5/560_1.png b/public/images/pokemon/icons/variant/5/560_1.png index 1cdbe72ed94..b486b9e30ad 100644 Binary files a/public/images/pokemon/icons/variant/5/560_1.png and b/public/images/pokemon/icons/variant/5/560_1.png differ diff --git a/public/images/pokemon/icons/variant/5/560_2.png b/public/images/pokemon/icons/variant/5/560_2.png index 8dcf14f9494..e6f0f9ed4af 100644 Binary files a/public/images/pokemon/icons/variant/5/560_2.png and b/public/images/pokemon/icons/variant/5/560_2.png differ diff --git a/public/images/pokemon/icons/variant/5/560_3.png b/public/images/pokemon/icons/variant/5/560_3.png index 10351746c23..75674b6c367 100644 Binary files a/public/images/pokemon/icons/variant/5/560_3.png and b/public/images/pokemon/icons/variant/5/560_3.png differ diff --git a/public/images/pokemon/icons/variant/5/562_2.png b/public/images/pokemon/icons/variant/5/562_2.png index 93b69b1b0d3..08bd6de4f97 100644 Binary files a/public/images/pokemon/icons/variant/5/562_2.png and b/public/images/pokemon/icons/variant/5/562_2.png differ diff --git a/public/images/pokemon/icons/variant/5/562_3.png b/public/images/pokemon/icons/variant/5/562_3.png index 094cf780759..d1a99edc458 100644 Binary files a/public/images/pokemon/icons/variant/5/562_3.png and b/public/images/pokemon/icons/variant/5/562_3.png differ diff --git a/public/images/pokemon/icons/variant/5/563_2.png b/public/images/pokemon/icons/variant/5/563_2.png index f29fa7cca6c..60683681dfc 100644 Binary files a/public/images/pokemon/icons/variant/5/563_2.png and b/public/images/pokemon/icons/variant/5/563_2.png differ diff --git a/public/images/pokemon/icons/variant/5/563_3.png b/public/images/pokemon/icons/variant/5/563_3.png index ae3bf60d3b3..56ec1163ebd 100644 Binary files a/public/images/pokemon/icons/variant/5/563_3.png and b/public/images/pokemon/icons/variant/5/563_3.png differ diff --git a/public/images/pokemon/icons/variant/5/566_2.png b/public/images/pokemon/icons/variant/5/566_2.png index 927757ac240..a1b0bc79821 100644 Binary files a/public/images/pokemon/icons/variant/5/566_2.png and b/public/images/pokemon/icons/variant/5/566_2.png differ diff --git a/public/images/pokemon/icons/variant/5/566_3.png b/public/images/pokemon/icons/variant/5/566_3.png index 450fd247d8b..98f4843bc6e 100644 Binary files a/public/images/pokemon/icons/variant/5/566_3.png and b/public/images/pokemon/icons/variant/5/566_3.png differ diff --git a/public/images/pokemon/icons/variant/5/567_2.png b/public/images/pokemon/icons/variant/5/567_2.png index 1050d13123d..4928c76e213 100644 Binary files a/public/images/pokemon/icons/variant/5/567_2.png and b/public/images/pokemon/icons/variant/5/567_2.png differ diff --git a/public/images/pokemon/icons/variant/5/567_3.png b/public/images/pokemon/icons/variant/5/567_3.png index c87f3841410..caf31832b78 100644 Binary files a/public/images/pokemon/icons/variant/5/567_3.png and b/public/images/pokemon/icons/variant/5/567_3.png differ diff --git a/public/images/pokemon/icons/variant/5/568_2.png b/public/images/pokemon/icons/variant/5/568_2.png index e1be1bb0be6..ab2c8135e09 100644 Binary files a/public/images/pokemon/icons/variant/5/568_2.png and b/public/images/pokemon/icons/variant/5/568_2.png differ diff --git a/public/images/pokemon/icons/variant/5/568_3.png b/public/images/pokemon/icons/variant/5/568_3.png index d4b17e4c9ea..bdcec0a74cc 100644 Binary files a/public/images/pokemon/icons/variant/5/568_3.png and b/public/images/pokemon/icons/variant/5/568_3.png differ diff --git a/public/images/pokemon/icons/variant/5/569-gigantamax_2.png b/public/images/pokemon/icons/variant/5/569-gigantamax_2.png index b7feb23e809..2eceba534ea 100644 Binary files a/public/images/pokemon/icons/variant/5/569-gigantamax_2.png and b/public/images/pokemon/icons/variant/5/569-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/5/569-gigantamax_3.png b/public/images/pokemon/icons/variant/5/569-gigantamax_3.png index e5b27b9718b..4e6d5d4f0c9 100644 Binary files a/public/images/pokemon/icons/variant/5/569-gigantamax_3.png and b/public/images/pokemon/icons/variant/5/569-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/5/569_2.png b/public/images/pokemon/icons/variant/5/569_2.png index bfee89a3f0c..e7c602db5e9 100644 Binary files a/public/images/pokemon/icons/variant/5/569_2.png and b/public/images/pokemon/icons/variant/5/569_2.png differ diff --git a/public/images/pokemon/icons/variant/5/569_3.png b/public/images/pokemon/icons/variant/5/569_3.png index 2fe37e3ce8a..6f6c7f79fb1 100644 Binary files a/public/images/pokemon/icons/variant/5/569_3.png and b/public/images/pokemon/icons/variant/5/569_3.png differ diff --git a/public/images/pokemon/icons/variant/5/570_2.png b/public/images/pokemon/icons/variant/5/570_2.png index c72fb971f4a..cdc87151860 100644 Binary files a/public/images/pokemon/icons/variant/5/570_2.png and b/public/images/pokemon/icons/variant/5/570_2.png differ diff --git a/public/images/pokemon/icons/variant/5/570_3.png b/public/images/pokemon/icons/variant/5/570_3.png index d68ea4261b7..c8c38357dbb 100644 Binary files a/public/images/pokemon/icons/variant/5/570_3.png and b/public/images/pokemon/icons/variant/5/570_3.png differ diff --git a/public/images/pokemon/icons/variant/5/571_2.png b/public/images/pokemon/icons/variant/5/571_2.png index 8153cdb98e9..e56997b9274 100644 Binary files a/public/images/pokemon/icons/variant/5/571_2.png and b/public/images/pokemon/icons/variant/5/571_2.png differ diff --git a/public/images/pokemon/icons/variant/5/571_3.png b/public/images/pokemon/icons/variant/5/571_3.png index f8602ad7aff..2ffb60a0de4 100644 Binary files a/public/images/pokemon/icons/variant/5/571_3.png and b/public/images/pokemon/icons/variant/5/571_3.png differ diff --git a/public/images/pokemon/icons/variant/5/572_2.png b/public/images/pokemon/icons/variant/5/572_2.png index 1da1f6b953a..d619043a417 100644 Binary files a/public/images/pokemon/icons/variant/5/572_2.png and b/public/images/pokemon/icons/variant/5/572_2.png differ diff --git a/public/images/pokemon/icons/variant/5/572_3.png b/public/images/pokemon/icons/variant/5/572_3.png index 868b7c38585..85b24a25d8e 100644 Binary files a/public/images/pokemon/icons/variant/5/572_3.png and b/public/images/pokemon/icons/variant/5/572_3.png differ diff --git a/public/images/pokemon/icons/variant/5/573_2.png b/public/images/pokemon/icons/variant/5/573_2.png index effd7070f7d..a4a136d5914 100644 Binary files a/public/images/pokemon/icons/variant/5/573_2.png and b/public/images/pokemon/icons/variant/5/573_2.png differ diff --git a/public/images/pokemon/icons/variant/5/573_3.png b/public/images/pokemon/icons/variant/5/573_3.png index 019cf83795d..bfbb45829e5 100644 Binary files a/public/images/pokemon/icons/variant/5/573_3.png and b/public/images/pokemon/icons/variant/5/573_3.png differ diff --git a/public/images/pokemon/icons/variant/5/577_1.png b/public/images/pokemon/icons/variant/5/577_1.png index 16f8a4d6640..a5fdc6846e8 100644 Binary files a/public/images/pokemon/icons/variant/5/577_1.png and b/public/images/pokemon/icons/variant/5/577_1.png differ diff --git a/public/images/pokemon/icons/variant/5/577_2.png b/public/images/pokemon/icons/variant/5/577_2.png index ac85ca5f5c3..24c4af5e7bb 100644 Binary files a/public/images/pokemon/icons/variant/5/577_2.png and b/public/images/pokemon/icons/variant/5/577_2.png differ diff --git a/public/images/pokemon/icons/variant/5/577_3.png b/public/images/pokemon/icons/variant/5/577_3.png index e2d68729a1b..b60fe158a8c 100644 Binary files a/public/images/pokemon/icons/variant/5/577_3.png and b/public/images/pokemon/icons/variant/5/577_3.png differ diff --git a/public/images/pokemon/icons/variant/5/578_1.png b/public/images/pokemon/icons/variant/5/578_1.png index 71364650cbb..9237030c2ba 100644 Binary files a/public/images/pokemon/icons/variant/5/578_1.png and b/public/images/pokemon/icons/variant/5/578_1.png differ diff --git a/public/images/pokemon/icons/variant/5/578_2.png b/public/images/pokemon/icons/variant/5/578_2.png index 7b3a54b60ce..1fedbcf63ff 100644 Binary files a/public/images/pokemon/icons/variant/5/578_2.png and b/public/images/pokemon/icons/variant/5/578_2.png differ diff --git a/public/images/pokemon/icons/variant/5/578_3.png b/public/images/pokemon/icons/variant/5/578_3.png index 27e53e15336..b3d00e0202e 100644 Binary files a/public/images/pokemon/icons/variant/5/578_3.png and b/public/images/pokemon/icons/variant/5/578_3.png differ diff --git a/public/images/pokemon/icons/variant/5/579_1.png b/public/images/pokemon/icons/variant/5/579_1.png index 18a57ba8742..c9b6827ef0e 100644 Binary files a/public/images/pokemon/icons/variant/5/579_1.png and b/public/images/pokemon/icons/variant/5/579_1.png differ diff --git a/public/images/pokemon/icons/variant/5/579_2.png b/public/images/pokemon/icons/variant/5/579_2.png index 7424adf1e60..35a0a097961 100644 Binary files a/public/images/pokemon/icons/variant/5/579_2.png and b/public/images/pokemon/icons/variant/5/579_2.png differ diff --git a/public/images/pokemon/icons/variant/5/579_3.png b/public/images/pokemon/icons/variant/5/579_3.png index af642842fac..0408c0052e6 100644 Binary files a/public/images/pokemon/icons/variant/5/579_3.png and b/public/images/pokemon/icons/variant/5/579_3.png differ diff --git a/public/images/pokemon/icons/variant/5/585-autumn_1.png b/public/images/pokemon/icons/variant/5/585-autumn_1.png index 90b61383f4f..fcc14752ede 100644 Binary files a/public/images/pokemon/icons/variant/5/585-autumn_1.png and b/public/images/pokemon/icons/variant/5/585-autumn_1.png differ diff --git a/public/images/pokemon/icons/variant/5/585-spring_1.png b/public/images/pokemon/icons/variant/5/585-spring_1.png index 0abf9205f97..39a460a9a59 100644 Binary files a/public/images/pokemon/icons/variant/5/585-spring_1.png and b/public/images/pokemon/icons/variant/5/585-spring_1.png differ diff --git a/public/images/pokemon/icons/variant/5/585-summer_1.png b/public/images/pokemon/icons/variant/5/585-summer_1.png index 23884ba1548..73061d17d90 100644 Binary files a/public/images/pokemon/icons/variant/5/585-summer_1.png and b/public/images/pokemon/icons/variant/5/585-summer_1.png differ diff --git a/public/images/pokemon/icons/variant/5/585-winter_1.png b/public/images/pokemon/icons/variant/5/585-winter_1.png index 433405e8449..fbc1a54171c 100644 Binary files a/public/images/pokemon/icons/variant/5/585-winter_1.png and b/public/images/pokemon/icons/variant/5/585-winter_1.png differ diff --git a/public/images/pokemon/icons/variant/5/586-autumn_1.png b/public/images/pokemon/icons/variant/5/586-autumn_1.png index 5b18f2ed37d..4f5941f07e1 100644 Binary files a/public/images/pokemon/icons/variant/5/586-autumn_1.png and b/public/images/pokemon/icons/variant/5/586-autumn_1.png differ diff --git a/public/images/pokemon/icons/variant/5/586-spring_1.png b/public/images/pokemon/icons/variant/5/586-spring_1.png index dad8e5491d6..fccdffef6b8 100644 Binary files a/public/images/pokemon/icons/variant/5/586-spring_1.png and b/public/images/pokemon/icons/variant/5/586-spring_1.png differ diff --git a/public/images/pokemon/icons/variant/5/586-summer_1.png b/public/images/pokemon/icons/variant/5/586-summer_1.png index e837a8d7efd..1cea4121e86 100644 Binary files a/public/images/pokemon/icons/variant/5/586-summer_1.png and b/public/images/pokemon/icons/variant/5/586-summer_1.png differ diff --git a/public/images/pokemon/icons/variant/5/586-winter_1.png b/public/images/pokemon/icons/variant/5/586-winter_1.png index b5518e19b32..bcc0fab427c 100644 Binary files a/public/images/pokemon/icons/variant/5/586-winter_1.png and b/public/images/pokemon/icons/variant/5/586-winter_1.png differ diff --git a/public/images/pokemon/icons/variant/5/587_2.png b/public/images/pokemon/icons/variant/5/587_2.png index 1e522a31676..05e79fefbbf 100644 Binary files a/public/images/pokemon/icons/variant/5/587_2.png and b/public/images/pokemon/icons/variant/5/587_2.png differ diff --git a/public/images/pokemon/icons/variant/5/587_3.png b/public/images/pokemon/icons/variant/5/587_3.png index c26066605cd..1ecdf534f94 100644 Binary files a/public/images/pokemon/icons/variant/5/587_3.png and b/public/images/pokemon/icons/variant/5/587_3.png differ diff --git a/public/images/pokemon/icons/variant/5/588_2.png b/public/images/pokemon/icons/variant/5/588_2.png index df99218cedd..898a67586d5 100644 Binary files a/public/images/pokemon/icons/variant/5/588_2.png and b/public/images/pokemon/icons/variant/5/588_2.png differ diff --git a/public/images/pokemon/icons/variant/5/588_3.png b/public/images/pokemon/icons/variant/5/588_3.png index 3d9277308c7..1c14fe8adb4 100644 Binary files a/public/images/pokemon/icons/variant/5/588_3.png and b/public/images/pokemon/icons/variant/5/588_3.png differ diff --git a/public/images/pokemon/icons/variant/5/589_2.png b/public/images/pokemon/icons/variant/5/589_2.png index ada32c980c1..8499622db9d 100644 Binary files a/public/images/pokemon/icons/variant/5/589_2.png and b/public/images/pokemon/icons/variant/5/589_2.png differ diff --git a/public/images/pokemon/icons/variant/5/589_3.png b/public/images/pokemon/icons/variant/5/589_3.png index 1f612c4e8a5..43fd9f81ed2 100644 Binary files a/public/images/pokemon/icons/variant/5/589_3.png and b/public/images/pokemon/icons/variant/5/589_3.png differ diff --git a/public/images/pokemon/icons/variant/5/590_2.png b/public/images/pokemon/icons/variant/5/590_2.png index 66c3767024b..a784b53adb6 100644 Binary files a/public/images/pokemon/icons/variant/5/590_2.png and b/public/images/pokemon/icons/variant/5/590_2.png differ diff --git a/public/images/pokemon/icons/variant/5/590_3.png b/public/images/pokemon/icons/variant/5/590_3.png index d18ccb42e21..a53ae2ce37e 100644 Binary files a/public/images/pokemon/icons/variant/5/590_3.png and b/public/images/pokemon/icons/variant/5/590_3.png differ diff --git a/public/images/pokemon/icons/variant/5/591_2.png b/public/images/pokemon/icons/variant/5/591_2.png index dad56af2559..0825c521c23 100644 Binary files a/public/images/pokemon/icons/variant/5/591_2.png and b/public/images/pokemon/icons/variant/5/591_2.png differ diff --git a/public/images/pokemon/icons/variant/5/591_3.png b/public/images/pokemon/icons/variant/5/591_3.png index a407a14b83a..7b89b7312c8 100644 Binary files a/public/images/pokemon/icons/variant/5/591_3.png and b/public/images/pokemon/icons/variant/5/591_3.png differ diff --git a/public/images/pokemon/icons/variant/5/592-f_1.png b/public/images/pokemon/icons/variant/5/592-f_1.png index b30360cd0c1..c16d8e5f664 100644 Binary files a/public/images/pokemon/icons/variant/5/592-f_1.png and b/public/images/pokemon/icons/variant/5/592-f_1.png differ diff --git a/public/images/pokemon/icons/variant/5/592-f_2.png b/public/images/pokemon/icons/variant/5/592-f_2.png index 42dec54329a..519edec431b 100644 Binary files a/public/images/pokemon/icons/variant/5/592-f_2.png and b/public/images/pokemon/icons/variant/5/592-f_2.png differ diff --git a/public/images/pokemon/icons/variant/5/592-f_3.png b/public/images/pokemon/icons/variant/5/592-f_3.png index bb4dc0ff013..1061c3b9f9a 100644 Binary files a/public/images/pokemon/icons/variant/5/592-f_3.png and b/public/images/pokemon/icons/variant/5/592-f_3.png differ diff --git a/public/images/pokemon/icons/variant/5/592_2.png b/public/images/pokemon/icons/variant/5/592_2.png index fc869a64bf9..8625127c2a6 100644 Binary files a/public/images/pokemon/icons/variant/5/592_2.png and b/public/images/pokemon/icons/variant/5/592_2.png differ diff --git a/public/images/pokemon/icons/variant/5/592_3.png b/public/images/pokemon/icons/variant/5/592_3.png index 202459f7641..83f92cfc9fd 100644 Binary files a/public/images/pokemon/icons/variant/5/592_3.png and b/public/images/pokemon/icons/variant/5/592_3.png differ diff --git a/public/images/pokemon/icons/variant/5/593-f_1.png b/public/images/pokemon/icons/variant/5/593-f_1.png index 32d2e427ccd..b66cfb4d2f2 100644 Binary files a/public/images/pokemon/icons/variant/5/593-f_1.png and b/public/images/pokemon/icons/variant/5/593-f_1.png differ diff --git a/public/images/pokemon/icons/variant/5/593-f_2.png b/public/images/pokemon/icons/variant/5/593-f_2.png index 348c5010668..b3ccdac7c95 100644 Binary files a/public/images/pokemon/icons/variant/5/593-f_2.png and b/public/images/pokemon/icons/variant/5/593-f_2.png differ diff --git a/public/images/pokemon/icons/variant/5/593-f_3.png b/public/images/pokemon/icons/variant/5/593-f_3.png index da94471a0c9..f3d17d3e5f7 100644 Binary files a/public/images/pokemon/icons/variant/5/593-f_3.png and b/public/images/pokemon/icons/variant/5/593-f_3.png differ diff --git a/public/images/pokemon/icons/variant/5/593_2.png b/public/images/pokemon/icons/variant/5/593_2.png index ee7d77ef532..42e68d17666 100644 Binary files a/public/images/pokemon/icons/variant/5/593_2.png and b/public/images/pokemon/icons/variant/5/593_2.png differ diff --git a/public/images/pokemon/icons/variant/5/593_3.png b/public/images/pokemon/icons/variant/5/593_3.png index 0134d25d034..807267385f7 100644 Binary files a/public/images/pokemon/icons/variant/5/593_3.png and b/public/images/pokemon/icons/variant/5/593_3.png differ diff --git a/public/images/pokemon/icons/variant/5/594_2.png b/public/images/pokemon/icons/variant/5/594_2.png index a646222959f..957dfc76824 100644 Binary files a/public/images/pokemon/icons/variant/5/594_2.png and b/public/images/pokemon/icons/variant/5/594_2.png differ diff --git a/public/images/pokemon/icons/variant/5/594_3.png b/public/images/pokemon/icons/variant/5/594_3.png index 8fb7c319cf2..8e32df2e01a 100644 Binary files a/public/images/pokemon/icons/variant/5/594_3.png and b/public/images/pokemon/icons/variant/5/594_3.png differ diff --git a/public/images/pokemon/icons/variant/5/595_2.png b/public/images/pokemon/icons/variant/5/595_2.png index 88822ea7d41..c2c7f8c2e58 100644 Binary files a/public/images/pokemon/icons/variant/5/595_2.png and b/public/images/pokemon/icons/variant/5/595_2.png differ diff --git a/public/images/pokemon/icons/variant/5/595_3.png b/public/images/pokemon/icons/variant/5/595_3.png index 99dc686d2c9..391641a48d3 100644 Binary files a/public/images/pokemon/icons/variant/5/595_3.png and b/public/images/pokemon/icons/variant/5/595_3.png differ diff --git a/public/images/pokemon/icons/variant/5/596_2.png b/public/images/pokemon/icons/variant/5/596_2.png index 1e8c77ede8e..1074846bcc3 100644 Binary files a/public/images/pokemon/icons/variant/5/596_2.png and b/public/images/pokemon/icons/variant/5/596_2.png differ diff --git a/public/images/pokemon/icons/variant/5/596_3.png b/public/images/pokemon/icons/variant/5/596_3.png index a01217c6099..8a065906fed 100644 Binary files a/public/images/pokemon/icons/variant/5/596_3.png and b/public/images/pokemon/icons/variant/5/596_3.png differ diff --git a/public/images/pokemon/icons/variant/5/597_2.png b/public/images/pokemon/icons/variant/5/597_2.png index 2de9d56a74d..74eea93c67a 100644 Binary files a/public/images/pokemon/icons/variant/5/597_2.png and b/public/images/pokemon/icons/variant/5/597_2.png differ diff --git a/public/images/pokemon/icons/variant/5/597_3.png b/public/images/pokemon/icons/variant/5/597_3.png index 9f69f02629a..dafe00516e2 100644 Binary files a/public/images/pokemon/icons/variant/5/597_3.png and b/public/images/pokemon/icons/variant/5/597_3.png differ diff --git a/public/images/pokemon/icons/variant/5/598_2.png b/public/images/pokemon/icons/variant/5/598_2.png index 66a2e6e28e1..c8627dfc528 100644 Binary files a/public/images/pokemon/icons/variant/5/598_2.png and b/public/images/pokemon/icons/variant/5/598_2.png differ diff --git a/public/images/pokemon/icons/variant/5/598_3.png b/public/images/pokemon/icons/variant/5/598_3.png index 3e2d73b23ef..2de9ee63cef 100644 Binary files a/public/images/pokemon/icons/variant/5/598_3.png and b/public/images/pokemon/icons/variant/5/598_3.png differ diff --git a/public/images/pokemon/icons/variant/5/602_2.png b/public/images/pokemon/icons/variant/5/602_2.png index dad7de991f3..1ac7fabee81 100644 Binary files a/public/images/pokemon/icons/variant/5/602_2.png and b/public/images/pokemon/icons/variant/5/602_2.png differ diff --git a/public/images/pokemon/icons/variant/5/602_3.png b/public/images/pokemon/icons/variant/5/602_3.png index 9afc1117a1b..3e0aca0cfe6 100644 Binary files a/public/images/pokemon/icons/variant/5/602_3.png and b/public/images/pokemon/icons/variant/5/602_3.png differ diff --git a/public/images/pokemon/icons/variant/5/603_2.png b/public/images/pokemon/icons/variant/5/603_2.png index cee4af4df86..294cdb0b57d 100644 Binary files a/public/images/pokemon/icons/variant/5/603_2.png and b/public/images/pokemon/icons/variant/5/603_2.png differ diff --git a/public/images/pokemon/icons/variant/5/603_3.png b/public/images/pokemon/icons/variant/5/603_3.png index 0a12b626852..5560a04b210 100644 Binary files a/public/images/pokemon/icons/variant/5/603_3.png and b/public/images/pokemon/icons/variant/5/603_3.png differ diff --git a/public/images/pokemon/icons/variant/5/604_2.png b/public/images/pokemon/icons/variant/5/604_2.png index ea78537196f..4e1d4438c94 100644 Binary files a/public/images/pokemon/icons/variant/5/604_2.png and b/public/images/pokemon/icons/variant/5/604_2.png differ diff --git a/public/images/pokemon/icons/variant/5/604_3.png b/public/images/pokemon/icons/variant/5/604_3.png index 9e0a39436d1..67276c4379a 100644 Binary files a/public/images/pokemon/icons/variant/5/604_3.png and b/public/images/pokemon/icons/variant/5/604_3.png differ diff --git a/public/images/pokemon/icons/variant/5/605_1.png b/public/images/pokemon/icons/variant/5/605_1.png index 88b69016e93..29bb94ea569 100644 Binary files a/public/images/pokemon/icons/variant/5/605_1.png and b/public/images/pokemon/icons/variant/5/605_1.png differ diff --git a/public/images/pokemon/icons/variant/5/605_2.png b/public/images/pokemon/icons/variant/5/605_2.png index db3e5ca3071..5cda52787d4 100644 Binary files a/public/images/pokemon/icons/variant/5/605_2.png and b/public/images/pokemon/icons/variant/5/605_2.png differ diff --git a/public/images/pokemon/icons/variant/5/605_3.png b/public/images/pokemon/icons/variant/5/605_3.png index 2c432244e90..561c9c9748d 100644 Binary files a/public/images/pokemon/icons/variant/5/605_3.png and b/public/images/pokemon/icons/variant/5/605_3.png differ diff --git a/public/images/pokemon/icons/variant/5/606_1.png b/public/images/pokemon/icons/variant/5/606_1.png index 1e7b13503f1..f661e2bdf17 100644 Binary files a/public/images/pokemon/icons/variant/5/606_1.png and b/public/images/pokemon/icons/variant/5/606_1.png differ diff --git a/public/images/pokemon/icons/variant/5/606_2.png b/public/images/pokemon/icons/variant/5/606_2.png index b84a4942686..6f05d222c6d 100644 Binary files a/public/images/pokemon/icons/variant/5/606_2.png and b/public/images/pokemon/icons/variant/5/606_2.png differ diff --git a/public/images/pokemon/icons/variant/5/606_3.png b/public/images/pokemon/icons/variant/5/606_3.png index ba76ade6b50..c0a8536ace8 100644 Binary files a/public/images/pokemon/icons/variant/5/606_3.png and b/public/images/pokemon/icons/variant/5/606_3.png differ diff --git a/public/images/pokemon/icons/variant/5/607_2.png b/public/images/pokemon/icons/variant/5/607_2.png index 38725cd18e6..bd654d5bc1a 100644 Binary files a/public/images/pokemon/icons/variant/5/607_2.png and b/public/images/pokemon/icons/variant/5/607_2.png differ diff --git a/public/images/pokemon/icons/variant/5/607_3.png b/public/images/pokemon/icons/variant/5/607_3.png index be0d7109aaa..46ceee982b2 100644 Binary files a/public/images/pokemon/icons/variant/5/607_3.png and b/public/images/pokemon/icons/variant/5/607_3.png differ diff --git a/public/images/pokemon/icons/variant/5/608_2.png b/public/images/pokemon/icons/variant/5/608_2.png index 69aebb4cc86..dcc9afcb77e 100644 Binary files a/public/images/pokemon/icons/variant/5/608_2.png and b/public/images/pokemon/icons/variant/5/608_2.png differ diff --git a/public/images/pokemon/icons/variant/5/608_3.png b/public/images/pokemon/icons/variant/5/608_3.png index df55f56a395..d8e57d1db9a 100644 Binary files a/public/images/pokemon/icons/variant/5/608_3.png and b/public/images/pokemon/icons/variant/5/608_3.png differ diff --git a/public/images/pokemon/icons/variant/5/609_2.png b/public/images/pokemon/icons/variant/5/609_2.png index 8a8aac30577..eaad6ea14da 100644 Binary files a/public/images/pokemon/icons/variant/5/609_2.png and b/public/images/pokemon/icons/variant/5/609_2.png differ diff --git a/public/images/pokemon/icons/variant/5/609_3.png b/public/images/pokemon/icons/variant/5/609_3.png index 93ed2232830..b5676f467ed 100644 Binary files a/public/images/pokemon/icons/variant/5/609_3.png and b/public/images/pokemon/icons/variant/5/609_3.png differ diff --git a/public/images/pokemon/icons/variant/5/610_2.png b/public/images/pokemon/icons/variant/5/610_2.png index f9e05990a3b..6132af90b8b 100644 Binary files a/public/images/pokemon/icons/variant/5/610_2.png and b/public/images/pokemon/icons/variant/5/610_2.png differ diff --git a/public/images/pokemon/icons/variant/5/610_3.png b/public/images/pokemon/icons/variant/5/610_3.png index 8441185abe0..dbc528aec75 100644 Binary files a/public/images/pokemon/icons/variant/5/610_3.png and b/public/images/pokemon/icons/variant/5/610_3.png differ diff --git a/public/images/pokemon/icons/variant/5/611_2.png b/public/images/pokemon/icons/variant/5/611_2.png index 33f05993d2a..97a3fc01cc7 100644 Binary files a/public/images/pokemon/icons/variant/5/611_2.png and b/public/images/pokemon/icons/variant/5/611_2.png differ diff --git a/public/images/pokemon/icons/variant/5/611_3.png b/public/images/pokemon/icons/variant/5/611_3.png index c4d95a35edf..1ab021a652f 100644 Binary files a/public/images/pokemon/icons/variant/5/611_3.png and b/public/images/pokemon/icons/variant/5/611_3.png differ diff --git a/public/images/pokemon/icons/variant/5/612_2.png b/public/images/pokemon/icons/variant/5/612_2.png index b17eec305d7..0387bb2cecf 100644 Binary files a/public/images/pokemon/icons/variant/5/612_2.png and b/public/images/pokemon/icons/variant/5/612_2.png differ diff --git a/public/images/pokemon/icons/variant/5/612_3.png b/public/images/pokemon/icons/variant/5/612_3.png index dd25ae40a21..daf28503c19 100644 Binary files a/public/images/pokemon/icons/variant/5/612_3.png and b/public/images/pokemon/icons/variant/5/612_3.png differ diff --git a/public/images/pokemon/icons/variant/5/616_2.png b/public/images/pokemon/icons/variant/5/616_2.png index 88e45da0238..e6d115ca6b5 100644 Binary files a/public/images/pokemon/icons/variant/5/616_2.png and b/public/images/pokemon/icons/variant/5/616_2.png differ diff --git a/public/images/pokemon/icons/variant/5/616_3.png b/public/images/pokemon/icons/variant/5/616_3.png index b1767da8fdd..f42ec2c7a18 100644 Binary files a/public/images/pokemon/icons/variant/5/616_3.png and b/public/images/pokemon/icons/variant/5/616_3.png differ diff --git a/public/images/pokemon/icons/variant/5/617_2.png b/public/images/pokemon/icons/variant/5/617_2.png index fff02c3f344..fba53bba1a5 100644 Binary files a/public/images/pokemon/icons/variant/5/617_2.png and b/public/images/pokemon/icons/variant/5/617_2.png differ diff --git a/public/images/pokemon/icons/variant/5/617_3.png b/public/images/pokemon/icons/variant/5/617_3.png index b3f05f31db2..2d38bbf1c29 100644 Binary files a/public/images/pokemon/icons/variant/5/617_3.png and b/public/images/pokemon/icons/variant/5/617_3.png differ diff --git a/public/images/pokemon/icons/variant/5/618_2.png b/public/images/pokemon/icons/variant/5/618_2.png index 8b134146ccf..e9157e68c0a 100644 Binary files a/public/images/pokemon/icons/variant/5/618_2.png and b/public/images/pokemon/icons/variant/5/618_2.png differ diff --git a/public/images/pokemon/icons/variant/5/618_3.png b/public/images/pokemon/icons/variant/5/618_3.png index fd9f3994b22..0ca9869092b 100644 Binary files a/public/images/pokemon/icons/variant/5/618_3.png and b/public/images/pokemon/icons/variant/5/618_3.png differ diff --git a/public/images/pokemon/icons/variant/5/619_2.png b/public/images/pokemon/icons/variant/5/619_2.png index 61fb4716f24..915f617dce7 100644 Binary files a/public/images/pokemon/icons/variant/5/619_2.png and b/public/images/pokemon/icons/variant/5/619_2.png differ diff --git a/public/images/pokemon/icons/variant/5/619_3.png b/public/images/pokemon/icons/variant/5/619_3.png index 9af922c97fc..324f83630bd 100644 Binary files a/public/images/pokemon/icons/variant/5/619_3.png and b/public/images/pokemon/icons/variant/5/619_3.png differ diff --git a/public/images/pokemon/icons/variant/5/620_2.png b/public/images/pokemon/icons/variant/5/620_2.png index 6042f2bb63b..52da57537cc 100644 Binary files a/public/images/pokemon/icons/variant/5/620_2.png and b/public/images/pokemon/icons/variant/5/620_2.png differ diff --git a/public/images/pokemon/icons/variant/5/620_3.png b/public/images/pokemon/icons/variant/5/620_3.png index 09750c3eac4..627730426a9 100644 Binary files a/public/images/pokemon/icons/variant/5/620_3.png and b/public/images/pokemon/icons/variant/5/620_3.png differ diff --git a/public/images/pokemon/icons/variant/5/621_2.png b/public/images/pokemon/icons/variant/5/621_2.png index dbaa26325d8..5bf3f66777c 100644 Binary files a/public/images/pokemon/icons/variant/5/621_2.png and b/public/images/pokemon/icons/variant/5/621_2.png differ diff --git a/public/images/pokemon/icons/variant/5/621_3.png b/public/images/pokemon/icons/variant/5/621_3.png index 190ffb11dc3..ab51255d0cc 100644 Binary files a/public/images/pokemon/icons/variant/5/621_3.png and b/public/images/pokemon/icons/variant/5/621_3.png differ diff --git a/public/images/pokemon/icons/variant/5/622_2.png b/public/images/pokemon/icons/variant/5/622_2.png index 96e5ad16cf5..64f49dd3f39 100644 Binary files a/public/images/pokemon/icons/variant/5/622_2.png and b/public/images/pokemon/icons/variant/5/622_2.png differ diff --git a/public/images/pokemon/icons/variant/5/622_3.png b/public/images/pokemon/icons/variant/5/622_3.png index 6575393112c..0ff0300c0db 100644 Binary files a/public/images/pokemon/icons/variant/5/622_3.png and b/public/images/pokemon/icons/variant/5/622_3.png differ diff --git a/public/images/pokemon/icons/variant/5/623_2.png b/public/images/pokemon/icons/variant/5/623_2.png index c024a510326..5de181d1759 100644 Binary files a/public/images/pokemon/icons/variant/5/623_2.png and b/public/images/pokemon/icons/variant/5/623_2.png differ diff --git a/public/images/pokemon/icons/variant/5/623_3.png b/public/images/pokemon/icons/variant/5/623_3.png index 88002cd0017..49094c0477d 100644 Binary files a/public/images/pokemon/icons/variant/5/623_3.png and b/public/images/pokemon/icons/variant/5/623_3.png differ diff --git a/public/images/pokemon/icons/variant/5/626_2.png b/public/images/pokemon/icons/variant/5/626_2.png index 21930c7606e..0e7aeb9a680 100644 Binary files a/public/images/pokemon/icons/variant/5/626_2.png and b/public/images/pokemon/icons/variant/5/626_2.png differ diff --git a/public/images/pokemon/icons/variant/5/626_3.png b/public/images/pokemon/icons/variant/5/626_3.png index 2183e1426e8..e0aa3e4e481 100644 Binary files a/public/images/pokemon/icons/variant/5/626_3.png and b/public/images/pokemon/icons/variant/5/626_3.png differ diff --git a/public/images/pokemon/icons/variant/5/631_2.png b/public/images/pokemon/icons/variant/5/631_2.png index 564fb16c4a0..cc48e54c626 100644 Binary files a/public/images/pokemon/icons/variant/5/631_2.png and b/public/images/pokemon/icons/variant/5/631_2.png differ diff --git a/public/images/pokemon/icons/variant/5/631_3.png b/public/images/pokemon/icons/variant/5/631_3.png index 08779f3e130..e3586488004 100644 Binary files a/public/images/pokemon/icons/variant/5/631_3.png and b/public/images/pokemon/icons/variant/5/631_3.png differ diff --git a/public/images/pokemon/icons/variant/5/632_2.png b/public/images/pokemon/icons/variant/5/632_2.png index 8146d54a410..551c66da08e 100644 Binary files a/public/images/pokemon/icons/variant/5/632_2.png and b/public/images/pokemon/icons/variant/5/632_2.png differ diff --git a/public/images/pokemon/icons/variant/5/632_3.png b/public/images/pokemon/icons/variant/5/632_3.png index 786ebef54e5..4a03c1a2a40 100644 Binary files a/public/images/pokemon/icons/variant/5/632_3.png and b/public/images/pokemon/icons/variant/5/632_3.png differ diff --git a/public/images/pokemon/icons/variant/5/633_2.png b/public/images/pokemon/icons/variant/5/633_2.png index 3c6757ceb02..bab4bf948db 100644 Binary files a/public/images/pokemon/icons/variant/5/633_2.png and b/public/images/pokemon/icons/variant/5/633_2.png differ diff --git a/public/images/pokemon/icons/variant/5/633_3.png b/public/images/pokemon/icons/variant/5/633_3.png index d14fa5e9da8..27a857eb9c4 100644 Binary files a/public/images/pokemon/icons/variant/5/633_3.png and b/public/images/pokemon/icons/variant/5/633_3.png differ diff --git a/public/images/pokemon/icons/variant/5/634_2.png b/public/images/pokemon/icons/variant/5/634_2.png index 35fa482f3b4..a59c257950d 100644 Binary files a/public/images/pokemon/icons/variant/5/634_2.png and b/public/images/pokemon/icons/variant/5/634_2.png differ diff --git a/public/images/pokemon/icons/variant/5/634_3.png b/public/images/pokemon/icons/variant/5/634_3.png index 4f3ed3238e0..8dc9c18c53b 100644 Binary files a/public/images/pokemon/icons/variant/5/634_3.png and b/public/images/pokemon/icons/variant/5/634_3.png differ diff --git a/public/images/pokemon/icons/variant/5/635_2.png b/public/images/pokemon/icons/variant/5/635_2.png index c46af2fb65a..1d7a4ab0948 100644 Binary files a/public/images/pokemon/icons/variant/5/635_2.png and b/public/images/pokemon/icons/variant/5/635_2.png differ diff --git a/public/images/pokemon/icons/variant/5/635_3.png b/public/images/pokemon/icons/variant/5/635_3.png index 0d64cac9c81..fd6b99e2c55 100644 Binary files a/public/images/pokemon/icons/variant/5/635_3.png and b/public/images/pokemon/icons/variant/5/635_3.png differ diff --git a/public/images/pokemon/icons/variant/5/636_2.png b/public/images/pokemon/icons/variant/5/636_2.png index 57a29619e10..c39f180bbfd 100644 Binary files a/public/images/pokemon/icons/variant/5/636_2.png and b/public/images/pokemon/icons/variant/5/636_2.png differ diff --git a/public/images/pokemon/icons/variant/5/636_3.png b/public/images/pokemon/icons/variant/5/636_3.png index d63a8d77787..3364b631724 100644 Binary files a/public/images/pokemon/icons/variant/5/636_3.png and b/public/images/pokemon/icons/variant/5/636_3.png differ diff --git a/public/images/pokemon/icons/variant/5/637_2.png b/public/images/pokemon/icons/variant/5/637_2.png index e44609653b7..47c5b459b9c 100644 Binary files a/public/images/pokemon/icons/variant/5/637_2.png and b/public/images/pokemon/icons/variant/5/637_2.png differ diff --git a/public/images/pokemon/icons/variant/5/637_3.png b/public/images/pokemon/icons/variant/5/637_3.png index 29d176bea57..6b70c8686aa 100644 Binary files a/public/images/pokemon/icons/variant/5/637_3.png and b/public/images/pokemon/icons/variant/5/637_3.png differ diff --git a/public/images/pokemon/icons/variant/5/640_2.png b/public/images/pokemon/icons/variant/5/640_2.png index ccfb684807e..942a016b91a 100644 Binary files a/public/images/pokemon/icons/variant/5/640_2.png and b/public/images/pokemon/icons/variant/5/640_2.png differ diff --git a/public/images/pokemon/icons/variant/5/640_3.png b/public/images/pokemon/icons/variant/5/640_3.png index 559dedaa2e0..751c6ad3c0a 100644 Binary files a/public/images/pokemon/icons/variant/5/640_3.png and b/public/images/pokemon/icons/variant/5/640_3.png differ diff --git a/public/images/pokemon/icons/variant/5/643_2.png b/public/images/pokemon/icons/variant/5/643_2.png index 24b7ce28a36..99b29e329f5 100644 Binary files a/public/images/pokemon/icons/variant/5/643_2.png and b/public/images/pokemon/icons/variant/5/643_2.png differ diff --git a/public/images/pokemon/icons/variant/5/643_3.png b/public/images/pokemon/icons/variant/5/643_3.png index 5c124dbb8f6..fdedfaa9d68 100644 Binary files a/public/images/pokemon/icons/variant/5/643_3.png and b/public/images/pokemon/icons/variant/5/643_3.png differ diff --git a/public/images/pokemon/icons/variant/5/644_2.png b/public/images/pokemon/icons/variant/5/644_2.png index 13ba216e9ce..67d7b2cf4e0 100644 Binary files a/public/images/pokemon/icons/variant/5/644_2.png and b/public/images/pokemon/icons/variant/5/644_2.png differ diff --git a/public/images/pokemon/icons/variant/5/644_3.png b/public/images/pokemon/icons/variant/5/644_3.png index a071965f32d..a1083535db2 100644 Binary files a/public/images/pokemon/icons/variant/5/644_3.png and b/public/images/pokemon/icons/variant/5/644_3.png differ diff --git a/public/images/pokemon/icons/variant/5/646-black_2.png b/public/images/pokemon/icons/variant/5/646-black_2.png index 825a8bd36c0..3e66e9439be 100644 Binary files a/public/images/pokemon/icons/variant/5/646-black_2.png and b/public/images/pokemon/icons/variant/5/646-black_2.png differ diff --git a/public/images/pokemon/icons/variant/5/646-black_3.png b/public/images/pokemon/icons/variant/5/646-black_3.png index 6e854d9ea41..9b59b1b8b77 100644 Binary files a/public/images/pokemon/icons/variant/5/646-black_3.png and b/public/images/pokemon/icons/variant/5/646-black_3.png differ diff --git a/public/images/pokemon/icons/variant/5/646-white_2.png b/public/images/pokemon/icons/variant/5/646-white_2.png index e38dc504b21..48b450ba53c 100644 Binary files a/public/images/pokemon/icons/variant/5/646-white_2.png and b/public/images/pokemon/icons/variant/5/646-white_2.png differ diff --git a/public/images/pokemon/icons/variant/5/646-white_3.png b/public/images/pokemon/icons/variant/5/646-white_3.png index 12bff95a01d..abe5cf5c731 100644 Binary files a/public/images/pokemon/icons/variant/5/646-white_3.png and b/public/images/pokemon/icons/variant/5/646-white_3.png differ diff --git a/public/images/pokemon/icons/variant/5/646_2.png b/public/images/pokemon/icons/variant/5/646_2.png index 064598bfd26..ba299a5e621 100644 Binary files a/public/images/pokemon/icons/variant/5/646_2.png and b/public/images/pokemon/icons/variant/5/646_2.png differ diff --git a/public/images/pokemon/icons/variant/5/646_3.png b/public/images/pokemon/icons/variant/5/646_3.png index e258eb4ce91..9248a2b3107 100644 Binary files a/public/images/pokemon/icons/variant/5/646_3.png and b/public/images/pokemon/icons/variant/5/646_3.png differ diff --git a/public/images/pokemon/icons/variant/5/647-ordinary_2.png b/public/images/pokemon/icons/variant/5/647-ordinary_2.png index eced4ac6294..98decace43d 100644 Binary files a/public/images/pokemon/icons/variant/5/647-ordinary_2.png and b/public/images/pokemon/icons/variant/5/647-ordinary_2.png differ diff --git a/public/images/pokemon/icons/variant/5/647-ordinary_3.png b/public/images/pokemon/icons/variant/5/647-ordinary_3.png index 5c3911c5e7d..055ef09d84f 100644 Binary files a/public/images/pokemon/icons/variant/5/647-ordinary_3.png and b/public/images/pokemon/icons/variant/5/647-ordinary_3.png differ diff --git a/public/images/pokemon/icons/variant/5/647-resolute_2.png b/public/images/pokemon/icons/variant/5/647-resolute_2.png index b3fc84c704d..e8342c6f0c0 100644 Binary files a/public/images/pokemon/icons/variant/5/647-resolute_2.png and b/public/images/pokemon/icons/variant/5/647-resolute_2.png differ diff --git a/public/images/pokemon/icons/variant/5/647-resolute_3.png b/public/images/pokemon/icons/variant/5/647-resolute_3.png index 6e7597533b2..7f2909e49f1 100644 Binary files a/public/images/pokemon/icons/variant/5/647-resolute_3.png and b/public/images/pokemon/icons/variant/5/647-resolute_3.png differ diff --git a/public/images/pokemon/icons/variant/5/648-aria_2.png b/public/images/pokemon/icons/variant/5/648-aria_2.png index 4992e1c3006..5149fae5494 100644 Binary files a/public/images/pokemon/icons/variant/5/648-aria_2.png and b/public/images/pokemon/icons/variant/5/648-aria_2.png differ diff --git a/public/images/pokemon/icons/variant/5/648-aria_3.png b/public/images/pokemon/icons/variant/5/648-aria_3.png index 55d8e658d63..252df6c4275 100644 Binary files a/public/images/pokemon/icons/variant/5/648-aria_3.png and b/public/images/pokemon/icons/variant/5/648-aria_3.png differ diff --git a/public/images/pokemon/icons/variant/5/648-pirouette_2.png b/public/images/pokemon/icons/variant/5/648-pirouette_2.png index 8b1db1a5519..f2dc6a5ba1d 100644 Binary files a/public/images/pokemon/icons/variant/5/648-pirouette_2.png and b/public/images/pokemon/icons/variant/5/648-pirouette_2.png differ diff --git a/public/images/pokemon/icons/variant/5/648-pirouette_3.png b/public/images/pokemon/icons/variant/5/648-pirouette_3.png index 874ccfae7cc..54a285aec3f 100644 Binary files a/public/images/pokemon/icons/variant/5/648-pirouette_3.png and b/public/images/pokemon/icons/variant/5/648-pirouette_3.png differ diff --git a/public/images/pokemon/icons/variant/5/649-burn_2.png b/public/images/pokemon/icons/variant/5/649-burn_2.png index a83d3f7a763..a36c92e20d2 100644 Binary files a/public/images/pokemon/icons/variant/5/649-burn_2.png and b/public/images/pokemon/icons/variant/5/649-burn_2.png differ diff --git a/public/images/pokemon/icons/variant/5/649-burn_3.png b/public/images/pokemon/icons/variant/5/649-burn_3.png index 03fbbf0839e..7140d710955 100644 Binary files a/public/images/pokemon/icons/variant/5/649-burn_3.png and b/public/images/pokemon/icons/variant/5/649-burn_3.png differ diff --git a/public/images/pokemon/icons/variant/5/649-chill_2.png b/public/images/pokemon/icons/variant/5/649-chill_2.png index 9a2c22d19aa..d92f8ea32ac 100644 Binary files a/public/images/pokemon/icons/variant/5/649-chill_2.png and b/public/images/pokemon/icons/variant/5/649-chill_2.png differ diff --git a/public/images/pokemon/icons/variant/5/649-chill_3.png b/public/images/pokemon/icons/variant/5/649-chill_3.png index 05ba7fbc5c8..e33d8c7dfe9 100644 Binary files a/public/images/pokemon/icons/variant/5/649-chill_3.png and b/public/images/pokemon/icons/variant/5/649-chill_3.png differ diff --git a/public/images/pokemon/icons/variant/5/649-douse_2.png b/public/images/pokemon/icons/variant/5/649-douse_2.png index c4f1b3b3d17..9e76d03e9dc 100644 Binary files a/public/images/pokemon/icons/variant/5/649-douse_2.png and b/public/images/pokemon/icons/variant/5/649-douse_2.png differ diff --git a/public/images/pokemon/icons/variant/5/649-douse_3.png b/public/images/pokemon/icons/variant/5/649-douse_3.png index 9a6323e4cc5..b0dfdf0c23f 100644 Binary files a/public/images/pokemon/icons/variant/5/649-douse_3.png and b/public/images/pokemon/icons/variant/5/649-douse_3.png differ diff --git a/public/images/pokemon/icons/variant/5/649-shock_2.png b/public/images/pokemon/icons/variant/5/649-shock_2.png index 62591edf309..242a478afc7 100644 Binary files a/public/images/pokemon/icons/variant/5/649-shock_2.png and b/public/images/pokemon/icons/variant/5/649-shock_2.png differ diff --git a/public/images/pokemon/icons/variant/5/649-shock_3.png b/public/images/pokemon/icons/variant/5/649-shock_3.png index 545df9a6171..a8cdcf95e1b 100644 Binary files a/public/images/pokemon/icons/variant/5/649-shock_3.png and b/public/images/pokemon/icons/variant/5/649-shock_3.png differ diff --git a/public/images/pokemon/icons/variant/5/649_2.png b/public/images/pokemon/icons/variant/5/649_2.png index f22c8bf4f8e..77fd932422b 100644 Binary files a/public/images/pokemon/icons/variant/5/649_2.png and b/public/images/pokemon/icons/variant/5/649_2.png differ diff --git a/public/images/pokemon/icons/variant/5/649_3.png b/public/images/pokemon/icons/variant/5/649_3.png index 4cdca15d9a9..da2327bccaa 100644 Binary files a/public/images/pokemon/icons/variant/5/649_3.png and b/public/images/pokemon/icons/variant/5/649_3.png differ diff --git a/public/images/pokemon/icons/variant/6/2670_2.png b/public/images/pokemon/icons/variant/6/2670_2.png index 4f9321285d4..acaf8e17f8a 100644 Binary files a/public/images/pokemon/icons/variant/6/2670_2.png and b/public/images/pokemon/icons/variant/6/2670_2.png differ diff --git a/public/images/pokemon/icons/variant/6/2670_3.png b/public/images/pokemon/icons/variant/6/2670_3.png index ef884ede7c8..087bb21ea0e 100644 Binary files a/public/images/pokemon/icons/variant/6/2670_3.png and b/public/images/pokemon/icons/variant/6/2670_3.png differ diff --git a/public/images/pokemon/icons/variant/6/653_2.png b/public/images/pokemon/icons/variant/6/653_2.png index 74fc7fe34fa..4a80818c6a8 100644 Binary files a/public/images/pokemon/icons/variant/6/653_2.png and b/public/images/pokemon/icons/variant/6/653_2.png differ diff --git a/public/images/pokemon/icons/variant/6/653_3.png b/public/images/pokemon/icons/variant/6/653_3.png index 0a1b589e244..b6d07b25053 100644 Binary files a/public/images/pokemon/icons/variant/6/653_3.png and b/public/images/pokemon/icons/variant/6/653_3.png differ diff --git a/public/images/pokemon/icons/variant/6/654_2.png b/public/images/pokemon/icons/variant/6/654_2.png index ca0060cab01..94a7ba1b4d0 100644 Binary files a/public/images/pokemon/icons/variant/6/654_2.png and b/public/images/pokemon/icons/variant/6/654_2.png differ diff --git a/public/images/pokemon/icons/variant/6/654_3.png b/public/images/pokemon/icons/variant/6/654_3.png index 489faa127ac..4996771f1c1 100644 Binary files a/public/images/pokemon/icons/variant/6/654_3.png and b/public/images/pokemon/icons/variant/6/654_3.png differ diff --git a/public/images/pokemon/icons/variant/6/655_2.png b/public/images/pokemon/icons/variant/6/655_2.png index 0e99195d0d8..12fbe218d0f 100644 Binary files a/public/images/pokemon/icons/variant/6/655_2.png and b/public/images/pokemon/icons/variant/6/655_2.png differ diff --git a/public/images/pokemon/icons/variant/6/655_3.png b/public/images/pokemon/icons/variant/6/655_3.png index 6e340b68616..f75c54b6e77 100644 Binary files a/public/images/pokemon/icons/variant/6/655_3.png and b/public/images/pokemon/icons/variant/6/655_3.png differ diff --git a/public/images/pokemon/icons/variant/6/656_2.png b/public/images/pokemon/icons/variant/6/656_2.png index 612386a5d1e..e3a16765a00 100644 Binary files a/public/images/pokemon/icons/variant/6/656_2.png and b/public/images/pokemon/icons/variant/6/656_2.png differ diff --git a/public/images/pokemon/icons/variant/6/656_3.png b/public/images/pokemon/icons/variant/6/656_3.png index 575cf3aef3a..65c4454d2fa 100644 Binary files a/public/images/pokemon/icons/variant/6/656_3.png and b/public/images/pokemon/icons/variant/6/656_3.png differ diff --git a/public/images/pokemon/icons/variant/6/657_2.png b/public/images/pokemon/icons/variant/6/657_2.png index 9f26c5f85bf..ea742387864 100644 Binary files a/public/images/pokemon/icons/variant/6/657_2.png and b/public/images/pokemon/icons/variant/6/657_2.png differ diff --git a/public/images/pokemon/icons/variant/6/657_3.png b/public/images/pokemon/icons/variant/6/657_3.png index fde76bb8d1c..8f93b215df0 100644 Binary files a/public/images/pokemon/icons/variant/6/657_3.png and b/public/images/pokemon/icons/variant/6/657_3.png differ diff --git a/public/images/pokemon/icons/variant/6/658-ash_2.png b/public/images/pokemon/icons/variant/6/658-ash_2.png index b788b336efe..92dff96d721 100644 Binary files a/public/images/pokemon/icons/variant/6/658-ash_2.png and b/public/images/pokemon/icons/variant/6/658-ash_2.png differ diff --git a/public/images/pokemon/icons/variant/6/658-ash_3.png b/public/images/pokemon/icons/variant/6/658-ash_3.png index 52ac4fe0ede..768d6f54a24 100644 Binary files a/public/images/pokemon/icons/variant/6/658-ash_3.png and b/public/images/pokemon/icons/variant/6/658-ash_3.png differ diff --git a/public/images/pokemon/icons/variant/6/658_2.png b/public/images/pokemon/icons/variant/6/658_2.png index eaf9da8a9ce..7bae02360db 100644 Binary files a/public/images/pokemon/icons/variant/6/658_2.png and b/public/images/pokemon/icons/variant/6/658_2.png differ diff --git a/public/images/pokemon/icons/variant/6/658_3.png b/public/images/pokemon/icons/variant/6/658_3.png index 027dda592f0..d56bbb20836 100644 Binary files a/public/images/pokemon/icons/variant/6/658_3.png and b/public/images/pokemon/icons/variant/6/658_3.png differ diff --git a/public/images/pokemon/icons/variant/6/664_2.png b/public/images/pokemon/icons/variant/6/664_2.png index 7453776377e..e09bf4ac560 100644 Binary files a/public/images/pokemon/icons/variant/6/664_2.png and b/public/images/pokemon/icons/variant/6/664_2.png differ diff --git a/public/images/pokemon/icons/variant/6/664_3.png b/public/images/pokemon/icons/variant/6/664_3.png index def900f8b7f..3dfdb79eb68 100644 Binary files a/public/images/pokemon/icons/variant/6/664_3.png and b/public/images/pokemon/icons/variant/6/664_3.png differ diff --git a/public/images/pokemon/icons/variant/6/665_2.png b/public/images/pokemon/icons/variant/6/665_2.png index 36f66b5edd4..ae37d2e55a7 100644 Binary files a/public/images/pokemon/icons/variant/6/665_2.png and b/public/images/pokemon/icons/variant/6/665_2.png differ diff --git a/public/images/pokemon/icons/variant/6/665_3.png b/public/images/pokemon/icons/variant/6/665_3.png index e8a449d6606..b58d09d2d41 100644 Binary files a/public/images/pokemon/icons/variant/6/665_3.png and b/public/images/pokemon/icons/variant/6/665_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-archipelago_2.png b/public/images/pokemon/icons/variant/6/666-archipelago_2.png index 31059899487..64f258ee7b4 100644 Binary files a/public/images/pokemon/icons/variant/6/666-archipelago_2.png and b/public/images/pokemon/icons/variant/6/666-archipelago_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-archipelago_3.png b/public/images/pokemon/icons/variant/6/666-archipelago_3.png index 6552b345b4e..57c934b32b0 100644 Binary files a/public/images/pokemon/icons/variant/6/666-archipelago_3.png and b/public/images/pokemon/icons/variant/6/666-archipelago_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-continental_2.png b/public/images/pokemon/icons/variant/6/666-continental_2.png index 13a3f762c92..10e434a5c44 100644 Binary files a/public/images/pokemon/icons/variant/6/666-continental_2.png and b/public/images/pokemon/icons/variant/6/666-continental_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-continental_3.png b/public/images/pokemon/icons/variant/6/666-continental_3.png index 4975a8f5c15..c489b12f9da 100644 Binary files a/public/images/pokemon/icons/variant/6/666-continental_3.png and b/public/images/pokemon/icons/variant/6/666-continental_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-elegant_2.png b/public/images/pokemon/icons/variant/6/666-elegant_2.png index 8b94fed05b3..6db81dca91f 100644 Binary files a/public/images/pokemon/icons/variant/6/666-elegant_2.png and b/public/images/pokemon/icons/variant/6/666-elegant_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-elegant_3.png b/public/images/pokemon/icons/variant/6/666-elegant_3.png index 55de693caf5..9a7609c020e 100644 Binary files a/public/images/pokemon/icons/variant/6/666-elegant_3.png and b/public/images/pokemon/icons/variant/6/666-elegant_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-fancy_2.png b/public/images/pokemon/icons/variant/6/666-fancy_2.png index ebaf181b305..740d45792d2 100644 Binary files a/public/images/pokemon/icons/variant/6/666-fancy_2.png and b/public/images/pokemon/icons/variant/6/666-fancy_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-fancy_3.png b/public/images/pokemon/icons/variant/6/666-fancy_3.png index 9da7e479fb0..5311d2313ea 100644 Binary files a/public/images/pokemon/icons/variant/6/666-fancy_3.png and b/public/images/pokemon/icons/variant/6/666-fancy_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-garden_2.png b/public/images/pokemon/icons/variant/6/666-garden_2.png index 43fe4c217cf..70c1424b05f 100644 Binary files a/public/images/pokemon/icons/variant/6/666-garden_2.png and b/public/images/pokemon/icons/variant/6/666-garden_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-garden_3.png b/public/images/pokemon/icons/variant/6/666-garden_3.png index ba41f22906a..1132f4e6392 100644 Binary files a/public/images/pokemon/icons/variant/6/666-garden_3.png and b/public/images/pokemon/icons/variant/6/666-garden_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-high-plains_2.png b/public/images/pokemon/icons/variant/6/666-high-plains_2.png index 926dc69c720..71a66cca25d 100644 Binary files a/public/images/pokemon/icons/variant/6/666-high-plains_2.png and b/public/images/pokemon/icons/variant/6/666-high-plains_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-high-plains_3.png b/public/images/pokemon/icons/variant/6/666-high-plains_3.png index 9d4b334bf1d..6c727596341 100644 Binary files a/public/images/pokemon/icons/variant/6/666-high-plains_3.png and b/public/images/pokemon/icons/variant/6/666-high-plains_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-icy-snow_2.png b/public/images/pokemon/icons/variant/6/666-icy-snow_2.png index 4afb3068279..624ee7e513a 100644 Binary files a/public/images/pokemon/icons/variant/6/666-icy-snow_2.png and b/public/images/pokemon/icons/variant/6/666-icy-snow_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-icy-snow_3.png b/public/images/pokemon/icons/variant/6/666-icy-snow_3.png index 20a0297bb09..d1a62b9df48 100644 Binary files a/public/images/pokemon/icons/variant/6/666-icy-snow_3.png and b/public/images/pokemon/icons/variant/6/666-icy-snow_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-jungle_2.png b/public/images/pokemon/icons/variant/6/666-jungle_2.png index 85fbd76eaae..d48449589f6 100644 Binary files a/public/images/pokemon/icons/variant/6/666-jungle_2.png and b/public/images/pokemon/icons/variant/6/666-jungle_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-jungle_3.png b/public/images/pokemon/icons/variant/6/666-jungle_3.png index 27f202c3f89..dc0b4897176 100644 Binary files a/public/images/pokemon/icons/variant/6/666-jungle_3.png and b/public/images/pokemon/icons/variant/6/666-jungle_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-marine_2.png b/public/images/pokemon/icons/variant/6/666-marine_2.png index fecac5f1a56..e833140cb39 100644 Binary files a/public/images/pokemon/icons/variant/6/666-marine_2.png and b/public/images/pokemon/icons/variant/6/666-marine_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-marine_3.png b/public/images/pokemon/icons/variant/6/666-marine_3.png index a6e6c678373..253f7031bff 100644 Binary files a/public/images/pokemon/icons/variant/6/666-marine_3.png and b/public/images/pokemon/icons/variant/6/666-marine_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-meadow_2.png b/public/images/pokemon/icons/variant/6/666-meadow_2.png index d9708f5335b..d1da66ad5a0 100644 Binary files a/public/images/pokemon/icons/variant/6/666-meadow_2.png and b/public/images/pokemon/icons/variant/6/666-meadow_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-meadow_3.png b/public/images/pokemon/icons/variant/6/666-meadow_3.png index 468668c3706..bef908ab006 100644 Binary files a/public/images/pokemon/icons/variant/6/666-meadow_3.png and b/public/images/pokemon/icons/variant/6/666-meadow_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-modern_2.png b/public/images/pokemon/icons/variant/6/666-modern_2.png index 85fa6dcdb17..cca1b3ab610 100644 Binary files a/public/images/pokemon/icons/variant/6/666-modern_2.png and b/public/images/pokemon/icons/variant/6/666-modern_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-modern_3.png b/public/images/pokemon/icons/variant/6/666-modern_3.png index d925d62bf44..e7ebb611e0f 100644 Binary files a/public/images/pokemon/icons/variant/6/666-modern_3.png and b/public/images/pokemon/icons/variant/6/666-modern_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-monsoon_2.png b/public/images/pokemon/icons/variant/6/666-monsoon_2.png index 7ea69bd1c91..b17955f1975 100644 Binary files a/public/images/pokemon/icons/variant/6/666-monsoon_2.png and b/public/images/pokemon/icons/variant/6/666-monsoon_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-monsoon_3.png b/public/images/pokemon/icons/variant/6/666-monsoon_3.png index 718572db21f..eccff8f7ab3 100644 Binary files a/public/images/pokemon/icons/variant/6/666-monsoon_3.png and b/public/images/pokemon/icons/variant/6/666-monsoon_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-ocean_2.png b/public/images/pokemon/icons/variant/6/666-ocean_2.png index cdb012595a2..0b52568f3be 100644 Binary files a/public/images/pokemon/icons/variant/6/666-ocean_2.png and b/public/images/pokemon/icons/variant/6/666-ocean_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-ocean_3.png b/public/images/pokemon/icons/variant/6/666-ocean_3.png index eb2e996bfbb..df5ea092ca6 100644 Binary files a/public/images/pokemon/icons/variant/6/666-ocean_3.png and b/public/images/pokemon/icons/variant/6/666-ocean_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-poke-ball_2.png b/public/images/pokemon/icons/variant/6/666-poke-ball_2.png index 2aacc409f13..3b659fd7192 100644 Binary files a/public/images/pokemon/icons/variant/6/666-poke-ball_2.png and b/public/images/pokemon/icons/variant/6/666-poke-ball_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-poke-ball_3.png b/public/images/pokemon/icons/variant/6/666-poke-ball_3.png index a41e6253560..c6f8804340b 100644 Binary files a/public/images/pokemon/icons/variant/6/666-poke-ball_3.png and b/public/images/pokemon/icons/variant/6/666-poke-ball_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-polar_2.png b/public/images/pokemon/icons/variant/6/666-polar_2.png index 2f69fdf66ab..2c13939a227 100644 Binary files a/public/images/pokemon/icons/variant/6/666-polar_2.png and b/public/images/pokemon/icons/variant/6/666-polar_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-polar_3.png b/public/images/pokemon/icons/variant/6/666-polar_3.png index 6a8bf6098fa..634c47ee70e 100644 Binary files a/public/images/pokemon/icons/variant/6/666-polar_3.png and b/public/images/pokemon/icons/variant/6/666-polar_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-river_2.png b/public/images/pokemon/icons/variant/6/666-river_2.png index 66a892a9440..4da6f483c0f 100644 Binary files a/public/images/pokemon/icons/variant/6/666-river_2.png and b/public/images/pokemon/icons/variant/6/666-river_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-river_3.png b/public/images/pokemon/icons/variant/6/666-river_3.png index 245d0b0423b..1f73403b3c7 100644 Binary files a/public/images/pokemon/icons/variant/6/666-river_3.png and b/public/images/pokemon/icons/variant/6/666-river_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-sandstorm_2.png b/public/images/pokemon/icons/variant/6/666-sandstorm_2.png index 5376a7f4f6f..e329be1b5bd 100644 Binary files a/public/images/pokemon/icons/variant/6/666-sandstorm_2.png and b/public/images/pokemon/icons/variant/6/666-sandstorm_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-sandstorm_3.png b/public/images/pokemon/icons/variant/6/666-sandstorm_3.png index a2249c34fa2..d26eab2838b 100644 Binary files a/public/images/pokemon/icons/variant/6/666-sandstorm_3.png and b/public/images/pokemon/icons/variant/6/666-sandstorm_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-savanna_2.png b/public/images/pokemon/icons/variant/6/666-savanna_2.png index a7e9fedf674..00b3ddd066d 100644 Binary files a/public/images/pokemon/icons/variant/6/666-savanna_2.png and b/public/images/pokemon/icons/variant/6/666-savanna_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-savanna_3.png b/public/images/pokemon/icons/variant/6/666-savanna_3.png index 981b8155798..88d9eb47566 100644 Binary files a/public/images/pokemon/icons/variant/6/666-savanna_3.png and b/public/images/pokemon/icons/variant/6/666-savanna_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-sun_2.png b/public/images/pokemon/icons/variant/6/666-sun_2.png index 67505c4df98..f03ba787b54 100644 Binary files a/public/images/pokemon/icons/variant/6/666-sun_2.png and b/public/images/pokemon/icons/variant/6/666-sun_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-sun_3.png b/public/images/pokemon/icons/variant/6/666-sun_3.png index 393a37c8773..695af993486 100644 Binary files a/public/images/pokemon/icons/variant/6/666-sun_3.png and b/public/images/pokemon/icons/variant/6/666-sun_3.png differ diff --git a/public/images/pokemon/icons/variant/6/666-tundra_2.png b/public/images/pokemon/icons/variant/6/666-tundra_2.png index 489013d6748..1ba8fce2b0c 100644 Binary files a/public/images/pokemon/icons/variant/6/666-tundra_2.png and b/public/images/pokemon/icons/variant/6/666-tundra_2.png differ diff --git a/public/images/pokemon/icons/variant/6/666-tundra_3.png b/public/images/pokemon/icons/variant/6/666-tundra_3.png index 4127fd68b79..a0377a2412a 100644 Binary files a/public/images/pokemon/icons/variant/6/666-tundra_3.png and b/public/images/pokemon/icons/variant/6/666-tundra_3.png differ diff --git a/public/images/pokemon/icons/variant/6/669-blue_2.png b/public/images/pokemon/icons/variant/6/669-blue_2.png index d6f545f8db4..4aa58d616b4 100644 Binary files a/public/images/pokemon/icons/variant/6/669-blue_2.png and b/public/images/pokemon/icons/variant/6/669-blue_2.png differ diff --git a/public/images/pokemon/icons/variant/6/669-blue_3.png b/public/images/pokemon/icons/variant/6/669-blue_3.png index 72df3b2555a..4620b3521b2 100644 Binary files a/public/images/pokemon/icons/variant/6/669-blue_3.png and b/public/images/pokemon/icons/variant/6/669-blue_3.png differ diff --git a/public/images/pokemon/icons/variant/6/669-orange_2.png b/public/images/pokemon/icons/variant/6/669-orange_2.png index d2fe737b886..b8d1e21833e 100644 Binary files a/public/images/pokemon/icons/variant/6/669-orange_2.png and b/public/images/pokemon/icons/variant/6/669-orange_2.png differ diff --git a/public/images/pokemon/icons/variant/6/669-orange_3.png b/public/images/pokemon/icons/variant/6/669-orange_3.png index 886794562fb..4ce54804193 100644 Binary files a/public/images/pokemon/icons/variant/6/669-orange_3.png and b/public/images/pokemon/icons/variant/6/669-orange_3.png differ diff --git a/public/images/pokemon/icons/variant/6/669-red_2.png b/public/images/pokemon/icons/variant/6/669-red_2.png index b86bc30ad3d..364d0e34620 100644 Binary files a/public/images/pokemon/icons/variant/6/669-red_2.png and b/public/images/pokemon/icons/variant/6/669-red_2.png differ diff --git a/public/images/pokemon/icons/variant/6/669-red_3.png b/public/images/pokemon/icons/variant/6/669-red_3.png index 7400bf698d3..1f2efcfa310 100644 Binary files a/public/images/pokemon/icons/variant/6/669-red_3.png and b/public/images/pokemon/icons/variant/6/669-red_3.png differ diff --git a/public/images/pokemon/icons/variant/6/669-white_2.png b/public/images/pokemon/icons/variant/6/669-white_2.png index d3cc24cdb4b..431a289c459 100644 Binary files a/public/images/pokemon/icons/variant/6/669-white_2.png and b/public/images/pokemon/icons/variant/6/669-white_2.png differ diff --git a/public/images/pokemon/icons/variant/6/669-white_3.png b/public/images/pokemon/icons/variant/6/669-white_3.png index fab0591042d..5283f9e3ba5 100644 Binary files a/public/images/pokemon/icons/variant/6/669-white_3.png and b/public/images/pokemon/icons/variant/6/669-white_3.png differ diff --git a/public/images/pokemon/icons/variant/6/669-yellow_2.png b/public/images/pokemon/icons/variant/6/669-yellow_2.png index 87feaaf1f1d..32de1f83cba 100644 Binary files a/public/images/pokemon/icons/variant/6/669-yellow_2.png and b/public/images/pokemon/icons/variant/6/669-yellow_2.png differ diff --git a/public/images/pokemon/icons/variant/6/669-yellow_3.png b/public/images/pokemon/icons/variant/6/669-yellow_3.png index 41fe7eddd72..da90237f822 100644 Binary files a/public/images/pokemon/icons/variant/6/669-yellow_3.png and b/public/images/pokemon/icons/variant/6/669-yellow_3.png differ diff --git a/public/images/pokemon/icons/variant/6/670-blue_2.png b/public/images/pokemon/icons/variant/6/670-blue_2.png index 650685edd9a..0b5d6f73bed 100644 Binary files a/public/images/pokemon/icons/variant/6/670-blue_2.png and b/public/images/pokemon/icons/variant/6/670-blue_2.png differ diff --git a/public/images/pokemon/icons/variant/6/670-blue_3.png b/public/images/pokemon/icons/variant/6/670-blue_3.png index 50a0051db07..e4dcfc81987 100644 Binary files a/public/images/pokemon/icons/variant/6/670-blue_3.png and b/public/images/pokemon/icons/variant/6/670-blue_3.png differ diff --git a/public/images/pokemon/icons/variant/6/670-orange_2.png b/public/images/pokemon/icons/variant/6/670-orange_2.png index 349923809b0..370c4b0141d 100644 Binary files a/public/images/pokemon/icons/variant/6/670-orange_2.png and b/public/images/pokemon/icons/variant/6/670-orange_2.png differ diff --git a/public/images/pokemon/icons/variant/6/670-orange_3.png b/public/images/pokemon/icons/variant/6/670-orange_3.png index 5b49789aa16..0883027c74f 100644 Binary files a/public/images/pokemon/icons/variant/6/670-orange_3.png and b/public/images/pokemon/icons/variant/6/670-orange_3.png differ diff --git a/public/images/pokemon/icons/variant/6/670-red_2.png b/public/images/pokemon/icons/variant/6/670-red_2.png index e50036769d8..4946ec4bc5a 100644 Binary files a/public/images/pokemon/icons/variant/6/670-red_2.png and b/public/images/pokemon/icons/variant/6/670-red_2.png differ diff --git a/public/images/pokemon/icons/variant/6/670-red_3.png b/public/images/pokemon/icons/variant/6/670-red_3.png index 591e95e3ea8..ded566626be 100644 Binary files a/public/images/pokemon/icons/variant/6/670-red_3.png and b/public/images/pokemon/icons/variant/6/670-red_3.png differ diff --git a/public/images/pokemon/icons/variant/6/670-white_2.png b/public/images/pokemon/icons/variant/6/670-white_2.png index 6c5fe0d1770..10fa1ecf5d2 100644 Binary files a/public/images/pokemon/icons/variant/6/670-white_2.png and b/public/images/pokemon/icons/variant/6/670-white_2.png differ diff --git a/public/images/pokemon/icons/variant/6/670-white_3.png b/public/images/pokemon/icons/variant/6/670-white_3.png index 73a1767a90f..d1adaa0ef6d 100644 Binary files a/public/images/pokemon/icons/variant/6/670-white_3.png and b/public/images/pokemon/icons/variant/6/670-white_3.png differ diff --git a/public/images/pokemon/icons/variant/6/670-yellow_2.png b/public/images/pokemon/icons/variant/6/670-yellow_2.png index 1cc3cfddf3e..77fce02ed5a 100644 Binary files a/public/images/pokemon/icons/variant/6/670-yellow_2.png and b/public/images/pokemon/icons/variant/6/670-yellow_2.png differ diff --git a/public/images/pokemon/icons/variant/6/670-yellow_3.png b/public/images/pokemon/icons/variant/6/670-yellow_3.png index 6152ca04d95..e4e1f1a8a82 100644 Binary files a/public/images/pokemon/icons/variant/6/670-yellow_3.png and b/public/images/pokemon/icons/variant/6/670-yellow_3.png differ diff --git a/public/images/pokemon/icons/variant/6/671-blue_2.png b/public/images/pokemon/icons/variant/6/671-blue_2.png index 44de46ce581..a8b9ce90c0d 100644 Binary files a/public/images/pokemon/icons/variant/6/671-blue_2.png and b/public/images/pokemon/icons/variant/6/671-blue_2.png differ diff --git a/public/images/pokemon/icons/variant/6/671-blue_3.png b/public/images/pokemon/icons/variant/6/671-blue_3.png index 9546669842e..2f742675881 100644 Binary files a/public/images/pokemon/icons/variant/6/671-blue_3.png and b/public/images/pokemon/icons/variant/6/671-blue_3.png differ diff --git a/public/images/pokemon/icons/variant/6/671-orange_2.png b/public/images/pokemon/icons/variant/6/671-orange_2.png index 419fc8d4781..32279fcc7ad 100644 Binary files a/public/images/pokemon/icons/variant/6/671-orange_2.png and b/public/images/pokemon/icons/variant/6/671-orange_2.png differ diff --git a/public/images/pokemon/icons/variant/6/671-orange_3.png b/public/images/pokemon/icons/variant/6/671-orange_3.png index dc5730f086e..b02909fc830 100644 Binary files a/public/images/pokemon/icons/variant/6/671-orange_3.png and b/public/images/pokemon/icons/variant/6/671-orange_3.png differ diff --git a/public/images/pokemon/icons/variant/6/671-red_2.png b/public/images/pokemon/icons/variant/6/671-red_2.png index 0a2f5d20fd6..e768ae4fead 100644 Binary files a/public/images/pokemon/icons/variant/6/671-red_2.png and b/public/images/pokemon/icons/variant/6/671-red_2.png differ diff --git a/public/images/pokemon/icons/variant/6/671-red_3.png b/public/images/pokemon/icons/variant/6/671-red_3.png index 62b6be12943..d0bd24e91a1 100644 Binary files a/public/images/pokemon/icons/variant/6/671-red_3.png and b/public/images/pokemon/icons/variant/6/671-red_3.png differ diff --git a/public/images/pokemon/icons/variant/6/671-white_2.png b/public/images/pokemon/icons/variant/6/671-white_2.png index 7bb347d0799..9824dbb17fa 100644 Binary files a/public/images/pokemon/icons/variant/6/671-white_2.png and b/public/images/pokemon/icons/variant/6/671-white_2.png differ diff --git a/public/images/pokemon/icons/variant/6/671-white_3.png b/public/images/pokemon/icons/variant/6/671-white_3.png index 9de027625c2..e589c510922 100644 Binary files a/public/images/pokemon/icons/variant/6/671-white_3.png and b/public/images/pokemon/icons/variant/6/671-white_3.png differ diff --git a/public/images/pokemon/icons/variant/6/671-yellow_2.png b/public/images/pokemon/icons/variant/6/671-yellow_2.png index 48aea0a7d99..0ea321e595e 100644 Binary files a/public/images/pokemon/icons/variant/6/671-yellow_2.png and b/public/images/pokemon/icons/variant/6/671-yellow_2.png differ diff --git a/public/images/pokemon/icons/variant/6/671-yellow_3.png b/public/images/pokemon/icons/variant/6/671-yellow_3.png index 57c17f66d77..c7a5793b447 100644 Binary files a/public/images/pokemon/icons/variant/6/671-yellow_3.png and b/public/images/pokemon/icons/variant/6/671-yellow_3.png differ diff --git a/public/images/pokemon/icons/variant/6/672_2.png b/public/images/pokemon/icons/variant/6/672_2.png index 942660daaf8..a486b6dc837 100644 Binary files a/public/images/pokemon/icons/variant/6/672_2.png and b/public/images/pokemon/icons/variant/6/672_2.png differ diff --git a/public/images/pokemon/icons/variant/6/672_3.png b/public/images/pokemon/icons/variant/6/672_3.png index 0901c7cd5a9..e2447234bc6 100644 Binary files a/public/images/pokemon/icons/variant/6/672_3.png and b/public/images/pokemon/icons/variant/6/672_3.png differ diff --git a/public/images/pokemon/icons/variant/6/673_2.png b/public/images/pokemon/icons/variant/6/673_2.png index fb5b0f3873f..c7ec85a7315 100644 Binary files a/public/images/pokemon/icons/variant/6/673_2.png and b/public/images/pokemon/icons/variant/6/673_2.png differ diff --git a/public/images/pokemon/icons/variant/6/673_3.png b/public/images/pokemon/icons/variant/6/673_3.png index 192f11f9f39..f3fd53b0260 100644 Binary files a/public/images/pokemon/icons/variant/6/673_3.png and b/public/images/pokemon/icons/variant/6/673_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-dandy_2.png b/public/images/pokemon/icons/variant/6/676-dandy_2.png index 2fb1a1a01b6..adeed9565ae 100644 Binary files a/public/images/pokemon/icons/variant/6/676-dandy_2.png and b/public/images/pokemon/icons/variant/6/676-dandy_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-dandy_3.png b/public/images/pokemon/icons/variant/6/676-dandy_3.png index ac05ae8dd3a..d381f53369f 100644 Binary files a/public/images/pokemon/icons/variant/6/676-dandy_3.png and b/public/images/pokemon/icons/variant/6/676-dandy_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-debutante_2.png b/public/images/pokemon/icons/variant/6/676-debutante_2.png index 9ec13ca1964..c73db699c5e 100644 Binary files a/public/images/pokemon/icons/variant/6/676-debutante_2.png and b/public/images/pokemon/icons/variant/6/676-debutante_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-debutante_3.png b/public/images/pokemon/icons/variant/6/676-debutante_3.png index aef6da0a1fd..40c08a5d250 100644 Binary files a/public/images/pokemon/icons/variant/6/676-debutante_3.png and b/public/images/pokemon/icons/variant/6/676-debutante_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-diamond_2.png b/public/images/pokemon/icons/variant/6/676-diamond_2.png index 1406640a69c..fb1f5b2b21a 100644 Binary files a/public/images/pokemon/icons/variant/6/676-diamond_2.png and b/public/images/pokemon/icons/variant/6/676-diamond_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-diamond_3.png b/public/images/pokemon/icons/variant/6/676-diamond_3.png index ccf477d6819..bb9f0872686 100644 Binary files a/public/images/pokemon/icons/variant/6/676-diamond_3.png and b/public/images/pokemon/icons/variant/6/676-diamond_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-heart_2.png b/public/images/pokemon/icons/variant/6/676-heart_2.png index 7f3607f8579..45b8fc76d56 100644 Binary files a/public/images/pokemon/icons/variant/6/676-heart_2.png and b/public/images/pokemon/icons/variant/6/676-heart_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-heart_3.png b/public/images/pokemon/icons/variant/6/676-heart_3.png index e8256f783ba..094d942f366 100644 Binary files a/public/images/pokemon/icons/variant/6/676-heart_3.png and b/public/images/pokemon/icons/variant/6/676-heart_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-kabuki_2.png b/public/images/pokemon/icons/variant/6/676-kabuki_2.png index ea78810582a..0c4d6347e0b 100644 Binary files a/public/images/pokemon/icons/variant/6/676-kabuki_2.png and b/public/images/pokemon/icons/variant/6/676-kabuki_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-kabuki_3.png b/public/images/pokemon/icons/variant/6/676-kabuki_3.png index f8501bec610..bae32976df7 100644 Binary files a/public/images/pokemon/icons/variant/6/676-kabuki_3.png and b/public/images/pokemon/icons/variant/6/676-kabuki_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-la-reine_2.png b/public/images/pokemon/icons/variant/6/676-la-reine_2.png index 5d4cb6bbea0..e7ff5686e9a 100644 Binary files a/public/images/pokemon/icons/variant/6/676-la-reine_2.png and b/public/images/pokemon/icons/variant/6/676-la-reine_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-la-reine_3.png b/public/images/pokemon/icons/variant/6/676-la-reine_3.png index 57488ba17e2..03d508417e3 100644 Binary files a/public/images/pokemon/icons/variant/6/676-la-reine_3.png and b/public/images/pokemon/icons/variant/6/676-la-reine_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-matron_2.png b/public/images/pokemon/icons/variant/6/676-matron_2.png index e7bd18d5a10..e634f31afef 100644 Binary files a/public/images/pokemon/icons/variant/6/676-matron_2.png and b/public/images/pokemon/icons/variant/6/676-matron_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-matron_3.png b/public/images/pokemon/icons/variant/6/676-matron_3.png index a8870d9ed20..6f301dcce74 100644 Binary files a/public/images/pokemon/icons/variant/6/676-matron_3.png and b/public/images/pokemon/icons/variant/6/676-matron_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-pharaoh_2.png b/public/images/pokemon/icons/variant/6/676-pharaoh_2.png index 96d60fa6d4c..9a00ec309f8 100644 Binary files a/public/images/pokemon/icons/variant/6/676-pharaoh_2.png and b/public/images/pokemon/icons/variant/6/676-pharaoh_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-pharaoh_3.png b/public/images/pokemon/icons/variant/6/676-pharaoh_3.png index db2de83c8ef..12dd41d18fa 100644 Binary files a/public/images/pokemon/icons/variant/6/676-pharaoh_3.png and b/public/images/pokemon/icons/variant/6/676-pharaoh_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676-star_2.png b/public/images/pokemon/icons/variant/6/676-star_2.png index e2a58c698f6..b05241035c6 100644 Binary files a/public/images/pokemon/icons/variant/6/676-star_2.png and b/public/images/pokemon/icons/variant/6/676-star_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676-star_3.png b/public/images/pokemon/icons/variant/6/676-star_3.png index 7c4fdc4efb1..46dc25378e2 100644 Binary files a/public/images/pokemon/icons/variant/6/676-star_3.png and b/public/images/pokemon/icons/variant/6/676-star_3.png differ diff --git a/public/images/pokemon/icons/variant/6/676_2.png b/public/images/pokemon/icons/variant/6/676_2.png index 56bcc1a7a34..aded042f7fa 100644 Binary files a/public/images/pokemon/icons/variant/6/676_2.png and b/public/images/pokemon/icons/variant/6/676_2.png differ diff --git a/public/images/pokemon/icons/variant/6/676_3.png b/public/images/pokemon/icons/variant/6/676_3.png index accb6f96f66..1765bbfec42 100644 Binary files a/public/images/pokemon/icons/variant/6/676_3.png and b/public/images/pokemon/icons/variant/6/676_3.png differ diff --git a/public/images/pokemon/icons/variant/6/677_2.png b/public/images/pokemon/icons/variant/6/677_2.png index df72af379d6..7165f6268be 100644 Binary files a/public/images/pokemon/icons/variant/6/677_2.png and b/public/images/pokemon/icons/variant/6/677_2.png differ diff --git a/public/images/pokemon/icons/variant/6/677_3.png b/public/images/pokemon/icons/variant/6/677_3.png index 3eaf9b54ef8..fdf2004fae8 100644 Binary files a/public/images/pokemon/icons/variant/6/677_3.png and b/public/images/pokemon/icons/variant/6/677_3.png differ diff --git a/public/images/pokemon/icons/variant/6/678-female_2.png b/public/images/pokemon/icons/variant/6/678-female_2.png index 220e8a97077..a4bf805ce26 100644 Binary files a/public/images/pokemon/icons/variant/6/678-female_2.png and b/public/images/pokemon/icons/variant/6/678-female_2.png differ diff --git a/public/images/pokemon/icons/variant/6/678-female_3.png b/public/images/pokemon/icons/variant/6/678-female_3.png index d27883df1ae..14ab1d0a0d0 100644 Binary files a/public/images/pokemon/icons/variant/6/678-female_3.png and b/public/images/pokemon/icons/variant/6/678-female_3.png differ diff --git a/public/images/pokemon/icons/variant/6/678_2.png b/public/images/pokemon/icons/variant/6/678_2.png index 9c625e911c0..bc0173eda2e 100644 Binary files a/public/images/pokemon/icons/variant/6/678_2.png and b/public/images/pokemon/icons/variant/6/678_2.png differ diff --git a/public/images/pokemon/icons/variant/6/678_3.png b/public/images/pokemon/icons/variant/6/678_3.png index 372759b3aa4..7c838c75bf2 100644 Binary files a/public/images/pokemon/icons/variant/6/678_3.png and b/public/images/pokemon/icons/variant/6/678_3.png differ diff --git a/public/images/pokemon/icons/variant/6/682_2.png b/public/images/pokemon/icons/variant/6/682_2.png index 59c05cce665..4b1b49139e5 100644 Binary files a/public/images/pokemon/icons/variant/6/682_2.png and b/public/images/pokemon/icons/variant/6/682_2.png differ diff --git a/public/images/pokemon/icons/variant/6/682_3.png b/public/images/pokemon/icons/variant/6/682_3.png index a7c73e94eef..a2ddc0053df 100644 Binary files a/public/images/pokemon/icons/variant/6/682_3.png and b/public/images/pokemon/icons/variant/6/682_3.png differ diff --git a/public/images/pokemon/icons/variant/6/683_2.png b/public/images/pokemon/icons/variant/6/683_2.png index 7f64665f9d7..589ff284531 100644 Binary files a/public/images/pokemon/icons/variant/6/683_2.png and b/public/images/pokemon/icons/variant/6/683_2.png differ diff --git a/public/images/pokemon/icons/variant/6/683_3.png b/public/images/pokemon/icons/variant/6/683_3.png index b09a0be5fd2..437c02e6a85 100644 Binary files a/public/images/pokemon/icons/variant/6/683_3.png and b/public/images/pokemon/icons/variant/6/683_3.png differ diff --git a/public/images/pokemon/icons/variant/6/684_2.png b/public/images/pokemon/icons/variant/6/684_2.png index 2fccca23416..2bb0435b074 100644 Binary files a/public/images/pokemon/icons/variant/6/684_2.png and b/public/images/pokemon/icons/variant/6/684_2.png differ diff --git a/public/images/pokemon/icons/variant/6/684_3.png b/public/images/pokemon/icons/variant/6/684_3.png index 9c09475db49..ebd24af38ad 100644 Binary files a/public/images/pokemon/icons/variant/6/684_3.png and b/public/images/pokemon/icons/variant/6/684_3.png differ diff --git a/public/images/pokemon/icons/variant/6/685_2.png b/public/images/pokemon/icons/variant/6/685_2.png index 8f52850dd2d..dd2f8e2465a 100644 Binary files a/public/images/pokemon/icons/variant/6/685_2.png and b/public/images/pokemon/icons/variant/6/685_2.png differ diff --git a/public/images/pokemon/icons/variant/6/685_3.png b/public/images/pokemon/icons/variant/6/685_3.png index ebad502551e..f1a758fed26 100644 Binary files a/public/images/pokemon/icons/variant/6/685_3.png and b/public/images/pokemon/icons/variant/6/685_3.png differ diff --git a/public/images/pokemon/icons/variant/6/688_2.png b/public/images/pokemon/icons/variant/6/688_2.png index 6fe8ba9c770..3e7c9a58c68 100644 Binary files a/public/images/pokemon/icons/variant/6/688_2.png and b/public/images/pokemon/icons/variant/6/688_2.png differ diff --git a/public/images/pokemon/icons/variant/6/688_3.png b/public/images/pokemon/icons/variant/6/688_3.png index 9586c3203a9..30e315d6329 100644 Binary files a/public/images/pokemon/icons/variant/6/688_3.png and b/public/images/pokemon/icons/variant/6/688_3.png differ diff --git a/public/images/pokemon/icons/variant/6/689_2.png b/public/images/pokemon/icons/variant/6/689_2.png index 66305ef69e8..43dc40810f7 100644 Binary files a/public/images/pokemon/icons/variant/6/689_2.png and b/public/images/pokemon/icons/variant/6/689_2.png differ diff --git a/public/images/pokemon/icons/variant/6/689_3.png b/public/images/pokemon/icons/variant/6/689_3.png index 2bdfea0ddd0..9371bfd9b7c 100644 Binary files a/public/images/pokemon/icons/variant/6/689_3.png and b/public/images/pokemon/icons/variant/6/689_3.png differ diff --git a/public/images/pokemon/icons/variant/6/690_2.png b/public/images/pokemon/icons/variant/6/690_2.png index d26f19ffeae..cae43ae44b6 100644 Binary files a/public/images/pokemon/icons/variant/6/690_2.png and b/public/images/pokemon/icons/variant/6/690_2.png differ diff --git a/public/images/pokemon/icons/variant/6/690_3.png b/public/images/pokemon/icons/variant/6/690_3.png index 44f1dc8b129..ea9e46902d4 100644 Binary files a/public/images/pokemon/icons/variant/6/690_3.png and b/public/images/pokemon/icons/variant/6/690_3.png differ diff --git a/public/images/pokemon/icons/variant/6/691_2.png b/public/images/pokemon/icons/variant/6/691_2.png index 0e941c2ec90..53e5e72e084 100644 Binary files a/public/images/pokemon/icons/variant/6/691_2.png and b/public/images/pokemon/icons/variant/6/691_2.png differ diff --git a/public/images/pokemon/icons/variant/6/691_3.png b/public/images/pokemon/icons/variant/6/691_3.png index 6c1f254636e..20dda3d9020 100644 Binary files a/public/images/pokemon/icons/variant/6/691_3.png and b/public/images/pokemon/icons/variant/6/691_3.png differ diff --git a/public/images/pokemon/icons/variant/6/692_2.png b/public/images/pokemon/icons/variant/6/692_2.png index fa6cacc70dd..96505020f36 100644 Binary files a/public/images/pokemon/icons/variant/6/692_2.png and b/public/images/pokemon/icons/variant/6/692_2.png differ diff --git a/public/images/pokemon/icons/variant/6/692_3.png b/public/images/pokemon/icons/variant/6/692_3.png index 47d0661babe..54d7c284330 100644 Binary files a/public/images/pokemon/icons/variant/6/692_3.png and b/public/images/pokemon/icons/variant/6/692_3.png differ diff --git a/public/images/pokemon/icons/variant/6/693_2.png b/public/images/pokemon/icons/variant/6/693_2.png index 9d8ea4f56cd..3f9b771746b 100644 Binary files a/public/images/pokemon/icons/variant/6/693_2.png and b/public/images/pokemon/icons/variant/6/693_2.png differ diff --git a/public/images/pokemon/icons/variant/6/693_3.png b/public/images/pokemon/icons/variant/6/693_3.png index 6f0169bb057..4469eecfd96 100644 Binary files a/public/images/pokemon/icons/variant/6/693_3.png and b/public/images/pokemon/icons/variant/6/693_3.png differ diff --git a/public/images/pokemon/icons/variant/6/696_2.png b/public/images/pokemon/icons/variant/6/696_2.png index 439efdde52a..e69bffae649 100644 Binary files a/public/images/pokemon/icons/variant/6/696_2.png and b/public/images/pokemon/icons/variant/6/696_2.png differ diff --git a/public/images/pokemon/icons/variant/6/696_3.png b/public/images/pokemon/icons/variant/6/696_3.png index e2721bd69ac..011da663705 100644 Binary files a/public/images/pokemon/icons/variant/6/696_3.png and b/public/images/pokemon/icons/variant/6/696_3.png differ diff --git a/public/images/pokemon/icons/variant/6/697_2.png b/public/images/pokemon/icons/variant/6/697_2.png index eee0fbc8415..bfab660b3aa 100644 Binary files a/public/images/pokemon/icons/variant/6/697_2.png and b/public/images/pokemon/icons/variant/6/697_2.png differ diff --git a/public/images/pokemon/icons/variant/6/697_3.png b/public/images/pokemon/icons/variant/6/697_3.png index 02b61bc05c6..89ebf6d3237 100644 Binary files a/public/images/pokemon/icons/variant/6/697_3.png and b/public/images/pokemon/icons/variant/6/697_3.png differ diff --git a/public/images/pokemon/icons/variant/6/698_2.png b/public/images/pokemon/icons/variant/6/698_2.png index 61b7d962358..7b4529dc7c7 100644 Binary files a/public/images/pokemon/icons/variant/6/698_2.png and b/public/images/pokemon/icons/variant/6/698_2.png differ diff --git a/public/images/pokemon/icons/variant/6/698_3.png b/public/images/pokemon/icons/variant/6/698_3.png index 8165d2686d7..02ec74cd91e 100644 Binary files a/public/images/pokemon/icons/variant/6/698_3.png and b/public/images/pokemon/icons/variant/6/698_3.png differ diff --git a/public/images/pokemon/icons/variant/6/699_2.png b/public/images/pokemon/icons/variant/6/699_2.png index 9bf9f4c0441..88b306800e0 100644 Binary files a/public/images/pokemon/icons/variant/6/699_2.png and b/public/images/pokemon/icons/variant/6/699_2.png differ diff --git a/public/images/pokemon/icons/variant/6/699_3.png b/public/images/pokemon/icons/variant/6/699_3.png index d6b861addbd..2455143ed76 100644 Binary files a/public/images/pokemon/icons/variant/6/699_3.png and b/public/images/pokemon/icons/variant/6/699_3.png differ diff --git a/public/images/pokemon/icons/variant/6/700_2.png b/public/images/pokemon/icons/variant/6/700_2.png index 718027f0552..eca35767bac 100644 Binary files a/public/images/pokemon/icons/variant/6/700_2.png and b/public/images/pokemon/icons/variant/6/700_2.png differ diff --git a/public/images/pokemon/icons/variant/6/700_3.png b/public/images/pokemon/icons/variant/6/700_3.png index 7a20bb24146..00c769ec08b 100644 Binary files a/public/images/pokemon/icons/variant/6/700_3.png and b/public/images/pokemon/icons/variant/6/700_3.png differ diff --git a/public/images/pokemon/icons/variant/6/702_2.png b/public/images/pokemon/icons/variant/6/702_2.png index d7b70505077..64bb6453225 100644 Binary files a/public/images/pokemon/icons/variant/6/702_2.png and b/public/images/pokemon/icons/variant/6/702_2.png differ diff --git a/public/images/pokemon/icons/variant/6/702_3.png b/public/images/pokemon/icons/variant/6/702_3.png index 91e443c323d..987590dc1fd 100644 Binary files a/public/images/pokemon/icons/variant/6/702_3.png and b/public/images/pokemon/icons/variant/6/702_3.png differ diff --git a/public/images/pokemon/icons/variant/6/703_2.png b/public/images/pokemon/icons/variant/6/703_2.png index e30a1896440..cb88ebbe0d9 100644 Binary files a/public/images/pokemon/icons/variant/6/703_2.png and b/public/images/pokemon/icons/variant/6/703_2.png differ diff --git a/public/images/pokemon/icons/variant/6/703_3.png b/public/images/pokemon/icons/variant/6/703_3.png index ac69636d1ec..65618ce2383 100644 Binary files a/public/images/pokemon/icons/variant/6/703_3.png and b/public/images/pokemon/icons/variant/6/703_3.png differ diff --git a/public/images/pokemon/icons/variant/6/704_2.png b/public/images/pokemon/icons/variant/6/704_2.png index b5ef3292868..48429a8ce07 100644 Binary files a/public/images/pokemon/icons/variant/6/704_2.png and b/public/images/pokemon/icons/variant/6/704_2.png differ diff --git a/public/images/pokemon/icons/variant/6/704_3.png b/public/images/pokemon/icons/variant/6/704_3.png index 362180b54a1..cef2bcc3930 100644 Binary files a/public/images/pokemon/icons/variant/6/704_3.png and b/public/images/pokemon/icons/variant/6/704_3.png differ diff --git a/public/images/pokemon/icons/variant/6/705_2.png b/public/images/pokemon/icons/variant/6/705_2.png index de2fd606d6b..ccdb1674485 100644 Binary files a/public/images/pokemon/icons/variant/6/705_2.png and b/public/images/pokemon/icons/variant/6/705_2.png differ diff --git a/public/images/pokemon/icons/variant/6/705_3.png b/public/images/pokemon/icons/variant/6/705_3.png index f79760bc5b4..a031e5b5b37 100644 Binary files a/public/images/pokemon/icons/variant/6/705_3.png and b/public/images/pokemon/icons/variant/6/705_3.png differ diff --git a/public/images/pokemon/icons/variant/6/706_2.png b/public/images/pokemon/icons/variant/6/706_2.png index 01999cbdd86..d124ebde337 100644 Binary files a/public/images/pokemon/icons/variant/6/706_2.png and b/public/images/pokemon/icons/variant/6/706_2.png differ diff --git a/public/images/pokemon/icons/variant/6/706_3.png b/public/images/pokemon/icons/variant/6/706_3.png index 03c46970756..7e1ccce9ea1 100644 Binary files a/public/images/pokemon/icons/variant/6/706_3.png and b/public/images/pokemon/icons/variant/6/706_3.png differ diff --git a/public/images/pokemon/icons/variant/6/708_2.png b/public/images/pokemon/icons/variant/6/708_2.png index 903a00f6164..95745e32a97 100644 Binary files a/public/images/pokemon/icons/variant/6/708_2.png and b/public/images/pokemon/icons/variant/6/708_2.png differ diff --git a/public/images/pokemon/icons/variant/6/708_3.png b/public/images/pokemon/icons/variant/6/708_3.png index 0180fca8779..08066c2873f 100644 Binary files a/public/images/pokemon/icons/variant/6/708_3.png and b/public/images/pokemon/icons/variant/6/708_3.png differ diff --git a/public/images/pokemon/icons/variant/6/709_2.png b/public/images/pokemon/icons/variant/6/709_2.png index 72eb02bb04e..19cb2c27eae 100644 Binary files a/public/images/pokemon/icons/variant/6/709_2.png and b/public/images/pokemon/icons/variant/6/709_2.png differ diff --git a/public/images/pokemon/icons/variant/6/709_3.png b/public/images/pokemon/icons/variant/6/709_3.png index c53edfa6c9f..6591b834b47 100644 Binary files a/public/images/pokemon/icons/variant/6/709_3.png and b/public/images/pokemon/icons/variant/6/709_3.png differ diff --git a/public/images/pokemon/icons/variant/6/710_2.png b/public/images/pokemon/icons/variant/6/710_2.png index 91d5b29d1ea..e952fc6cd49 100644 Binary files a/public/images/pokemon/icons/variant/6/710_2.png and b/public/images/pokemon/icons/variant/6/710_2.png differ diff --git a/public/images/pokemon/icons/variant/6/710_3.png b/public/images/pokemon/icons/variant/6/710_3.png index 02e4ca50199..18c179e6f9b 100644 Binary files a/public/images/pokemon/icons/variant/6/710_3.png and b/public/images/pokemon/icons/variant/6/710_3.png differ diff --git a/public/images/pokemon/icons/variant/6/711_1.png b/public/images/pokemon/icons/variant/6/711_1.png index b2360c10df2..b41f3d7c904 100644 Binary files a/public/images/pokemon/icons/variant/6/711_1.png and b/public/images/pokemon/icons/variant/6/711_1.png differ diff --git a/public/images/pokemon/icons/variant/6/711_2.png b/public/images/pokemon/icons/variant/6/711_2.png index eb85beda5e8..f9691077164 100644 Binary files a/public/images/pokemon/icons/variant/6/711_2.png and b/public/images/pokemon/icons/variant/6/711_2.png differ diff --git a/public/images/pokemon/icons/variant/6/711_3.png b/public/images/pokemon/icons/variant/6/711_3.png index 6e37d2ebff4..95020c1cafd 100644 Binary files a/public/images/pokemon/icons/variant/6/711_3.png and b/public/images/pokemon/icons/variant/6/711_3.png differ diff --git a/public/images/pokemon/icons/variant/6/712_2.png b/public/images/pokemon/icons/variant/6/712_2.png index f774a39bb1f..11b22e12a2d 100644 Binary files a/public/images/pokemon/icons/variant/6/712_2.png and b/public/images/pokemon/icons/variant/6/712_2.png differ diff --git a/public/images/pokemon/icons/variant/6/712_3.png b/public/images/pokemon/icons/variant/6/712_3.png index c0c88985997..60fff15b209 100644 Binary files a/public/images/pokemon/icons/variant/6/712_3.png and b/public/images/pokemon/icons/variant/6/712_3.png differ diff --git a/public/images/pokemon/icons/variant/6/713_2.png b/public/images/pokemon/icons/variant/6/713_2.png index 0da07280d15..6165dafddc3 100644 Binary files a/public/images/pokemon/icons/variant/6/713_2.png and b/public/images/pokemon/icons/variant/6/713_2.png differ diff --git a/public/images/pokemon/icons/variant/6/713_3.png b/public/images/pokemon/icons/variant/6/713_3.png index 8e6375a6409..15cc0f3d554 100644 Binary files a/public/images/pokemon/icons/variant/6/713_3.png and b/public/images/pokemon/icons/variant/6/713_3.png differ diff --git a/public/images/pokemon/icons/variant/6/714_2.png b/public/images/pokemon/icons/variant/6/714_2.png index f0b8bb556d7..4f57d01c1bc 100644 Binary files a/public/images/pokemon/icons/variant/6/714_2.png and b/public/images/pokemon/icons/variant/6/714_2.png differ diff --git a/public/images/pokemon/icons/variant/6/714_3.png b/public/images/pokemon/icons/variant/6/714_3.png index e81450f9039..643ba2b25e9 100644 Binary files a/public/images/pokemon/icons/variant/6/714_3.png and b/public/images/pokemon/icons/variant/6/714_3.png differ diff --git a/public/images/pokemon/icons/variant/6/715_2.png b/public/images/pokemon/icons/variant/6/715_2.png index d8f0ae2eea4..6c61bf2e65e 100644 Binary files a/public/images/pokemon/icons/variant/6/715_2.png and b/public/images/pokemon/icons/variant/6/715_2.png differ diff --git a/public/images/pokemon/icons/variant/6/715_3.png b/public/images/pokemon/icons/variant/6/715_3.png index f6be80d8803..cfcc192dba4 100644 Binary files a/public/images/pokemon/icons/variant/6/715_3.png and b/public/images/pokemon/icons/variant/6/715_3.png differ diff --git a/public/images/pokemon/icons/variant/6/716-active_2.png b/public/images/pokemon/icons/variant/6/716-active_2.png index 320407e81f3..2a807d0924b 100644 Binary files a/public/images/pokemon/icons/variant/6/716-active_2.png and b/public/images/pokemon/icons/variant/6/716-active_2.png differ diff --git a/public/images/pokemon/icons/variant/6/716-active_3.png b/public/images/pokemon/icons/variant/6/716-active_3.png index cb575c30f67..bafbd3597b1 100644 Binary files a/public/images/pokemon/icons/variant/6/716-active_3.png and b/public/images/pokemon/icons/variant/6/716-active_3.png differ diff --git a/public/images/pokemon/icons/variant/6/716-neutral_2.png b/public/images/pokemon/icons/variant/6/716-neutral_2.png index 51e4e640542..28ca0bac926 100644 Binary files a/public/images/pokemon/icons/variant/6/716-neutral_2.png and b/public/images/pokemon/icons/variant/6/716-neutral_2.png differ diff --git a/public/images/pokemon/icons/variant/6/716-neutral_3.png b/public/images/pokemon/icons/variant/6/716-neutral_3.png index 581686f3b06..5265e372173 100644 Binary files a/public/images/pokemon/icons/variant/6/716-neutral_3.png and b/public/images/pokemon/icons/variant/6/716-neutral_3.png differ diff --git a/public/images/pokemon/icons/variant/6/717_2.png b/public/images/pokemon/icons/variant/6/717_2.png index e99a4311980..7d6b3b8a1df 100644 Binary files a/public/images/pokemon/icons/variant/6/717_2.png and b/public/images/pokemon/icons/variant/6/717_2.png differ diff --git a/public/images/pokemon/icons/variant/6/717_3.png b/public/images/pokemon/icons/variant/6/717_3.png index 8ca50df40e4..d060be00d56 100644 Binary files a/public/images/pokemon/icons/variant/6/717_3.png and b/public/images/pokemon/icons/variant/6/717_3.png differ diff --git a/public/images/pokemon/icons/variant/6/720-unbound_1.png b/public/images/pokemon/icons/variant/6/720-unbound_1.png index e0f5e5f9e32..e1dba443411 100644 Binary files a/public/images/pokemon/icons/variant/6/720-unbound_1.png and b/public/images/pokemon/icons/variant/6/720-unbound_1.png differ diff --git a/public/images/pokemon/icons/variant/6/720-unbound_2.png b/public/images/pokemon/icons/variant/6/720-unbound_2.png index 2ff7b5f8d92..935274de994 100644 Binary files a/public/images/pokemon/icons/variant/6/720-unbound_2.png and b/public/images/pokemon/icons/variant/6/720-unbound_2.png differ diff --git a/public/images/pokemon/icons/variant/6/720-unbound_3.png b/public/images/pokemon/icons/variant/6/720-unbound_3.png index 29aa89b77e5..360d045005c 100644 Binary files a/public/images/pokemon/icons/variant/6/720-unbound_3.png and b/public/images/pokemon/icons/variant/6/720-unbound_3.png differ diff --git a/public/images/pokemon/icons/variant/6/720_1.png b/public/images/pokemon/icons/variant/6/720_1.png index 8a7f03ed222..281ec4a8d1f 100644 Binary files a/public/images/pokemon/icons/variant/6/720_1.png and b/public/images/pokemon/icons/variant/6/720_1.png differ diff --git a/public/images/pokemon/icons/variant/6/720_2.png b/public/images/pokemon/icons/variant/6/720_2.png index 632ccf7e3ab..e50ce6f340a 100644 Binary files a/public/images/pokemon/icons/variant/6/720_2.png and b/public/images/pokemon/icons/variant/6/720_2.png differ diff --git a/public/images/pokemon/icons/variant/6/720_3.png b/public/images/pokemon/icons/variant/6/720_3.png index 7d0ea61305c..fd750647bb9 100644 Binary files a/public/images/pokemon/icons/variant/6/720_3.png and b/public/images/pokemon/icons/variant/6/720_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2026_2.png b/public/images/pokemon/icons/variant/7/2026_2.png index 3b939a6c1fc..11f19658f75 100644 Binary files a/public/images/pokemon/icons/variant/7/2026_2.png and b/public/images/pokemon/icons/variant/7/2026_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2026_3.png b/public/images/pokemon/icons/variant/7/2026_3.png index f530b9cfcb3..7c7ef66c893 100644 Binary files a/public/images/pokemon/icons/variant/7/2026_3.png and b/public/images/pokemon/icons/variant/7/2026_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2027_2.png b/public/images/pokemon/icons/variant/7/2027_2.png index 33e95951d2e..8be97fea76c 100644 Binary files a/public/images/pokemon/icons/variant/7/2027_2.png and b/public/images/pokemon/icons/variant/7/2027_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2027_3.png b/public/images/pokemon/icons/variant/7/2027_3.png index 19849e146a3..fa224ab28e2 100644 Binary files a/public/images/pokemon/icons/variant/7/2027_3.png and b/public/images/pokemon/icons/variant/7/2027_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2028_2.png b/public/images/pokemon/icons/variant/7/2028_2.png index a05e916a6cd..ce97da889c3 100644 Binary files a/public/images/pokemon/icons/variant/7/2028_2.png and b/public/images/pokemon/icons/variant/7/2028_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2028_3.png b/public/images/pokemon/icons/variant/7/2028_3.png index 3521427080f..6db98f4adbc 100644 Binary files a/public/images/pokemon/icons/variant/7/2028_3.png and b/public/images/pokemon/icons/variant/7/2028_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2037_2.png b/public/images/pokemon/icons/variant/7/2037_2.png index 528793de5c5..39ce0948cae 100644 Binary files a/public/images/pokemon/icons/variant/7/2037_2.png and b/public/images/pokemon/icons/variant/7/2037_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2037_3.png b/public/images/pokemon/icons/variant/7/2037_3.png index d79fd1c2369..a68531ac5dd 100644 Binary files a/public/images/pokemon/icons/variant/7/2037_3.png and b/public/images/pokemon/icons/variant/7/2037_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2038_2.png b/public/images/pokemon/icons/variant/7/2038_2.png index d8295be1baf..f8dd825261e 100644 Binary files a/public/images/pokemon/icons/variant/7/2038_2.png and b/public/images/pokemon/icons/variant/7/2038_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2038_3.png b/public/images/pokemon/icons/variant/7/2038_3.png index 645c783b43f..1d947e63ea8 100644 Binary files a/public/images/pokemon/icons/variant/7/2038_3.png and b/public/images/pokemon/icons/variant/7/2038_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2052_2.png b/public/images/pokemon/icons/variant/7/2052_2.png index b88dece15ac..948126c9b02 100644 Binary files a/public/images/pokemon/icons/variant/7/2052_2.png and b/public/images/pokemon/icons/variant/7/2052_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2052_3.png b/public/images/pokemon/icons/variant/7/2052_3.png index 55b709aa7ba..5b08fdc9eab 100644 Binary files a/public/images/pokemon/icons/variant/7/2052_3.png and b/public/images/pokemon/icons/variant/7/2052_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2053_2.png b/public/images/pokemon/icons/variant/7/2053_2.png index 04810e6e6fd..33f728d6ff9 100644 Binary files a/public/images/pokemon/icons/variant/7/2053_2.png and b/public/images/pokemon/icons/variant/7/2053_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2053_3.png b/public/images/pokemon/icons/variant/7/2053_3.png index 81566af243a..af3187d8086 100644 Binary files a/public/images/pokemon/icons/variant/7/2053_3.png and b/public/images/pokemon/icons/variant/7/2053_3.png differ diff --git a/public/images/pokemon/icons/variant/7/2103_2.png b/public/images/pokemon/icons/variant/7/2103_2.png index d3795c35070..b04bb0843c6 100644 Binary files a/public/images/pokemon/icons/variant/7/2103_2.png and b/public/images/pokemon/icons/variant/7/2103_2.png differ diff --git a/public/images/pokemon/icons/variant/7/2103_3.png b/public/images/pokemon/icons/variant/7/2103_3.png index e24ba1eb917..2775eb6a8f9 100644 Binary files a/public/images/pokemon/icons/variant/7/2103_3.png and b/public/images/pokemon/icons/variant/7/2103_3.png differ diff --git a/public/images/pokemon/icons/variant/7/728_2.png b/public/images/pokemon/icons/variant/7/728_2.png index 3aa87703a1e..8401b8b07de 100644 Binary files a/public/images/pokemon/icons/variant/7/728_2.png and b/public/images/pokemon/icons/variant/7/728_2.png differ diff --git a/public/images/pokemon/icons/variant/7/728_3.png b/public/images/pokemon/icons/variant/7/728_3.png index 39cf53f1da2..07056d94be4 100644 Binary files a/public/images/pokemon/icons/variant/7/728_3.png and b/public/images/pokemon/icons/variant/7/728_3.png differ diff --git a/public/images/pokemon/icons/variant/7/729_2.png b/public/images/pokemon/icons/variant/7/729_2.png index 68a793b7ac2..1d91099a0a0 100644 Binary files a/public/images/pokemon/icons/variant/7/729_2.png and b/public/images/pokemon/icons/variant/7/729_2.png differ diff --git a/public/images/pokemon/icons/variant/7/729_3.png b/public/images/pokemon/icons/variant/7/729_3.png index 17acbd2783c..a5cdfb24487 100644 Binary files a/public/images/pokemon/icons/variant/7/729_3.png and b/public/images/pokemon/icons/variant/7/729_3.png differ diff --git a/public/images/pokemon/icons/variant/7/730_2.png b/public/images/pokemon/icons/variant/7/730_2.png index 2b8dd843c54..9d9ed7bcec5 100644 Binary files a/public/images/pokemon/icons/variant/7/730_2.png and b/public/images/pokemon/icons/variant/7/730_2.png differ diff --git a/public/images/pokemon/icons/variant/7/730_3.png b/public/images/pokemon/icons/variant/7/730_3.png index 0703d8cfd27..53809075474 100644 Binary files a/public/images/pokemon/icons/variant/7/730_3.png and b/public/images/pokemon/icons/variant/7/730_3.png differ diff --git a/public/images/pokemon/icons/variant/7/734_2.png b/public/images/pokemon/icons/variant/7/734_2.png index a10d3542cbf..94ba3b53967 100644 Binary files a/public/images/pokemon/icons/variant/7/734_2.png and b/public/images/pokemon/icons/variant/7/734_2.png differ diff --git a/public/images/pokemon/icons/variant/7/734_3.png b/public/images/pokemon/icons/variant/7/734_3.png index 3949f140014..94b4d34c9ae 100644 Binary files a/public/images/pokemon/icons/variant/7/734_3.png and b/public/images/pokemon/icons/variant/7/734_3.png differ diff --git a/public/images/pokemon/icons/variant/7/735_2.png b/public/images/pokemon/icons/variant/7/735_2.png index a9d0785bb2a..bec92d861b0 100644 Binary files a/public/images/pokemon/icons/variant/7/735_2.png and b/public/images/pokemon/icons/variant/7/735_2.png differ diff --git a/public/images/pokemon/icons/variant/7/735_3.png b/public/images/pokemon/icons/variant/7/735_3.png index eedc5e4d9d8..c57822e5c4d 100644 Binary files a/public/images/pokemon/icons/variant/7/735_3.png and b/public/images/pokemon/icons/variant/7/735_3.png differ diff --git a/public/images/pokemon/icons/variant/7/742_2.png b/public/images/pokemon/icons/variant/7/742_2.png index cc2a3642acc..66b692a1dc4 100644 Binary files a/public/images/pokemon/icons/variant/7/742_2.png and b/public/images/pokemon/icons/variant/7/742_2.png differ diff --git a/public/images/pokemon/icons/variant/7/742_3.png b/public/images/pokemon/icons/variant/7/742_3.png index ad0ea071f50..22b733d7e64 100644 Binary files a/public/images/pokemon/icons/variant/7/742_3.png and b/public/images/pokemon/icons/variant/7/742_3.png differ diff --git a/public/images/pokemon/icons/variant/7/743_2.png b/public/images/pokemon/icons/variant/7/743_2.png index 04455f5cfab..7a5702d8791 100644 Binary files a/public/images/pokemon/icons/variant/7/743_2.png and b/public/images/pokemon/icons/variant/7/743_2.png differ diff --git a/public/images/pokemon/icons/variant/7/743_3.png b/public/images/pokemon/icons/variant/7/743_3.png index 81e97dd05fb..eeb96fd3005 100644 Binary files a/public/images/pokemon/icons/variant/7/743_3.png and b/public/images/pokemon/icons/variant/7/743_3.png differ diff --git a/public/images/pokemon/icons/variant/7/746-school_2.png b/public/images/pokemon/icons/variant/7/746-school_2.png index 94d16db5c42..6cfb27a392f 100644 Binary files a/public/images/pokemon/icons/variant/7/746-school_2.png and b/public/images/pokemon/icons/variant/7/746-school_2.png differ diff --git a/public/images/pokemon/icons/variant/7/746-school_3.png b/public/images/pokemon/icons/variant/7/746-school_3.png index 94d16db5c42..6cfb27a392f 100644 Binary files a/public/images/pokemon/icons/variant/7/746-school_3.png and b/public/images/pokemon/icons/variant/7/746-school_3.png differ diff --git a/public/images/pokemon/icons/variant/7/746_2.png b/public/images/pokemon/icons/variant/7/746_2.png index d4897e0acf3..9fc201c1f2a 100644 Binary files a/public/images/pokemon/icons/variant/7/746_2.png and b/public/images/pokemon/icons/variant/7/746_2.png differ diff --git a/public/images/pokemon/icons/variant/7/746_3.png b/public/images/pokemon/icons/variant/7/746_3.png index 8746a45310d..e1c09a4add0 100644 Binary files a/public/images/pokemon/icons/variant/7/746_3.png and b/public/images/pokemon/icons/variant/7/746_3.png differ diff --git a/public/images/pokemon/icons/variant/7/747_2.png b/public/images/pokemon/icons/variant/7/747_2.png index 618e2d03694..dd3b6c11dbd 100644 Binary files a/public/images/pokemon/icons/variant/7/747_2.png and b/public/images/pokemon/icons/variant/7/747_2.png differ diff --git a/public/images/pokemon/icons/variant/7/747_3.png b/public/images/pokemon/icons/variant/7/747_3.png index df4ecf7373a..dbf6b1672bb 100644 Binary files a/public/images/pokemon/icons/variant/7/747_3.png and b/public/images/pokemon/icons/variant/7/747_3.png differ diff --git a/public/images/pokemon/icons/variant/7/748_2.png b/public/images/pokemon/icons/variant/7/748_2.png index 7dd1f40bebf..b9d1505a5ea 100644 Binary files a/public/images/pokemon/icons/variant/7/748_2.png and b/public/images/pokemon/icons/variant/7/748_2.png differ diff --git a/public/images/pokemon/icons/variant/7/748_3.png b/public/images/pokemon/icons/variant/7/748_3.png index 9432853a337..9250aecf268 100644 Binary files a/public/images/pokemon/icons/variant/7/748_3.png and b/public/images/pokemon/icons/variant/7/748_3.png differ diff --git a/public/images/pokemon/icons/variant/7/751_2.png b/public/images/pokemon/icons/variant/7/751_2.png index e67db17c08b..ffbcbd2f5dc 100644 Binary files a/public/images/pokemon/icons/variant/7/751_2.png and b/public/images/pokemon/icons/variant/7/751_2.png differ diff --git a/public/images/pokemon/icons/variant/7/751_3.png b/public/images/pokemon/icons/variant/7/751_3.png index 24c52de4600..e94584b3f62 100644 Binary files a/public/images/pokemon/icons/variant/7/751_3.png and b/public/images/pokemon/icons/variant/7/751_3.png differ diff --git a/public/images/pokemon/icons/variant/7/752_2.png b/public/images/pokemon/icons/variant/7/752_2.png index 89b3d0ef1bf..f7f5477bf44 100644 Binary files a/public/images/pokemon/icons/variant/7/752_2.png and b/public/images/pokemon/icons/variant/7/752_2.png differ diff --git a/public/images/pokemon/icons/variant/7/752_3.png b/public/images/pokemon/icons/variant/7/752_3.png index 3fe7b91cefd..781f788fca6 100644 Binary files a/public/images/pokemon/icons/variant/7/752_3.png and b/public/images/pokemon/icons/variant/7/752_3.png differ diff --git a/public/images/pokemon/icons/variant/7/753_2.png b/public/images/pokemon/icons/variant/7/753_2.png index 9f4eabc99e3..4dc0b80e5df 100644 Binary files a/public/images/pokemon/icons/variant/7/753_2.png and b/public/images/pokemon/icons/variant/7/753_2.png differ diff --git a/public/images/pokemon/icons/variant/7/753_3.png b/public/images/pokemon/icons/variant/7/753_3.png index 3b09bf63b27..700a0d400a9 100644 Binary files a/public/images/pokemon/icons/variant/7/753_3.png and b/public/images/pokemon/icons/variant/7/753_3.png differ diff --git a/public/images/pokemon/icons/variant/7/754_2.png b/public/images/pokemon/icons/variant/7/754_2.png index 492a51cbdfb..779d4967cdf 100644 Binary files a/public/images/pokemon/icons/variant/7/754_2.png and b/public/images/pokemon/icons/variant/7/754_2.png differ diff --git a/public/images/pokemon/icons/variant/7/754_3.png b/public/images/pokemon/icons/variant/7/754_3.png index 9c0fcb6b233..5227c43a174 100644 Binary files a/public/images/pokemon/icons/variant/7/754_3.png and b/public/images/pokemon/icons/variant/7/754_3.png differ diff --git a/public/images/pokemon/icons/variant/7/755_2.png b/public/images/pokemon/icons/variant/7/755_2.png index 0467be6c530..fcb4d7e8df1 100644 Binary files a/public/images/pokemon/icons/variant/7/755_2.png and b/public/images/pokemon/icons/variant/7/755_2.png differ diff --git a/public/images/pokemon/icons/variant/7/755_3.png b/public/images/pokemon/icons/variant/7/755_3.png index 0226bc43ba8..367eb05999a 100644 Binary files a/public/images/pokemon/icons/variant/7/755_3.png and b/public/images/pokemon/icons/variant/7/755_3.png differ diff --git a/public/images/pokemon/icons/variant/7/756_2.png b/public/images/pokemon/icons/variant/7/756_2.png index 15c497acd2d..297f868ec1b 100644 Binary files a/public/images/pokemon/icons/variant/7/756_2.png and b/public/images/pokemon/icons/variant/7/756_2.png differ diff --git a/public/images/pokemon/icons/variant/7/756_3.png b/public/images/pokemon/icons/variant/7/756_3.png index b93ddee49fa..19596de348b 100644 Binary files a/public/images/pokemon/icons/variant/7/756_3.png and b/public/images/pokemon/icons/variant/7/756_3.png differ diff --git a/public/images/pokemon/icons/variant/7/761_2.png b/public/images/pokemon/icons/variant/7/761_2.png index a8257923663..b86479909a7 100644 Binary files a/public/images/pokemon/icons/variant/7/761_2.png and b/public/images/pokemon/icons/variant/7/761_2.png differ diff --git a/public/images/pokemon/icons/variant/7/761_3.png b/public/images/pokemon/icons/variant/7/761_3.png index 46325a4f41e..792f839de36 100644 Binary files a/public/images/pokemon/icons/variant/7/761_3.png and b/public/images/pokemon/icons/variant/7/761_3.png differ diff --git a/public/images/pokemon/icons/variant/7/762_2.png b/public/images/pokemon/icons/variant/7/762_2.png index 98c42901971..43f9120b65d 100644 Binary files a/public/images/pokemon/icons/variant/7/762_2.png and b/public/images/pokemon/icons/variant/7/762_2.png differ diff --git a/public/images/pokemon/icons/variant/7/762_3.png b/public/images/pokemon/icons/variant/7/762_3.png index d26d5b370f5..5164d929c9b 100644 Binary files a/public/images/pokemon/icons/variant/7/762_3.png and b/public/images/pokemon/icons/variant/7/762_3.png differ diff --git a/public/images/pokemon/icons/variant/7/763_2.png b/public/images/pokemon/icons/variant/7/763_2.png index 49480fea9af..fbb9da759c0 100644 Binary files a/public/images/pokemon/icons/variant/7/763_2.png and b/public/images/pokemon/icons/variant/7/763_2.png differ diff --git a/public/images/pokemon/icons/variant/7/763_3.png b/public/images/pokemon/icons/variant/7/763_3.png index 5a3ef24fd7b..39e39bc43a3 100644 Binary files a/public/images/pokemon/icons/variant/7/763_3.png and b/public/images/pokemon/icons/variant/7/763_3.png differ diff --git a/public/images/pokemon/icons/variant/7/767_2.png b/public/images/pokemon/icons/variant/7/767_2.png index f15b6e875a1..900aecb39fc 100644 Binary files a/public/images/pokemon/icons/variant/7/767_2.png and b/public/images/pokemon/icons/variant/7/767_2.png differ diff --git a/public/images/pokemon/icons/variant/7/767_3.png b/public/images/pokemon/icons/variant/7/767_3.png index 561e0e050f8..8acf61ce031 100644 Binary files a/public/images/pokemon/icons/variant/7/767_3.png and b/public/images/pokemon/icons/variant/7/767_3.png differ diff --git a/public/images/pokemon/icons/variant/7/768_2.png b/public/images/pokemon/icons/variant/7/768_2.png index 93f53413739..66a01a0518d 100644 Binary files a/public/images/pokemon/icons/variant/7/768_2.png and b/public/images/pokemon/icons/variant/7/768_2.png differ diff --git a/public/images/pokemon/icons/variant/7/768_3.png b/public/images/pokemon/icons/variant/7/768_3.png index 0d60869a64e..e8eefc96e91 100644 Binary files a/public/images/pokemon/icons/variant/7/768_3.png and b/public/images/pokemon/icons/variant/7/768_3.png differ diff --git a/public/images/pokemon/icons/variant/7/771_2.png b/public/images/pokemon/icons/variant/7/771_2.png index 1a0337f6d96..183c73d89cc 100644 Binary files a/public/images/pokemon/icons/variant/7/771_2.png and b/public/images/pokemon/icons/variant/7/771_2.png differ diff --git a/public/images/pokemon/icons/variant/7/771_3.png b/public/images/pokemon/icons/variant/7/771_3.png index 3c7c95b6d16..0455523dedf 100644 Binary files a/public/images/pokemon/icons/variant/7/771_3.png and b/public/images/pokemon/icons/variant/7/771_3.png differ diff --git a/public/images/pokemon/icons/variant/7/772_2.png b/public/images/pokemon/icons/variant/7/772_2.png index cd7722918b5..a1631d8e978 100644 Binary files a/public/images/pokemon/icons/variant/7/772_2.png and b/public/images/pokemon/icons/variant/7/772_2.png differ diff --git a/public/images/pokemon/icons/variant/7/772_3.png b/public/images/pokemon/icons/variant/7/772_3.png index ca418f311e1..6c758c73686 100644 Binary files a/public/images/pokemon/icons/variant/7/772_3.png and b/public/images/pokemon/icons/variant/7/772_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-bug_2.png b/public/images/pokemon/icons/variant/7/773-bug_2.png index 76106359210..5f8bfe42aa3 100644 Binary files a/public/images/pokemon/icons/variant/7/773-bug_2.png and b/public/images/pokemon/icons/variant/7/773-bug_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-bug_3.png b/public/images/pokemon/icons/variant/7/773-bug_3.png index bbb30378bf3..28bead8ab80 100644 Binary files a/public/images/pokemon/icons/variant/7/773-bug_3.png and b/public/images/pokemon/icons/variant/7/773-bug_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-dark_2.png b/public/images/pokemon/icons/variant/7/773-dark_2.png index 3f6492e62fc..5a57e5c9ac7 100644 Binary files a/public/images/pokemon/icons/variant/7/773-dark_2.png and b/public/images/pokemon/icons/variant/7/773-dark_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-dark_3.png b/public/images/pokemon/icons/variant/7/773-dark_3.png index 35f1ce72a89..768b1b8e3b1 100644 Binary files a/public/images/pokemon/icons/variant/7/773-dark_3.png and b/public/images/pokemon/icons/variant/7/773-dark_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-dragon_2.png b/public/images/pokemon/icons/variant/7/773-dragon_2.png index e6f90fa6458..78dbe303a98 100644 Binary files a/public/images/pokemon/icons/variant/7/773-dragon_2.png and b/public/images/pokemon/icons/variant/7/773-dragon_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-dragon_3.png b/public/images/pokemon/icons/variant/7/773-dragon_3.png index c80f10c8593..5d3e284d7c7 100644 Binary files a/public/images/pokemon/icons/variant/7/773-dragon_3.png and b/public/images/pokemon/icons/variant/7/773-dragon_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-electric_2.png b/public/images/pokemon/icons/variant/7/773-electric_2.png index 50aef6defa2..1b698a16606 100644 Binary files a/public/images/pokemon/icons/variant/7/773-electric_2.png and b/public/images/pokemon/icons/variant/7/773-electric_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-electric_3.png b/public/images/pokemon/icons/variant/7/773-electric_3.png index c8f93b7a507..41d0ac4e533 100644 Binary files a/public/images/pokemon/icons/variant/7/773-electric_3.png and b/public/images/pokemon/icons/variant/7/773-electric_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-fairy_2.png b/public/images/pokemon/icons/variant/7/773-fairy_2.png index a47b0bb5ed5..3e78374cb3c 100644 Binary files a/public/images/pokemon/icons/variant/7/773-fairy_2.png and b/public/images/pokemon/icons/variant/7/773-fairy_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-fairy_3.png b/public/images/pokemon/icons/variant/7/773-fairy_3.png index 651e447aaf8..7c58bbd1393 100644 Binary files a/public/images/pokemon/icons/variant/7/773-fairy_3.png and b/public/images/pokemon/icons/variant/7/773-fairy_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-fighting_2.png b/public/images/pokemon/icons/variant/7/773-fighting_2.png index 672b128eeff..5671ac8ff11 100644 Binary files a/public/images/pokemon/icons/variant/7/773-fighting_2.png and b/public/images/pokemon/icons/variant/7/773-fighting_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-fighting_3.png b/public/images/pokemon/icons/variant/7/773-fighting_3.png index 92c727142d4..bcd8f894429 100644 Binary files a/public/images/pokemon/icons/variant/7/773-fighting_3.png and b/public/images/pokemon/icons/variant/7/773-fighting_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-fire_2.png b/public/images/pokemon/icons/variant/7/773-fire_2.png index 047c4fd7eda..da50cfc5ebb 100644 Binary files a/public/images/pokemon/icons/variant/7/773-fire_2.png and b/public/images/pokemon/icons/variant/7/773-fire_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-fire_3.png b/public/images/pokemon/icons/variant/7/773-fire_3.png index c97502c6a52..3d76f9dc192 100644 Binary files a/public/images/pokemon/icons/variant/7/773-fire_3.png and b/public/images/pokemon/icons/variant/7/773-fire_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-flying_2.png b/public/images/pokemon/icons/variant/7/773-flying_2.png index 8d1b5100292..a9d50a70876 100644 Binary files a/public/images/pokemon/icons/variant/7/773-flying_2.png and b/public/images/pokemon/icons/variant/7/773-flying_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-flying_3.png b/public/images/pokemon/icons/variant/7/773-flying_3.png index a24943f96ea..4a345b75025 100644 Binary files a/public/images/pokemon/icons/variant/7/773-flying_3.png and b/public/images/pokemon/icons/variant/7/773-flying_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-ghost_2.png b/public/images/pokemon/icons/variant/7/773-ghost_2.png index 62cc7642137..693c637f2a2 100644 Binary files a/public/images/pokemon/icons/variant/7/773-ghost_2.png and b/public/images/pokemon/icons/variant/7/773-ghost_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-ghost_3.png b/public/images/pokemon/icons/variant/7/773-ghost_3.png index 07a5772860c..fa4a858dd1f 100644 Binary files a/public/images/pokemon/icons/variant/7/773-ghost_3.png and b/public/images/pokemon/icons/variant/7/773-ghost_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-grass_2.png b/public/images/pokemon/icons/variant/7/773-grass_2.png index 1824adaa366..c58a02742a9 100644 Binary files a/public/images/pokemon/icons/variant/7/773-grass_2.png and b/public/images/pokemon/icons/variant/7/773-grass_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-grass_3.png b/public/images/pokemon/icons/variant/7/773-grass_3.png index 6f77e617764..cb175c8195b 100644 Binary files a/public/images/pokemon/icons/variant/7/773-grass_3.png and b/public/images/pokemon/icons/variant/7/773-grass_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-ground_2.png b/public/images/pokemon/icons/variant/7/773-ground_2.png index f10960073cb..9cb6d75e16a 100644 Binary files a/public/images/pokemon/icons/variant/7/773-ground_2.png and b/public/images/pokemon/icons/variant/7/773-ground_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-ground_3.png b/public/images/pokemon/icons/variant/7/773-ground_3.png index 92b52203244..d5ff11adedf 100644 Binary files a/public/images/pokemon/icons/variant/7/773-ground_3.png and b/public/images/pokemon/icons/variant/7/773-ground_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-ice_2.png b/public/images/pokemon/icons/variant/7/773-ice_2.png index 3649659ce43..542d01ef919 100644 Binary files a/public/images/pokemon/icons/variant/7/773-ice_2.png and b/public/images/pokemon/icons/variant/7/773-ice_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-ice_3.png b/public/images/pokemon/icons/variant/7/773-ice_3.png index 5a9957c7b16..f95bf4cd6b8 100644 Binary files a/public/images/pokemon/icons/variant/7/773-ice_3.png and b/public/images/pokemon/icons/variant/7/773-ice_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-poison_2.png b/public/images/pokemon/icons/variant/7/773-poison_2.png index e089ee8da59..452b6d0c0dc 100644 Binary files a/public/images/pokemon/icons/variant/7/773-poison_2.png and b/public/images/pokemon/icons/variant/7/773-poison_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-poison_3.png b/public/images/pokemon/icons/variant/7/773-poison_3.png index a8f9e6e13b3..94e462f956b 100644 Binary files a/public/images/pokemon/icons/variant/7/773-poison_3.png and b/public/images/pokemon/icons/variant/7/773-poison_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-psychic_2.png b/public/images/pokemon/icons/variant/7/773-psychic_2.png index 5f5aff5a4d1..f2dd7e1e878 100644 Binary files a/public/images/pokemon/icons/variant/7/773-psychic_2.png and b/public/images/pokemon/icons/variant/7/773-psychic_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-psychic_3.png b/public/images/pokemon/icons/variant/7/773-psychic_3.png index 09afdfb8b70..d29f9ab26e1 100644 Binary files a/public/images/pokemon/icons/variant/7/773-psychic_3.png and b/public/images/pokemon/icons/variant/7/773-psychic_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-rock_2.png b/public/images/pokemon/icons/variant/7/773-rock_2.png index 4ee9faf519b..b0ba60a140b 100644 Binary files a/public/images/pokemon/icons/variant/7/773-rock_2.png and b/public/images/pokemon/icons/variant/7/773-rock_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-rock_3.png b/public/images/pokemon/icons/variant/7/773-rock_3.png index 74072ed64d1..f91cfce767c 100644 Binary files a/public/images/pokemon/icons/variant/7/773-rock_3.png and b/public/images/pokemon/icons/variant/7/773-rock_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-steel_2.png b/public/images/pokemon/icons/variant/7/773-steel_2.png index 8f2ac96eea7..3cb16934d37 100644 Binary files a/public/images/pokemon/icons/variant/7/773-steel_2.png and b/public/images/pokemon/icons/variant/7/773-steel_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-steel_3.png b/public/images/pokemon/icons/variant/7/773-steel_3.png index 9df00071eb0..1e2f59f3e85 100644 Binary files a/public/images/pokemon/icons/variant/7/773-steel_3.png and b/public/images/pokemon/icons/variant/7/773-steel_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773-water_2.png b/public/images/pokemon/icons/variant/7/773-water_2.png index 5d5d661fdb4..d71582c165d 100644 Binary files a/public/images/pokemon/icons/variant/7/773-water_2.png and b/public/images/pokemon/icons/variant/7/773-water_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773-water_3.png b/public/images/pokemon/icons/variant/7/773-water_3.png index 0c6bc132f11..311126c8443 100644 Binary files a/public/images/pokemon/icons/variant/7/773-water_3.png and b/public/images/pokemon/icons/variant/7/773-water_3.png differ diff --git a/public/images/pokemon/icons/variant/7/773_2.png b/public/images/pokemon/icons/variant/7/773_2.png index 9a9aaf9b7a4..b2e1a450243 100644 Binary files a/public/images/pokemon/icons/variant/7/773_2.png and b/public/images/pokemon/icons/variant/7/773_2.png differ diff --git a/public/images/pokemon/icons/variant/7/773_3.png b/public/images/pokemon/icons/variant/7/773_3.png index 58cc225d68e..e460e55d16b 100644 Binary files a/public/images/pokemon/icons/variant/7/773_3.png and b/public/images/pokemon/icons/variant/7/773_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-blue-meteor_2.png b/public/images/pokemon/icons/variant/7/774-blue-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-blue-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-blue-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-blue-meteor_3.png b/public/images/pokemon/icons/variant/7/774-blue-meteor_3.png index 24c75f49ce0..62d4b5c3a46 100644 Binary files a/public/images/pokemon/icons/variant/7/774-blue-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-blue-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-blue_2.png b/public/images/pokemon/icons/variant/7/774-blue_2.png index 41ade4ded5e..9c1669b3701 100644 Binary files a/public/images/pokemon/icons/variant/7/774-blue_2.png and b/public/images/pokemon/icons/variant/7/774-blue_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-blue_3.png b/public/images/pokemon/icons/variant/7/774-blue_3.png index db5d45512d1..91f8a6411a3 100644 Binary files a/public/images/pokemon/icons/variant/7/774-blue_3.png and b/public/images/pokemon/icons/variant/7/774-blue_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-green-meteor_2.png b/public/images/pokemon/icons/variant/7/774-green-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-green-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-green-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-green-meteor_3.png b/public/images/pokemon/icons/variant/7/774-green-meteor_3.png index 31bacd83c00..2fda1e873b9 100644 Binary files a/public/images/pokemon/icons/variant/7/774-green-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-green-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-green_2.png b/public/images/pokemon/icons/variant/7/774-green_2.png index e2b94e4f549..86fcb81d718 100644 Binary files a/public/images/pokemon/icons/variant/7/774-green_2.png and b/public/images/pokemon/icons/variant/7/774-green_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-green_3.png b/public/images/pokemon/icons/variant/7/774-green_3.png index 0bfd47ab01d..eeef5bd6c83 100644 Binary files a/public/images/pokemon/icons/variant/7/774-green_3.png and b/public/images/pokemon/icons/variant/7/774-green_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-indigo-meteor_2.png b/public/images/pokemon/icons/variant/7/774-indigo-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-indigo-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-indigo-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-indigo-meteor_3.png b/public/images/pokemon/icons/variant/7/774-indigo-meteor_3.png index 0310d8f870b..263202583fb 100644 Binary files a/public/images/pokemon/icons/variant/7/774-indigo-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-indigo-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-indigo_2.png b/public/images/pokemon/icons/variant/7/774-indigo_2.png index d64a262e2f6..876b75f829c 100644 Binary files a/public/images/pokemon/icons/variant/7/774-indigo_2.png and b/public/images/pokemon/icons/variant/7/774-indigo_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-indigo_3.png b/public/images/pokemon/icons/variant/7/774-indigo_3.png index e9f84feedce..3d9d019ee9a 100644 Binary files a/public/images/pokemon/icons/variant/7/774-indigo_3.png and b/public/images/pokemon/icons/variant/7/774-indigo_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-orange-meteor_2.png b/public/images/pokemon/icons/variant/7/774-orange-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-orange-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-orange-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-orange-meteor_3.png b/public/images/pokemon/icons/variant/7/774-orange-meteor_3.png index a1be7980ea8..a9fcc716757 100644 Binary files a/public/images/pokemon/icons/variant/7/774-orange-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-orange-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-orange_2.png b/public/images/pokemon/icons/variant/7/774-orange_2.png index 7351df92617..14e50fd1387 100644 Binary files a/public/images/pokemon/icons/variant/7/774-orange_2.png and b/public/images/pokemon/icons/variant/7/774-orange_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-orange_3.png b/public/images/pokemon/icons/variant/7/774-orange_3.png index 15a9215207d..9c58cd49dc1 100644 Binary files a/public/images/pokemon/icons/variant/7/774-orange_3.png and b/public/images/pokemon/icons/variant/7/774-orange_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-red-meteor_2.png b/public/images/pokemon/icons/variant/7/774-red-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-red-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-red-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-red-meteor_3.png b/public/images/pokemon/icons/variant/7/774-red-meteor_3.png index 21288c0d8fd..5d966c332a0 100644 Binary files a/public/images/pokemon/icons/variant/7/774-red-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-red-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-red_2.png b/public/images/pokemon/icons/variant/7/774-red_2.png index 4960190529c..06d1312384e 100644 Binary files a/public/images/pokemon/icons/variant/7/774-red_2.png and b/public/images/pokemon/icons/variant/7/774-red_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-red_3.png b/public/images/pokemon/icons/variant/7/774-red_3.png index 6207ce4e521..ba137db0001 100644 Binary files a/public/images/pokemon/icons/variant/7/774-red_3.png and b/public/images/pokemon/icons/variant/7/774-red_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-violet-meteor_2.png b/public/images/pokemon/icons/variant/7/774-violet-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-violet-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-violet-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-violet-meteor_3.png b/public/images/pokemon/icons/variant/7/774-violet-meteor_3.png index c88e9edebec..84e146f5371 100644 Binary files a/public/images/pokemon/icons/variant/7/774-violet-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-violet-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-violet_2.png b/public/images/pokemon/icons/variant/7/774-violet_2.png index 3ccf9e19eb3..16976060f87 100644 Binary files a/public/images/pokemon/icons/variant/7/774-violet_2.png and b/public/images/pokemon/icons/variant/7/774-violet_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-violet_3.png b/public/images/pokemon/icons/variant/7/774-violet_3.png index 9fa22209ba7..c3d1a449537 100644 Binary files a/public/images/pokemon/icons/variant/7/774-violet_3.png and b/public/images/pokemon/icons/variant/7/774-violet_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-yellow-meteor_2.png b/public/images/pokemon/icons/variant/7/774-yellow-meteor_2.png index 66566774900..afdae4896ba 100644 Binary files a/public/images/pokemon/icons/variant/7/774-yellow-meteor_2.png and b/public/images/pokemon/icons/variant/7/774-yellow-meteor_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-yellow-meteor_3.png b/public/images/pokemon/icons/variant/7/774-yellow-meteor_3.png index 20bd5baa6bc..65289aade07 100644 Binary files a/public/images/pokemon/icons/variant/7/774-yellow-meteor_3.png and b/public/images/pokemon/icons/variant/7/774-yellow-meteor_3.png differ diff --git a/public/images/pokemon/icons/variant/7/774-yellow_2.png b/public/images/pokemon/icons/variant/7/774-yellow_2.png index 610a30fa253..3c915abc797 100644 Binary files a/public/images/pokemon/icons/variant/7/774-yellow_2.png and b/public/images/pokemon/icons/variant/7/774-yellow_2.png differ diff --git a/public/images/pokemon/icons/variant/7/774-yellow_3.png b/public/images/pokemon/icons/variant/7/774-yellow_3.png index 09e69b7193f..256606b0be4 100644 Binary files a/public/images/pokemon/icons/variant/7/774-yellow_3.png and b/public/images/pokemon/icons/variant/7/774-yellow_3.png differ diff --git a/public/images/pokemon/icons/variant/7/776_2.png b/public/images/pokemon/icons/variant/7/776_2.png index e2afe333cf6..95be276b86f 100644 Binary files a/public/images/pokemon/icons/variant/7/776_2.png and b/public/images/pokemon/icons/variant/7/776_2.png differ diff --git a/public/images/pokemon/icons/variant/7/776_3.png b/public/images/pokemon/icons/variant/7/776_3.png index f90896e61f8..e2e9e98469e 100644 Binary files a/public/images/pokemon/icons/variant/7/776_3.png and b/public/images/pokemon/icons/variant/7/776_3.png differ diff --git a/public/images/pokemon/icons/variant/7/777_2.png b/public/images/pokemon/icons/variant/7/777_2.png index 8bbec081713..8c6a515ae98 100644 Binary files a/public/images/pokemon/icons/variant/7/777_2.png and b/public/images/pokemon/icons/variant/7/777_2.png differ diff --git a/public/images/pokemon/icons/variant/7/777_3.png b/public/images/pokemon/icons/variant/7/777_3.png index 3b89a79f326..c8e79bf04e8 100644 Binary files a/public/images/pokemon/icons/variant/7/777_3.png and b/public/images/pokemon/icons/variant/7/777_3.png differ diff --git a/public/images/pokemon/icons/variant/7/778-busted_2.png b/public/images/pokemon/icons/variant/7/778-busted_2.png index 4ee05ae0a64..13cbeb7c7e0 100644 Binary files a/public/images/pokemon/icons/variant/7/778-busted_2.png and b/public/images/pokemon/icons/variant/7/778-busted_2.png differ diff --git a/public/images/pokemon/icons/variant/7/778-busted_3.png b/public/images/pokemon/icons/variant/7/778-busted_3.png index a6c987989e1..439fd73e2f2 100644 Binary files a/public/images/pokemon/icons/variant/7/778-busted_3.png and b/public/images/pokemon/icons/variant/7/778-busted_3.png differ diff --git a/public/images/pokemon/icons/variant/7/778-disguised_2.png b/public/images/pokemon/icons/variant/7/778-disguised_2.png index be945a2cfd8..23e270e99cf 100644 Binary files a/public/images/pokemon/icons/variant/7/778-disguised_2.png and b/public/images/pokemon/icons/variant/7/778-disguised_2.png differ diff --git a/public/images/pokemon/icons/variant/7/778-disguised_3.png b/public/images/pokemon/icons/variant/7/778-disguised_3.png index a51769a2687..cb75602a1ce 100644 Binary files a/public/images/pokemon/icons/variant/7/778-disguised_3.png and b/public/images/pokemon/icons/variant/7/778-disguised_3.png differ diff --git a/public/images/pokemon/icons/variant/7/779_2.png b/public/images/pokemon/icons/variant/7/779_2.png index b58c3d5e42f..3faf4bdff6a 100644 Binary files a/public/images/pokemon/icons/variant/7/779_2.png and b/public/images/pokemon/icons/variant/7/779_2.png differ diff --git a/public/images/pokemon/icons/variant/7/779_3.png b/public/images/pokemon/icons/variant/7/779_3.png index 4d3d4abd0e9..2e3a0c1a610 100644 Binary files a/public/images/pokemon/icons/variant/7/779_3.png and b/public/images/pokemon/icons/variant/7/779_3.png differ diff --git a/public/images/pokemon/icons/variant/7/780_2.png b/public/images/pokemon/icons/variant/7/780_2.png index fe40d474146..1a9d05fcf0a 100644 Binary files a/public/images/pokemon/icons/variant/7/780_2.png and b/public/images/pokemon/icons/variant/7/780_2.png differ diff --git a/public/images/pokemon/icons/variant/7/780_3.png b/public/images/pokemon/icons/variant/7/780_3.png index 6d98c750e8e..d663b0f08c9 100644 Binary files a/public/images/pokemon/icons/variant/7/780_3.png and b/public/images/pokemon/icons/variant/7/780_3.png differ diff --git a/public/images/pokemon/icons/variant/7/782_2.png b/public/images/pokemon/icons/variant/7/782_2.png index c036fa45017..f0199f14360 100644 Binary files a/public/images/pokemon/icons/variant/7/782_2.png and b/public/images/pokemon/icons/variant/7/782_2.png differ diff --git a/public/images/pokemon/icons/variant/7/782_3.png b/public/images/pokemon/icons/variant/7/782_3.png index bc1e939e14d..225c04e4e5d 100644 Binary files a/public/images/pokemon/icons/variant/7/782_3.png and b/public/images/pokemon/icons/variant/7/782_3.png differ diff --git a/public/images/pokemon/icons/variant/7/783_2.png b/public/images/pokemon/icons/variant/7/783_2.png index 1e686e95017..e2dee922824 100644 Binary files a/public/images/pokemon/icons/variant/7/783_2.png and b/public/images/pokemon/icons/variant/7/783_2.png differ diff --git a/public/images/pokemon/icons/variant/7/783_3.png b/public/images/pokemon/icons/variant/7/783_3.png index 6b61fea7298..7369e7f43a3 100644 Binary files a/public/images/pokemon/icons/variant/7/783_3.png and b/public/images/pokemon/icons/variant/7/783_3.png differ diff --git a/public/images/pokemon/icons/variant/7/784_2.png b/public/images/pokemon/icons/variant/7/784_2.png index 5f921735839..a2c3d4dbb86 100644 Binary files a/public/images/pokemon/icons/variant/7/784_2.png and b/public/images/pokemon/icons/variant/7/784_2.png differ diff --git a/public/images/pokemon/icons/variant/7/784_3.png b/public/images/pokemon/icons/variant/7/784_3.png index 077a6253a19..75acdfc1144 100644 Binary files a/public/images/pokemon/icons/variant/7/784_3.png and b/public/images/pokemon/icons/variant/7/784_3.png differ diff --git a/public/images/pokemon/icons/variant/7/789_1.png b/public/images/pokemon/icons/variant/7/789_1.png index fe970efa3d4..f05f41ab75d 100644 Binary files a/public/images/pokemon/icons/variant/7/789_1.png and b/public/images/pokemon/icons/variant/7/789_1.png differ diff --git a/public/images/pokemon/icons/variant/7/789_2.png b/public/images/pokemon/icons/variant/7/789_2.png index 40723d16b01..2dfbe2d1a82 100644 Binary files a/public/images/pokemon/icons/variant/7/789_2.png and b/public/images/pokemon/icons/variant/7/789_2.png differ diff --git a/public/images/pokemon/icons/variant/7/789_3.png b/public/images/pokemon/icons/variant/7/789_3.png index b7010acfb66..0214baaf018 100644 Binary files a/public/images/pokemon/icons/variant/7/789_3.png and b/public/images/pokemon/icons/variant/7/789_3.png differ diff --git a/public/images/pokemon/icons/variant/7/790_2.png b/public/images/pokemon/icons/variant/7/790_2.png index c0ba96c45c2..029a3d6a156 100644 Binary files a/public/images/pokemon/icons/variant/7/790_2.png and b/public/images/pokemon/icons/variant/7/790_2.png differ diff --git a/public/images/pokemon/icons/variant/7/790_3.png b/public/images/pokemon/icons/variant/7/790_3.png index c46edca22e3..0432a9a10a0 100644 Binary files a/public/images/pokemon/icons/variant/7/790_3.png and b/public/images/pokemon/icons/variant/7/790_3.png differ diff --git a/public/images/pokemon/icons/variant/7/791_1.png b/public/images/pokemon/icons/variant/7/791_1.png index dfba58f0364..3c49a90660a 100644 Binary files a/public/images/pokemon/icons/variant/7/791_1.png and b/public/images/pokemon/icons/variant/7/791_1.png differ diff --git a/public/images/pokemon/icons/variant/7/791_2.png b/public/images/pokemon/icons/variant/7/791_2.png index 98ebb49dad4..76fbecde335 100644 Binary files a/public/images/pokemon/icons/variant/7/791_2.png and b/public/images/pokemon/icons/variant/7/791_2.png differ diff --git a/public/images/pokemon/icons/variant/7/791_3.png b/public/images/pokemon/icons/variant/7/791_3.png index 6df5930b0ef..28a4865752d 100644 Binary files a/public/images/pokemon/icons/variant/7/791_3.png and b/public/images/pokemon/icons/variant/7/791_3.png differ diff --git a/public/images/pokemon/icons/variant/7/792_2.png b/public/images/pokemon/icons/variant/7/792_2.png index 21c69bac01f..cfdcfae3611 100644 Binary files a/public/images/pokemon/icons/variant/7/792_2.png and b/public/images/pokemon/icons/variant/7/792_2.png differ diff --git a/public/images/pokemon/icons/variant/7/792_3.png b/public/images/pokemon/icons/variant/7/792_3.png index 81e59050764..0c04f9a1a9c 100644 Binary files a/public/images/pokemon/icons/variant/7/792_3.png and b/public/images/pokemon/icons/variant/7/792_3.png differ diff --git a/public/images/pokemon/icons/variant/7/793_2.png b/public/images/pokemon/icons/variant/7/793_2.png index c4c8977c807..c468d108c94 100644 Binary files a/public/images/pokemon/icons/variant/7/793_2.png and b/public/images/pokemon/icons/variant/7/793_2.png differ diff --git a/public/images/pokemon/icons/variant/7/793_3.png b/public/images/pokemon/icons/variant/7/793_3.png index f64877f3e52..1ee677b1fe4 100644 Binary files a/public/images/pokemon/icons/variant/7/793_3.png and b/public/images/pokemon/icons/variant/7/793_3.png differ diff --git a/public/images/pokemon/icons/variant/7/797_2.png b/public/images/pokemon/icons/variant/7/797_2.png index beb4b1ae2c3..22286146ddb 100644 Binary files a/public/images/pokemon/icons/variant/7/797_2.png and b/public/images/pokemon/icons/variant/7/797_2.png differ diff --git a/public/images/pokemon/icons/variant/7/797_3.png b/public/images/pokemon/icons/variant/7/797_3.png index f1a7c6fa359..40911f2ffdc 100644 Binary files a/public/images/pokemon/icons/variant/7/797_3.png and b/public/images/pokemon/icons/variant/7/797_3.png differ diff --git a/public/images/pokemon/icons/variant/7/798_2.png b/public/images/pokemon/icons/variant/7/798_2.png index 2c321b72aab..490f4e5af73 100644 Binary files a/public/images/pokemon/icons/variant/7/798_2.png and b/public/images/pokemon/icons/variant/7/798_2.png differ diff --git a/public/images/pokemon/icons/variant/7/798_3.png b/public/images/pokemon/icons/variant/7/798_3.png index eda1ddf1688..260a9b5e546 100644 Binary files a/public/images/pokemon/icons/variant/7/798_3.png and b/public/images/pokemon/icons/variant/7/798_3.png differ diff --git a/public/images/pokemon/icons/variant/7/800-dawn-wings_2.png b/public/images/pokemon/icons/variant/7/800-dawn-wings_2.png index b0c4d306f03..4461a331f51 100644 Binary files a/public/images/pokemon/icons/variant/7/800-dawn-wings_2.png and b/public/images/pokemon/icons/variant/7/800-dawn-wings_2.png differ diff --git a/public/images/pokemon/icons/variant/7/800-dawn-wings_3.png b/public/images/pokemon/icons/variant/7/800-dawn-wings_3.png index bef8e4ee52e..4cfc723bd1b 100644 Binary files a/public/images/pokemon/icons/variant/7/800-dawn-wings_3.png and b/public/images/pokemon/icons/variant/7/800-dawn-wings_3.png differ diff --git a/public/images/pokemon/icons/variant/7/800-dusk-mane_2.png b/public/images/pokemon/icons/variant/7/800-dusk-mane_2.png index 571cf4736e3..7b5a0a4bd5a 100644 Binary files a/public/images/pokemon/icons/variant/7/800-dusk-mane_2.png and b/public/images/pokemon/icons/variant/7/800-dusk-mane_2.png differ diff --git a/public/images/pokemon/icons/variant/7/800-dusk-mane_3.png b/public/images/pokemon/icons/variant/7/800-dusk-mane_3.png index 96c309e8b15..0ab22786f57 100644 Binary files a/public/images/pokemon/icons/variant/7/800-dusk-mane_3.png and b/public/images/pokemon/icons/variant/7/800-dusk-mane_3.png differ diff --git a/public/images/pokemon/icons/variant/7/800-ultra_2.png b/public/images/pokemon/icons/variant/7/800-ultra_2.png index 75ee17fa2f3..fd29174a274 100644 Binary files a/public/images/pokemon/icons/variant/7/800-ultra_2.png and b/public/images/pokemon/icons/variant/7/800-ultra_2.png differ diff --git a/public/images/pokemon/icons/variant/7/800-ultra_3.png b/public/images/pokemon/icons/variant/7/800-ultra_3.png index d4d35bbfb9d..bf346652788 100644 Binary files a/public/images/pokemon/icons/variant/7/800-ultra_3.png and b/public/images/pokemon/icons/variant/7/800-ultra_3.png differ diff --git a/public/images/pokemon/icons/variant/7/800_2.png b/public/images/pokemon/icons/variant/7/800_2.png index b107563964f..25ba5d80346 100644 Binary files a/public/images/pokemon/icons/variant/7/800_2.png and b/public/images/pokemon/icons/variant/7/800_2.png differ diff --git a/public/images/pokemon/icons/variant/7/800_3.png b/public/images/pokemon/icons/variant/7/800_3.png index a726b890756..0b8607935c2 100644 Binary files a/public/images/pokemon/icons/variant/7/800_3.png and b/public/images/pokemon/icons/variant/7/800_3.png differ diff --git a/public/images/pokemon/icons/variant/7/802_1.png b/public/images/pokemon/icons/variant/7/802_1.png index d9e268dd2e7..b6de0bf80e9 100644 Binary files a/public/images/pokemon/icons/variant/7/802_1.png and b/public/images/pokemon/icons/variant/7/802_1.png differ diff --git a/public/images/pokemon/icons/variant/7/802_2.png b/public/images/pokemon/icons/variant/7/802_2.png index 039dbd12e03..ff013d7e2b9 100644 Binary files a/public/images/pokemon/icons/variant/7/802_2.png and b/public/images/pokemon/icons/variant/7/802_2.png differ diff --git a/public/images/pokemon/icons/variant/7/802_3.png b/public/images/pokemon/icons/variant/7/802_3.png index e371bd9e6bc..12c698a3422 100644 Binary files a/public/images/pokemon/icons/variant/7/802_3.png and b/public/images/pokemon/icons/variant/7/802_3.png differ diff --git a/public/images/pokemon/icons/variant/7/803_2.png b/public/images/pokemon/icons/variant/7/803_2.png index 3e20203fdef..98b0fc4f3c9 100644 Binary files a/public/images/pokemon/icons/variant/7/803_2.png and b/public/images/pokemon/icons/variant/7/803_2.png differ diff --git a/public/images/pokemon/icons/variant/7/803_3.png b/public/images/pokemon/icons/variant/7/803_3.png index 3225ab47b11..f7a36fecc78 100644 Binary files a/public/images/pokemon/icons/variant/7/803_3.png and b/public/images/pokemon/icons/variant/7/803_3.png differ diff --git a/public/images/pokemon/icons/variant/7/804_2.png b/public/images/pokemon/icons/variant/7/804_2.png index aa5a0541637..e63b150ae90 100644 Binary files a/public/images/pokemon/icons/variant/7/804_2.png and b/public/images/pokemon/icons/variant/7/804_2.png differ diff --git a/public/images/pokemon/icons/variant/7/804_3.png b/public/images/pokemon/icons/variant/7/804_3.png index a4fc1828c29..818704caac6 100644 Binary files a/public/images/pokemon/icons/variant/7/804_3.png and b/public/images/pokemon/icons/variant/7/804_3.png differ diff --git a/public/images/pokemon/icons/variant/7/807_2.png b/public/images/pokemon/icons/variant/7/807_2.png index 6e070af347d..8e350babb83 100644 Binary files a/public/images/pokemon/icons/variant/7/807_2.png and b/public/images/pokemon/icons/variant/7/807_2.png differ diff --git a/public/images/pokemon/icons/variant/7/807_3.png b/public/images/pokemon/icons/variant/7/807_3.png index 19e59272f86..e0610b25463 100644 Binary files a/public/images/pokemon/icons/variant/7/807_3.png and b/public/images/pokemon/icons/variant/7/807_3.png differ diff --git a/public/images/pokemon/icons/variant/7/808_2.png b/public/images/pokemon/icons/variant/7/808_2.png index fa2bae22836..6906187b320 100644 Binary files a/public/images/pokemon/icons/variant/7/808_2.png and b/public/images/pokemon/icons/variant/7/808_2.png differ diff --git a/public/images/pokemon/icons/variant/7/808_3.png b/public/images/pokemon/icons/variant/7/808_3.png index 49dec761bf4..0b153394c2a 100644 Binary files a/public/images/pokemon/icons/variant/7/808_3.png and b/public/images/pokemon/icons/variant/7/808_3.png differ diff --git a/public/images/pokemon/icons/variant/7/809-gigantamax_2.png b/public/images/pokemon/icons/variant/7/809-gigantamax_2.png index 00b22ee0bea..073d806e30b 100644 Binary files a/public/images/pokemon/icons/variant/7/809-gigantamax_2.png and b/public/images/pokemon/icons/variant/7/809-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/7/809-gigantamax_3.png b/public/images/pokemon/icons/variant/7/809-gigantamax_3.png index 36897253693..b54e495b59e 100644 Binary files a/public/images/pokemon/icons/variant/7/809-gigantamax_3.png and b/public/images/pokemon/icons/variant/7/809-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/7/809_2.png b/public/images/pokemon/icons/variant/7/809_2.png index c10f36cc8a2..177351ad3a9 100644 Binary files a/public/images/pokemon/icons/variant/7/809_2.png and b/public/images/pokemon/icons/variant/7/809_2.png differ diff --git a/public/images/pokemon/icons/variant/7/809_3.png b/public/images/pokemon/icons/variant/7/809_3.png index 813379e46c1..c5898897f51 100644 Binary files a/public/images/pokemon/icons/variant/7/809_3.png and b/public/images/pokemon/icons/variant/7/809_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4052_2.png b/public/images/pokemon/icons/variant/8/4052_2.png index 0d71d69fa06..140157154a9 100644 Binary files a/public/images/pokemon/icons/variant/8/4052_2.png and b/public/images/pokemon/icons/variant/8/4052_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4052_3.png b/public/images/pokemon/icons/variant/8/4052_3.png index 14038420fc3..dc775e40791 100644 Binary files a/public/images/pokemon/icons/variant/8/4052_3.png and b/public/images/pokemon/icons/variant/8/4052_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4077_2.png b/public/images/pokemon/icons/variant/8/4077_2.png index 628a55fadc8..b0b73d2c6cf 100644 Binary files a/public/images/pokemon/icons/variant/8/4077_2.png and b/public/images/pokemon/icons/variant/8/4077_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4077_3.png b/public/images/pokemon/icons/variant/8/4077_3.png index dd7f3dd8c3e..92075d08b50 100644 Binary files a/public/images/pokemon/icons/variant/8/4077_3.png and b/public/images/pokemon/icons/variant/8/4077_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4078_2.png b/public/images/pokemon/icons/variant/8/4078_2.png index 24b2de2ebd1..455092ffbdb 100644 Binary files a/public/images/pokemon/icons/variant/8/4078_2.png and b/public/images/pokemon/icons/variant/8/4078_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4078_3.png b/public/images/pokemon/icons/variant/8/4078_3.png index 4149c013238..1109165b4d4 100644 Binary files a/public/images/pokemon/icons/variant/8/4078_3.png and b/public/images/pokemon/icons/variant/8/4078_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4079_2.png b/public/images/pokemon/icons/variant/8/4079_2.png index 7ae8cf28c75..455720d5c18 100644 Binary files a/public/images/pokemon/icons/variant/8/4079_2.png and b/public/images/pokemon/icons/variant/8/4079_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4079_3.png b/public/images/pokemon/icons/variant/8/4079_3.png index 95133e719e7..d0786898ece 100644 Binary files a/public/images/pokemon/icons/variant/8/4079_3.png and b/public/images/pokemon/icons/variant/8/4079_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4080_1.png b/public/images/pokemon/icons/variant/8/4080_1.png index 73e8650265c..52671461900 100644 Binary files a/public/images/pokemon/icons/variant/8/4080_1.png and b/public/images/pokemon/icons/variant/8/4080_1.png differ diff --git a/public/images/pokemon/icons/variant/8/4080_2.png b/public/images/pokemon/icons/variant/8/4080_2.png index cfeffb41ca7..1874fea178d 100644 Binary files a/public/images/pokemon/icons/variant/8/4080_2.png and b/public/images/pokemon/icons/variant/8/4080_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4080_3.png b/public/images/pokemon/icons/variant/8/4080_3.png index 36e4fd9e55a..66c115d1c68 100644 Binary files a/public/images/pokemon/icons/variant/8/4080_3.png and b/public/images/pokemon/icons/variant/8/4080_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4144_2.png b/public/images/pokemon/icons/variant/8/4144_2.png index 956bbff1512..b15252484f4 100644 Binary files a/public/images/pokemon/icons/variant/8/4144_2.png and b/public/images/pokemon/icons/variant/8/4144_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4144_3.png b/public/images/pokemon/icons/variant/8/4144_3.png index 21b5060a38c..bcd2dd201c3 100644 Binary files a/public/images/pokemon/icons/variant/8/4144_3.png and b/public/images/pokemon/icons/variant/8/4144_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4145_2.png b/public/images/pokemon/icons/variant/8/4145_2.png index 8a1caa08927..36513d5c840 100644 Binary files a/public/images/pokemon/icons/variant/8/4145_2.png and b/public/images/pokemon/icons/variant/8/4145_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4145_3.png b/public/images/pokemon/icons/variant/8/4145_3.png index b012086156e..96961cf11ec 100644 Binary files a/public/images/pokemon/icons/variant/8/4145_3.png and b/public/images/pokemon/icons/variant/8/4145_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4146_2.png b/public/images/pokemon/icons/variant/8/4146_2.png index aad1acc2296..8dcd3c141bb 100644 Binary files a/public/images/pokemon/icons/variant/8/4146_2.png and b/public/images/pokemon/icons/variant/8/4146_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4146_3.png b/public/images/pokemon/icons/variant/8/4146_3.png index 73c9f1e49e5..554381dddce 100644 Binary files a/public/images/pokemon/icons/variant/8/4146_3.png and b/public/images/pokemon/icons/variant/8/4146_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4199_1.png b/public/images/pokemon/icons/variant/8/4199_1.png index a8c05daf088..7de5c61577d 100644 Binary files a/public/images/pokemon/icons/variant/8/4199_1.png and b/public/images/pokemon/icons/variant/8/4199_1.png differ diff --git a/public/images/pokemon/icons/variant/8/4199_2.png b/public/images/pokemon/icons/variant/8/4199_2.png index 151aad6c285..0479d5668d6 100644 Binary files a/public/images/pokemon/icons/variant/8/4199_2.png and b/public/images/pokemon/icons/variant/8/4199_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4199_3.png b/public/images/pokemon/icons/variant/8/4199_3.png index 72e730de86e..7746364a387 100644 Binary files a/public/images/pokemon/icons/variant/8/4199_3.png and b/public/images/pokemon/icons/variant/8/4199_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4222_2.png b/public/images/pokemon/icons/variant/8/4222_2.png index 699761e910b..fde76414bf2 100644 Binary files a/public/images/pokemon/icons/variant/8/4222_2.png and b/public/images/pokemon/icons/variant/8/4222_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4222_3.png b/public/images/pokemon/icons/variant/8/4222_3.png index a5cf14e7caf..cf9760e6234 100644 Binary files a/public/images/pokemon/icons/variant/8/4222_3.png and b/public/images/pokemon/icons/variant/8/4222_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4263_2.png b/public/images/pokemon/icons/variant/8/4263_2.png index abf0690d946..90910ebb3d6 100644 Binary files a/public/images/pokemon/icons/variant/8/4263_2.png and b/public/images/pokemon/icons/variant/8/4263_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4263_3.png b/public/images/pokemon/icons/variant/8/4263_3.png index eb41f1d6edf..d38eb65b2f2 100644 Binary files a/public/images/pokemon/icons/variant/8/4263_3.png and b/public/images/pokemon/icons/variant/8/4263_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4264_2.png b/public/images/pokemon/icons/variant/8/4264_2.png index a176b19139b..2eba501b04d 100644 Binary files a/public/images/pokemon/icons/variant/8/4264_2.png and b/public/images/pokemon/icons/variant/8/4264_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4264_3.png b/public/images/pokemon/icons/variant/8/4264_3.png index 80ff6ee4314..1f33f96f986 100644 Binary files a/public/images/pokemon/icons/variant/8/4264_3.png and b/public/images/pokemon/icons/variant/8/4264_3.png differ diff --git a/public/images/pokemon/icons/variant/8/4562_2.png b/public/images/pokemon/icons/variant/8/4562_2.png index 3b8add56b50..9d9a74ee8bd 100644 Binary files a/public/images/pokemon/icons/variant/8/4562_2.png and b/public/images/pokemon/icons/variant/8/4562_2.png differ diff --git a/public/images/pokemon/icons/variant/8/4562_3.png b/public/images/pokemon/icons/variant/8/4562_3.png index b3cfdd0d7c4..cc6739a8292 100644 Binary files a/public/images/pokemon/icons/variant/8/4562_3.png and b/public/images/pokemon/icons/variant/8/4562_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6100_2.png b/public/images/pokemon/icons/variant/8/6100_2.png index cc557ad082e..3ea5e06da2e 100644 Binary files a/public/images/pokemon/icons/variant/8/6100_2.png and b/public/images/pokemon/icons/variant/8/6100_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6100_3.png b/public/images/pokemon/icons/variant/8/6100_3.png index 2da6b02b3b5..731853d4e88 100644 Binary files a/public/images/pokemon/icons/variant/8/6100_3.png and b/public/images/pokemon/icons/variant/8/6100_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6101_2.png b/public/images/pokemon/icons/variant/8/6101_2.png index 471068bccb2..c8c95c9ee09 100644 Binary files a/public/images/pokemon/icons/variant/8/6101_2.png and b/public/images/pokemon/icons/variant/8/6101_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6101_3.png b/public/images/pokemon/icons/variant/8/6101_3.png index 87d1dceb2c8..f58bde17897 100644 Binary files a/public/images/pokemon/icons/variant/8/6101_3.png and b/public/images/pokemon/icons/variant/8/6101_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6215_2.png b/public/images/pokemon/icons/variant/8/6215_2.png index fcc3a2c0bec..1bdaa56730c 100644 Binary files a/public/images/pokemon/icons/variant/8/6215_2.png and b/public/images/pokemon/icons/variant/8/6215_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6215_3.png b/public/images/pokemon/icons/variant/8/6215_3.png index 5f01d7ac0dd..1a698157e45 100644 Binary files a/public/images/pokemon/icons/variant/8/6215_3.png and b/public/images/pokemon/icons/variant/8/6215_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6503_2.png b/public/images/pokemon/icons/variant/8/6503_2.png index 0098615187e..cddfefd3d65 100644 Binary files a/public/images/pokemon/icons/variant/8/6503_2.png and b/public/images/pokemon/icons/variant/8/6503_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6503_3.png b/public/images/pokemon/icons/variant/8/6503_3.png index 64428182df0..1d3bf2281f8 100644 Binary files a/public/images/pokemon/icons/variant/8/6503_3.png and b/public/images/pokemon/icons/variant/8/6503_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6549_2.png b/public/images/pokemon/icons/variant/8/6549_2.png index 89846aeb4c3..09d16f0d2b1 100644 Binary files a/public/images/pokemon/icons/variant/8/6549_2.png and b/public/images/pokemon/icons/variant/8/6549_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6549_3.png b/public/images/pokemon/icons/variant/8/6549_3.png index 017b78430d6..291f299477c 100644 Binary files a/public/images/pokemon/icons/variant/8/6549_3.png and b/public/images/pokemon/icons/variant/8/6549_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6570_2.png b/public/images/pokemon/icons/variant/8/6570_2.png index c1309423a17..774b858fb36 100644 Binary files a/public/images/pokemon/icons/variant/8/6570_2.png and b/public/images/pokemon/icons/variant/8/6570_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6570_3.png b/public/images/pokemon/icons/variant/8/6570_3.png index d01a08b1745..46f6e5604b7 100644 Binary files a/public/images/pokemon/icons/variant/8/6570_3.png and b/public/images/pokemon/icons/variant/8/6570_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6571_2.png b/public/images/pokemon/icons/variant/8/6571_2.png index 2da0932716b..38fd3ea6262 100644 Binary files a/public/images/pokemon/icons/variant/8/6571_2.png and b/public/images/pokemon/icons/variant/8/6571_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6571_3.png b/public/images/pokemon/icons/variant/8/6571_3.png index e1587335c74..6fa479054ce 100644 Binary files a/public/images/pokemon/icons/variant/8/6571_3.png and b/public/images/pokemon/icons/variant/8/6571_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6705_2.png b/public/images/pokemon/icons/variant/8/6705_2.png index 2f4a0b3f939..6e2294177a4 100644 Binary files a/public/images/pokemon/icons/variant/8/6705_2.png and b/public/images/pokemon/icons/variant/8/6705_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6705_3.png b/public/images/pokemon/icons/variant/8/6705_3.png index 47798e1e9c6..9dba45e386c 100644 Binary files a/public/images/pokemon/icons/variant/8/6705_3.png and b/public/images/pokemon/icons/variant/8/6705_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6706_2.png b/public/images/pokemon/icons/variant/8/6706_2.png index 8f2423ebd7c..13903c6d8a2 100644 Binary files a/public/images/pokemon/icons/variant/8/6706_2.png and b/public/images/pokemon/icons/variant/8/6706_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6706_3.png b/public/images/pokemon/icons/variant/8/6706_3.png index 7f265f02f4c..4e471ef1e28 100644 Binary files a/public/images/pokemon/icons/variant/8/6706_3.png and b/public/images/pokemon/icons/variant/8/6706_3.png differ diff --git a/public/images/pokemon/icons/variant/8/6713_2.png b/public/images/pokemon/icons/variant/8/6713_2.png index 1a411ee55e1..a17ce8a9560 100644 Binary files a/public/images/pokemon/icons/variant/8/6713_2.png and b/public/images/pokemon/icons/variant/8/6713_2.png differ diff --git a/public/images/pokemon/icons/variant/8/6713_3.png b/public/images/pokemon/icons/variant/8/6713_3.png index 3a90d22cfa2..0bb5a73bcb0 100644 Binary files a/public/images/pokemon/icons/variant/8/6713_3.png and b/public/images/pokemon/icons/variant/8/6713_3.png differ diff --git a/public/images/pokemon/icons/variant/8/816_2.png b/public/images/pokemon/icons/variant/8/816_2.png index 7a432a703a3..937f875c417 100644 Binary files a/public/images/pokemon/icons/variant/8/816_2.png and b/public/images/pokemon/icons/variant/8/816_2.png differ diff --git a/public/images/pokemon/icons/variant/8/816_3.png b/public/images/pokemon/icons/variant/8/816_3.png index 1ac23c4d9dd..9db82c0ab59 100644 Binary files a/public/images/pokemon/icons/variant/8/816_3.png and b/public/images/pokemon/icons/variant/8/816_3.png differ diff --git a/public/images/pokemon/icons/variant/8/817_2.png b/public/images/pokemon/icons/variant/8/817_2.png index 30929acf615..ff8ee53fa15 100644 Binary files a/public/images/pokemon/icons/variant/8/817_2.png and b/public/images/pokemon/icons/variant/8/817_2.png differ diff --git a/public/images/pokemon/icons/variant/8/817_3.png b/public/images/pokemon/icons/variant/8/817_3.png index 7b6ef890f55..4ea3ecb8285 100644 Binary files a/public/images/pokemon/icons/variant/8/817_3.png and b/public/images/pokemon/icons/variant/8/817_3.png differ diff --git a/public/images/pokemon/icons/variant/8/818-gigantamax_2.png b/public/images/pokemon/icons/variant/8/818-gigantamax_2.png index c7985a13bbd..4ac8d78f585 100644 Binary files a/public/images/pokemon/icons/variant/8/818-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/818-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/818-gigantamax_3.png b/public/images/pokemon/icons/variant/8/818-gigantamax_3.png index 19e037d3d7c..4a20ba03e5f 100644 Binary files a/public/images/pokemon/icons/variant/8/818-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/818-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/818_2.png b/public/images/pokemon/icons/variant/8/818_2.png index a943aeb828f..5de5f94a0f5 100644 Binary files a/public/images/pokemon/icons/variant/8/818_2.png and b/public/images/pokemon/icons/variant/8/818_2.png differ diff --git a/public/images/pokemon/icons/variant/8/818_3.png b/public/images/pokemon/icons/variant/8/818_3.png index 17962c63011..0518e99a7ee 100644 Binary files a/public/images/pokemon/icons/variant/8/818_3.png and b/public/images/pokemon/icons/variant/8/818_3.png differ diff --git a/public/images/pokemon/icons/variant/8/821_2.png b/public/images/pokemon/icons/variant/8/821_2.png index 5b449e5feba..6cc3584b93e 100644 Binary files a/public/images/pokemon/icons/variant/8/821_2.png and b/public/images/pokemon/icons/variant/8/821_2.png differ diff --git a/public/images/pokemon/icons/variant/8/821_3.png b/public/images/pokemon/icons/variant/8/821_3.png index eeed384b92f..86748bd9985 100644 Binary files a/public/images/pokemon/icons/variant/8/821_3.png and b/public/images/pokemon/icons/variant/8/821_3.png differ diff --git a/public/images/pokemon/icons/variant/8/822_2.png b/public/images/pokemon/icons/variant/8/822_2.png index f632cf31a47..287a2e54254 100644 Binary files a/public/images/pokemon/icons/variant/8/822_2.png and b/public/images/pokemon/icons/variant/8/822_2.png differ diff --git a/public/images/pokemon/icons/variant/8/822_3.png b/public/images/pokemon/icons/variant/8/822_3.png index 306efdb7140..5ce3def0b66 100644 Binary files a/public/images/pokemon/icons/variant/8/822_3.png and b/public/images/pokemon/icons/variant/8/822_3.png differ diff --git a/public/images/pokemon/icons/variant/8/823-gigantamax_2.png b/public/images/pokemon/icons/variant/8/823-gigantamax_2.png index 5d0a40e8cae..6d016d306e9 100644 Binary files a/public/images/pokemon/icons/variant/8/823-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/823-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/823-gigantamax_3.png b/public/images/pokemon/icons/variant/8/823-gigantamax_3.png index c249206b3e8..fef9dd58c73 100644 Binary files a/public/images/pokemon/icons/variant/8/823-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/823-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/823_2.png b/public/images/pokemon/icons/variant/8/823_2.png index dfd5d3dbf0d..755df93af7d 100644 Binary files a/public/images/pokemon/icons/variant/8/823_2.png and b/public/images/pokemon/icons/variant/8/823_2.png differ diff --git a/public/images/pokemon/icons/variant/8/823_3.png b/public/images/pokemon/icons/variant/8/823_3.png index 881c79314a7..03088bc4bd9 100644 Binary files a/public/images/pokemon/icons/variant/8/823_3.png and b/public/images/pokemon/icons/variant/8/823_3.png differ diff --git a/public/images/pokemon/icons/variant/8/829_2.png b/public/images/pokemon/icons/variant/8/829_2.png index 350d90c1269..5a8f800ccfc 100644 Binary files a/public/images/pokemon/icons/variant/8/829_2.png and b/public/images/pokemon/icons/variant/8/829_2.png differ diff --git a/public/images/pokemon/icons/variant/8/829_3.png b/public/images/pokemon/icons/variant/8/829_3.png index 5fcba4d0bc9..588962a6907 100644 Binary files a/public/images/pokemon/icons/variant/8/829_3.png and b/public/images/pokemon/icons/variant/8/829_3.png differ diff --git a/public/images/pokemon/icons/variant/8/830_2.png b/public/images/pokemon/icons/variant/8/830_2.png index dad419af7f3..78096e39a6c 100644 Binary files a/public/images/pokemon/icons/variant/8/830_2.png and b/public/images/pokemon/icons/variant/8/830_2.png differ diff --git a/public/images/pokemon/icons/variant/8/830_3.png b/public/images/pokemon/icons/variant/8/830_3.png index a50fbb04f8f..ec85a8fcae9 100644 Binary files a/public/images/pokemon/icons/variant/8/830_3.png and b/public/images/pokemon/icons/variant/8/830_3.png differ diff --git a/public/images/pokemon/icons/variant/8/835_2.png b/public/images/pokemon/icons/variant/8/835_2.png index 73840f23af5..1a350630ac9 100644 Binary files a/public/images/pokemon/icons/variant/8/835_2.png and b/public/images/pokemon/icons/variant/8/835_2.png differ diff --git a/public/images/pokemon/icons/variant/8/835_3.png b/public/images/pokemon/icons/variant/8/835_3.png index 46eca8da04a..c260ca19e47 100644 Binary files a/public/images/pokemon/icons/variant/8/835_3.png and b/public/images/pokemon/icons/variant/8/835_3.png differ diff --git a/public/images/pokemon/icons/variant/8/836_2.png b/public/images/pokemon/icons/variant/8/836_2.png index d85c4066966..1696a248126 100644 Binary files a/public/images/pokemon/icons/variant/8/836_2.png and b/public/images/pokemon/icons/variant/8/836_2.png differ diff --git a/public/images/pokemon/icons/variant/8/836_3.png b/public/images/pokemon/icons/variant/8/836_3.png index 2c3dc0e4146..13372e3194f 100644 Binary files a/public/images/pokemon/icons/variant/8/836_3.png and b/public/images/pokemon/icons/variant/8/836_3.png differ diff --git a/public/images/pokemon/icons/variant/8/840_2.png b/public/images/pokemon/icons/variant/8/840_2.png index 796057e93fb..57191460277 100644 Binary files a/public/images/pokemon/icons/variant/8/840_2.png and b/public/images/pokemon/icons/variant/8/840_2.png differ diff --git a/public/images/pokemon/icons/variant/8/840_3.png b/public/images/pokemon/icons/variant/8/840_3.png index de8206c7fd7..62d1cb2e806 100644 Binary files a/public/images/pokemon/icons/variant/8/840_3.png and b/public/images/pokemon/icons/variant/8/840_3.png differ diff --git a/public/images/pokemon/icons/variant/8/841-gigantamax_2.png b/public/images/pokemon/icons/variant/8/841-gigantamax_2.png index aaed8081eec..d11656eaf74 100644 Binary files a/public/images/pokemon/icons/variant/8/841-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/841-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/841-gigantamax_3.png b/public/images/pokemon/icons/variant/8/841-gigantamax_3.png index 3ae323c8677..c11522fdab4 100644 Binary files a/public/images/pokemon/icons/variant/8/841-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/841-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/841_2.png b/public/images/pokemon/icons/variant/8/841_2.png index d1a57120993..eaf127aee4e 100644 Binary files a/public/images/pokemon/icons/variant/8/841_2.png and b/public/images/pokemon/icons/variant/8/841_2.png differ diff --git a/public/images/pokemon/icons/variant/8/841_3.png b/public/images/pokemon/icons/variant/8/841_3.png index 5eaf8ea1c57..79c73d87ff6 100644 Binary files a/public/images/pokemon/icons/variant/8/841_3.png and b/public/images/pokemon/icons/variant/8/841_3.png differ diff --git a/public/images/pokemon/icons/variant/8/842-gigantamax_2.png b/public/images/pokemon/icons/variant/8/842-gigantamax_2.png index aaed8081eec..d11656eaf74 100644 Binary files a/public/images/pokemon/icons/variant/8/842-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/842-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/842-gigantamax_3.png b/public/images/pokemon/icons/variant/8/842-gigantamax_3.png index 3ae323c8677..c11522fdab4 100644 Binary files a/public/images/pokemon/icons/variant/8/842-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/842-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/842_2.png b/public/images/pokemon/icons/variant/8/842_2.png index 87de609f819..e5acc6b53fe 100644 Binary files a/public/images/pokemon/icons/variant/8/842_2.png and b/public/images/pokemon/icons/variant/8/842_2.png differ diff --git a/public/images/pokemon/icons/variant/8/842_3.png b/public/images/pokemon/icons/variant/8/842_3.png index 15dfe7ea02c..0749c698188 100644 Binary files a/public/images/pokemon/icons/variant/8/842_3.png and b/public/images/pokemon/icons/variant/8/842_3.png differ diff --git a/public/images/pokemon/icons/variant/8/850_2.png b/public/images/pokemon/icons/variant/8/850_2.png index 6b0d9c0634a..f4e2f2976e0 100644 Binary files a/public/images/pokemon/icons/variant/8/850_2.png and b/public/images/pokemon/icons/variant/8/850_2.png differ diff --git a/public/images/pokemon/icons/variant/8/850_3.png b/public/images/pokemon/icons/variant/8/850_3.png index 646f2c44bd8..ae561a5eb3d 100644 Binary files a/public/images/pokemon/icons/variant/8/850_3.png and b/public/images/pokemon/icons/variant/8/850_3.png differ diff --git a/public/images/pokemon/icons/variant/8/851-gigantamax.png b/public/images/pokemon/icons/variant/8/851-gigantamax.png index e757af7b4fa..e53db7f8370 100644 Binary files a/public/images/pokemon/icons/variant/8/851-gigantamax.png and b/public/images/pokemon/icons/variant/8/851-gigantamax.png differ diff --git a/public/images/pokemon/icons/variant/8/851-gigantamax_2.png b/public/images/pokemon/icons/variant/8/851-gigantamax_2.png index 081d8284b3d..8d84835ed13 100644 Binary files a/public/images/pokemon/icons/variant/8/851-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/851-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/851-gigantamax_3.png b/public/images/pokemon/icons/variant/8/851-gigantamax_3.png index 6d26a7395f2..a4b120de57e 100644 Binary files a/public/images/pokemon/icons/variant/8/851-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/851-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/851_2.png b/public/images/pokemon/icons/variant/8/851_2.png index 9da1c12a8a6..53ecf005566 100644 Binary files a/public/images/pokemon/icons/variant/8/851_2.png and b/public/images/pokemon/icons/variant/8/851_2.png differ diff --git a/public/images/pokemon/icons/variant/8/851_3.png b/public/images/pokemon/icons/variant/8/851_3.png index 32e9ec3cd42..a72056f4412 100644 Binary files a/public/images/pokemon/icons/variant/8/851_3.png and b/public/images/pokemon/icons/variant/8/851_3.png differ diff --git a/public/images/pokemon/icons/variant/8/851s-gigantamax.png b/public/images/pokemon/icons/variant/8/851s-gigantamax.png index 73fb57b8a5a..eb4d9d10cb1 100644 Binary files a/public/images/pokemon/icons/variant/8/851s-gigantamax.png and b/public/images/pokemon/icons/variant/8/851s-gigantamax.png differ diff --git a/public/images/pokemon/icons/variant/8/854_2.png b/public/images/pokemon/icons/variant/8/854_2.png index 63faa5351d7..57a9ba5e6bc 100644 Binary files a/public/images/pokemon/icons/variant/8/854_2.png and b/public/images/pokemon/icons/variant/8/854_2.png differ diff --git a/public/images/pokemon/icons/variant/8/854_3.png b/public/images/pokemon/icons/variant/8/854_3.png index b6c548087e2..eed80db1edc 100644 Binary files a/public/images/pokemon/icons/variant/8/854_3.png and b/public/images/pokemon/icons/variant/8/854_3.png differ diff --git a/public/images/pokemon/icons/variant/8/855_2.png b/public/images/pokemon/icons/variant/8/855_2.png index 351537f6891..2ad4b467e18 100644 Binary files a/public/images/pokemon/icons/variant/8/855_2.png and b/public/images/pokemon/icons/variant/8/855_2.png differ diff --git a/public/images/pokemon/icons/variant/8/855_3.png b/public/images/pokemon/icons/variant/8/855_3.png index c664b10617d..4d7fb573cce 100644 Binary files a/public/images/pokemon/icons/variant/8/855_3.png and b/public/images/pokemon/icons/variant/8/855_3.png differ diff --git a/public/images/pokemon/icons/variant/8/856_2.png b/public/images/pokemon/icons/variant/8/856_2.png index 6474bf08629..92c98373f56 100644 Binary files a/public/images/pokemon/icons/variant/8/856_2.png and b/public/images/pokemon/icons/variant/8/856_2.png differ diff --git a/public/images/pokemon/icons/variant/8/856_3.png b/public/images/pokemon/icons/variant/8/856_3.png index c5898aa47e0..f35ecd5cf7a 100644 Binary files a/public/images/pokemon/icons/variant/8/856_3.png and b/public/images/pokemon/icons/variant/8/856_3.png differ diff --git a/public/images/pokemon/icons/variant/8/857_2.png b/public/images/pokemon/icons/variant/8/857_2.png index b1a4c2f82ba..ebbb55e3243 100644 Binary files a/public/images/pokemon/icons/variant/8/857_2.png and b/public/images/pokemon/icons/variant/8/857_2.png differ diff --git a/public/images/pokemon/icons/variant/8/857_3.png b/public/images/pokemon/icons/variant/8/857_3.png index d04b631f628..cdc4adb1c19 100644 Binary files a/public/images/pokemon/icons/variant/8/857_3.png and b/public/images/pokemon/icons/variant/8/857_3.png differ diff --git a/public/images/pokemon/icons/variant/8/858-gigantamax_2.png b/public/images/pokemon/icons/variant/8/858-gigantamax_2.png index 8318e810b9b..0c90025887a 100644 Binary files a/public/images/pokemon/icons/variant/8/858-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/858-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/858-gigantamax_3.png b/public/images/pokemon/icons/variant/8/858-gigantamax_3.png index 30a463a679a..fb5fc6420d7 100644 Binary files a/public/images/pokemon/icons/variant/8/858-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/858-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/858_2.png b/public/images/pokemon/icons/variant/8/858_2.png index c129c2df02d..c4402b69d4c 100644 Binary files a/public/images/pokemon/icons/variant/8/858_2.png and b/public/images/pokemon/icons/variant/8/858_2.png differ diff --git a/public/images/pokemon/icons/variant/8/858_3.png b/public/images/pokemon/icons/variant/8/858_3.png index 499312644de..24085617993 100644 Binary files a/public/images/pokemon/icons/variant/8/858_3.png and b/public/images/pokemon/icons/variant/8/858_3.png differ diff --git a/public/images/pokemon/icons/variant/8/859_2.png b/public/images/pokemon/icons/variant/8/859_2.png index a6914ef1bc6..ef23d048f63 100644 Binary files a/public/images/pokemon/icons/variant/8/859_2.png and b/public/images/pokemon/icons/variant/8/859_2.png differ diff --git a/public/images/pokemon/icons/variant/8/859_3.png b/public/images/pokemon/icons/variant/8/859_3.png index 0a4247993bb..d3dd8fb0449 100644 Binary files a/public/images/pokemon/icons/variant/8/859_3.png and b/public/images/pokemon/icons/variant/8/859_3.png differ diff --git a/public/images/pokemon/icons/variant/8/860_2.png b/public/images/pokemon/icons/variant/8/860_2.png index 8b12fb12e70..8367439fe74 100644 Binary files a/public/images/pokemon/icons/variant/8/860_2.png and b/public/images/pokemon/icons/variant/8/860_2.png differ diff --git a/public/images/pokemon/icons/variant/8/860_3.png b/public/images/pokemon/icons/variant/8/860_3.png index 0d66720e63a..371d76c8e0c 100644 Binary files a/public/images/pokemon/icons/variant/8/860_3.png and b/public/images/pokemon/icons/variant/8/860_3.png differ diff --git a/public/images/pokemon/icons/variant/8/861-gigantamax_2.png b/public/images/pokemon/icons/variant/8/861-gigantamax_2.png index ade62fd080f..b6fff0d575d 100644 Binary files a/public/images/pokemon/icons/variant/8/861-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/861-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/861-gigantamax_3.png b/public/images/pokemon/icons/variant/8/861-gigantamax_3.png index 6b2b6403a99..911a5cd598f 100644 Binary files a/public/images/pokemon/icons/variant/8/861-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/861-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/861_2.png b/public/images/pokemon/icons/variant/8/861_2.png index a27a59d89a8..3267d81e0db 100644 Binary files a/public/images/pokemon/icons/variant/8/861_2.png and b/public/images/pokemon/icons/variant/8/861_2.png differ diff --git a/public/images/pokemon/icons/variant/8/861_3.png b/public/images/pokemon/icons/variant/8/861_3.png index d60a6b1865a..a261f8189d2 100644 Binary files a/public/images/pokemon/icons/variant/8/861_3.png and b/public/images/pokemon/icons/variant/8/861_3.png differ diff --git a/public/images/pokemon/icons/variant/8/863_2.png b/public/images/pokemon/icons/variant/8/863_2.png index 8fde01a1bf0..638b538ed71 100644 Binary files a/public/images/pokemon/icons/variant/8/863_2.png and b/public/images/pokemon/icons/variant/8/863_2.png differ diff --git a/public/images/pokemon/icons/variant/8/863_3.png b/public/images/pokemon/icons/variant/8/863_3.png index 0f5899de0f7..6cad0ebbd2a 100644 Binary files a/public/images/pokemon/icons/variant/8/863_3.png and b/public/images/pokemon/icons/variant/8/863_3.png differ diff --git a/public/images/pokemon/icons/variant/8/864_2.png b/public/images/pokemon/icons/variant/8/864_2.png index 07558efb84a..99e751db9ec 100644 Binary files a/public/images/pokemon/icons/variant/8/864_2.png and b/public/images/pokemon/icons/variant/8/864_2.png differ diff --git a/public/images/pokemon/icons/variant/8/864_3.png b/public/images/pokemon/icons/variant/8/864_3.png index e25f42adb09..8256a1e0442 100644 Binary files a/public/images/pokemon/icons/variant/8/864_3.png and b/public/images/pokemon/icons/variant/8/864_3.png differ diff --git a/public/images/pokemon/icons/variant/8/867_2.png b/public/images/pokemon/icons/variant/8/867_2.png index 7330147db2a..6d8150663ba 100644 Binary files a/public/images/pokemon/icons/variant/8/867_2.png and b/public/images/pokemon/icons/variant/8/867_2.png differ diff --git a/public/images/pokemon/icons/variant/8/867_3.png b/public/images/pokemon/icons/variant/8/867_3.png index f93d7c8bfb4..fc1a72de482 100644 Binary files a/public/images/pokemon/icons/variant/8/867_3.png and b/public/images/pokemon/icons/variant/8/867_3.png differ diff --git a/public/images/pokemon/icons/variant/8/871_2.png b/public/images/pokemon/icons/variant/8/871_2.png index 719ee1eb3a9..c77c7255aa1 100644 Binary files a/public/images/pokemon/icons/variant/8/871_2.png and b/public/images/pokemon/icons/variant/8/871_2.png differ diff --git a/public/images/pokemon/icons/variant/8/871_3.png b/public/images/pokemon/icons/variant/8/871_3.png index 0d8227b722a..9a45c9cbc7f 100644 Binary files a/public/images/pokemon/icons/variant/8/871_3.png and b/public/images/pokemon/icons/variant/8/871_3.png differ diff --git a/public/images/pokemon/icons/variant/8/872_1.png b/public/images/pokemon/icons/variant/8/872_1.png index 585412d2397..cfe82d7b32c 100644 Binary files a/public/images/pokemon/icons/variant/8/872_1.png and b/public/images/pokemon/icons/variant/8/872_1.png differ diff --git a/public/images/pokemon/icons/variant/8/872_2.png b/public/images/pokemon/icons/variant/8/872_2.png index 258f8fd225b..33388d756fa 100644 Binary files a/public/images/pokemon/icons/variant/8/872_2.png and b/public/images/pokemon/icons/variant/8/872_2.png differ diff --git a/public/images/pokemon/icons/variant/8/872_3.png b/public/images/pokemon/icons/variant/8/872_3.png index 2dc2a3f88da..cc7c91d8abe 100644 Binary files a/public/images/pokemon/icons/variant/8/872_3.png and b/public/images/pokemon/icons/variant/8/872_3.png differ diff --git a/public/images/pokemon/icons/variant/8/873_1.png b/public/images/pokemon/icons/variant/8/873_1.png index e3ca501356b..8a6c9647645 100644 Binary files a/public/images/pokemon/icons/variant/8/873_1.png and b/public/images/pokemon/icons/variant/8/873_1.png differ diff --git a/public/images/pokemon/icons/variant/8/873_2.png b/public/images/pokemon/icons/variant/8/873_2.png index 76a37ec55c8..3757a77513b 100644 Binary files a/public/images/pokemon/icons/variant/8/873_2.png and b/public/images/pokemon/icons/variant/8/873_2.png differ diff --git a/public/images/pokemon/icons/variant/8/873_3.png b/public/images/pokemon/icons/variant/8/873_3.png index 8101b0f317e..920e76f2158 100644 Binary files a/public/images/pokemon/icons/variant/8/873_3.png and b/public/images/pokemon/icons/variant/8/873_3.png differ diff --git a/public/images/pokemon/icons/variant/8/876-female_2.png b/public/images/pokemon/icons/variant/8/876-female_2.png index 359d810f36d..fc49223aaa4 100644 Binary files a/public/images/pokemon/icons/variant/8/876-female_2.png and b/public/images/pokemon/icons/variant/8/876-female_2.png differ diff --git a/public/images/pokemon/icons/variant/8/876-female_3.png b/public/images/pokemon/icons/variant/8/876-female_3.png index ce647e6a1a2..31100bdd83f 100644 Binary files a/public/images/pokemon/icons/variant/8/876-female_3.png and b/public/images/pokemon/icons/variant/8/876-female_3.png differ diff --git a/public/images/pokemon/icons/variant/8/876_2.png b/public/images/pokemon/icons/variant/8/876_2.png index f672f6cd6d5..d507b4c2b27 100644 Binary files a/public/images/pokemon/icons/variant/8/876_2.png and b/public/images/pokemon/icons/variant/8/876_2.png differ diff --git a/public/images/pokemon/icons/variant/8/876_3.png b/public/images/pokemon/icons/variant/8/876_3.png index 0cf31316a47..0c43449e89b 100644 Binary files a/public/images/pokemon/icons/variant/8/876_3.png and b/public/images/pokemon/icons/variant/8/876_3.png differ diff --git a/public/images/pokemon/icons/variant/8/877-hangry_1.png b/public/images/pokemon/icons/variant/8/877-hangry_1.png index 9ccfcba6dcf..320e05c6ef0 100644 Binary files a/public/images/pokemon/icons/variant/8/877-hangry_1.png and b/public/images/pokemon/icons/variant/8/877-hangry_1.png differ diff --git a/public/images/pokemon/icons/variant/8/877-hangry_2.png b/public/images/pokemon/icons/variant/8/877-hangry_2.png index 03c6e48a63d..a53f3faf678 100644 Binary files a/public/images/pokemon/icons/variant/8/877-hangry_2.png and b/public/images/pokemon/icons/variant/8/877-hangry_2.png differ diff --git a/public/images/pokemon/icons/variant/8/877-hangry_3.png b/public/images/pokemon/icons/variant/8/877-hangry_3.png index 5dbf6ca7cdf..56980585b3a 100644 Binary files a/public/images/pokemon/icons/variant/8/877-hangry_3.png and b/public/images/pokemon/icons/variant/8/877-hangry_3.png differ diff --git a/public/images/pokemon/icons/variant/8/877_1.png b/public/images/pokemon/icons/variant/8/877_1.png index c9cd435fac8..e89fe80efad 100644 Binary files a/public/images/pokemon/icons/variant/8/877_1.png and b/public/images/pokemon/icons/variant/8/877_1.png differ diff --git a/public/images/pokemon/icons/variant/8/877_2.png b/public/images/pokemon/icons/variant/8/877_2.png index bfebde92e5e..b7914a59d91 100644 Binary files a/public/images/pokemon/icons/variant/8/877_2.png and b/public/images/pokemon/icons/variant/8/877_2.png differ diff --git a/public/images/pokemon/icons/variant/8/877_3.png b/public/images/pokemon/icons/variant/8/877_3.png index 8fb654de930..7bfcda02dc6 100644 Binary files a/public/images/pokemon/icons/variant/8/877_3.png and b/public/images/pokemon/icons/variant/8/877_3.png differ diff --git a/public/images/pokemon/icons/variant/8/880_2.png b/public/images/pokemon/icons/variant/8/880_2.png index be07577cd25..8f05efb30b5 100644 Binary files a/public/images/pokemon/icons/variant/8/880_2.png and b/public/images/pokemon/icons/variant/8/880_2.png differ diff --git a/public/images/pokemon/icons/variant/8/880_3.png b/public/images/pokemon/icons/variant/8/880_3.png index e02ed7193ad..fbd8390bd52 100644 Binary files a/public/images/pokemon/icons/variant/8/880_3.png and b/public/images/pokemon/icons/variant/8/880_3.png differ diff --git a/public/images/pokemon/icons/variant/8/881_2.png b/public/images/pokemon/icons/variant/8/881_2.png index 1d861c0a9f6..1fd9b39b675 100644 Binary files a/public/images/pokemon/icons/variant/8/881_2.png and b/public/images/pokemon/icons/variant/8/881_2.png differ diff --git a/public/images/pokemon/icons/variant/8/881_3.png b/public/images/pokemon/icons/variant/8/881_3.png index a88bfb50dab..0494b0f119f 100644 Binary files a/public/images/pokemon/icons/variant/8/881_3.png and b/public/images/pokemon/icons/variant/8/881_3.png differ diff --git a/public/images/pokemon/icons/variant/8/882_2.png b/public/images/pokemon/icons/variant/8/882_2.png index d80cda17872..a0179a5fc3c 100644 Binary files a/public/images/pokemon/icons/variant/8/882_2.png and b/public/images/pokemon/icons/variant/8/882_2.png differ diff --git a/public/images/pokemon/icons/variant/8/882_3.png b/public/images/pokemon/icons/variant/8/882_3.png index 14715f47721..79e5a32e36f 100644 Binary files a/public/images/pokemon/icons/variant/8/882_3.png and b/public/images/pokemon/icons/variant/8/882_3.png differ diff --git a/public/images/pokemon/icons/variant/8/883_2.png b/public/images/pokemon/icons/variant/8/883_2.png index 18215b74d5b..19b7338e549 100644 Binary files a/public/images/pokemon/icons/variant/8/883_2.png and b/public/images/pokemon/icons/variant/8/883_2.png differ diff --git a/public/images/pokemon/icons/variant/8/883_3.png b/public/images/pokemon/icons/variant/8/883_3.png index 25172d687e7..3bbe8ba21c1 100644 Binary files a/public/images/pokemon/icons/variant/8/883_3.png and b/public/images/pokemon/icons/variant/8/883_3.png differ diff --git a/public/images/pokemon/icons/variant/8/884-gigantamax_2.png b/public/images/pokemon/icons/variant/8/884-gigantamax_2.png index 5d770880710..7a8afa17622 100644 Binary files a/public/images/pokemon/icons/variant/8/884-gigantamax_2.png and b/public/images/pokemon/icons/variant/8/884-gigantamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/884-gigantamax_3.png b/public/images/pokemon/icons/variant/8/884-gigantamax_3.png index ff213924595..f26807793a4 100644 Binary files a/public/images/pokemon/icons/variant/8/884-gigantamax_3.png and b/public/images/pokemon/icons/variant/8/884-gigantamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/884_2.png b/public/images/pokemon/icons/variant/8/884_2.png index 93e8fb08a69..7cc7be9677d 100644 Binary files a/public/images/pokemon/icons/variant/8/884_2.png and b/public/images/pokemon/icons/variant/8/884_2.png differ diff --git a/public/images/pokemon/icons/variant/8/884_3.png b/public/images/pokemon/icons/variant/8/884_3.png index 36c5e353149..32ed006ff4c 100644 Binary files a/public/images/pokemon/icons/variant/8/884_3.png and b/public/images/pokemon/icons/variant/8/884_3.png differ diff --git a/public/images/pokemon/icons/variant/8/885_1.png b/public/images/pokemon/icons/variant/8/885_1.png index ec0849c4a3a..93fc0c1101b 100644 Binary files a/public/images/pokemon/icons/variant/8/885_1.png and b/public/images/pokemon/icons/variant/8/885_1.png differ diff --git a/public/images/pokemon/icons/variant/8/885_2.png b/public/images/pokemon/icons/variant/8/885_2.png index 5b19fac0813..c2099e2a311 100644 Binary files a/public/images/pokemon/icons/variant/8/885_2.png and b/public/images/pokemon/icons/variant/8/885_2.png differ diff --git a/public/images/pokemon/icons/variant/8/885_3.png b/public/images/pokemon/icons/variant/8/885_3.png index 3938810e1d9..2bdce748105 100644 Binary files a/public/images/pokemon/icons/variant/8/885_3.png and b/public/images/pokemon/icons/variant/8/885_3.png differ diff --git a/public/images/pokemon/icons/variant/8/886_1.png b/public/images/pokemon/icons/variant/8/886_1.png index 0001af872dc..96d70f5442c 100644 Binary files a/public/images/pokemon/icons/variant/8/886_1.png and b/public/images/pokemon/icons/variant/8/886_1.png differ diff --git a/public/images/pokemon/icons/variant/8/886_2.png b/public/images/pokemon/icons/variant/8/886_2.png index b49491cbafd..fabedcfc6a5 100644 Binary files a/public/images/pokemon/icons/variant/8/886_2.png and b/public/images/pokemon/icons/variant/8/886_2.png differ diff --git a/public/images/pokemon/icons/variant/8/886_3.png b/public/images/pokemon/icons/variant/8/886_3.png index 5de076df77c..0a169631d18 100644 Binary files a/public/images/pokemon/icons/variant/8/886_3.png and b/public/images/pokemon/icons/variant/8/886_3.png differ diff --git a/public/images/pokemon/icons/variant/8/887_1.png b/public/images/pokemon/icons/variant/8/887_1.png index 6efb0d638d6..c0b5bef8d37 100644 Binary files a/public/images/pokemon/icons/variant/8/887_1.png and b/public/images/pokemon/icons/variant/8/887_1.png differ diff --git a/public/images/pokemon/icons/variant/8/887_2.png b/public/images/pokemon/icons/variant/8/887_2.png index 28a337f295b..e376d1ea1a4 100644 Binary files a/public/images/pokemon/icons/variant/8/887_2.png and b/public/images/pokemon/icons/variant/8/887_2.png differ diff --git a/public/images/pokemon/icons/variant/8/887_3.png b/public/images/pokemon/icons/variant/8/887_3.png index 12507e42247..9ee76fad55c 100644 Binary files a/public/images/pokemon/icons/variant/8/887_3.png and b/public/images/pokemon/icons/variant/8/887_3.png differ diff --git a/public/images/pokemon/icons/variant/8/888-crowned_2.png b/public/images/pokemon/icons/variant/8/888-crowned_2.png index 51e654cc108..07414c9e3b6 100644 Binary files a/public/images/pokemon/icons/variant/8/888-crowned_2.png and b/public/images/pokemon/icons/variant/8/888-crowned_2.png differ diff --git a/public/images/pokemon/icons/variant/8/888-crowned_3.png b/public/images/pokemon/icons/variant/8/888-crowned_3.png index 8e45189e15f..a58182cd667 100644 Binary files a/public/images/pokemon/icons/variant/8/888-crowned_3.png and b/public/images/pokemon/icons/variant/8/888-crowned_3.png differ diff --git a/public/images/pokemon/icons/variant/8/888_2.png b/public/images/pokemon/icons/variant/8/888_2.png index 58f023ed3ea..820621d30c5 100644 Binary files a/public/images/pokemon/icons/variant/8/888_2.png and b/public/images/pokemon/icons/variant/8/888_2.png differ diff --git a/public/images/pokemon/icons/variant/8/888_3.png b/public/images/pokemon/icons/variant/8/888_3.png index 336cbecadd0..c6bde06a707 100644 Binary files a/public/images/pokemon/icons/variant/8/888_3.png and b/public/images/pokemon/icons/variant/8/888_3.png differ diff --git a/public/images/pokemon/icons/variant/8/889-crowned_2.png b/public/images/pokemon/icons/variant/8/889-crowned_2.png index 3a72aa9c587..d7b1f29b049 100644 Binary files a/public/images/pokemon/icons/variant/8/889-crowned_2.png and b/public/images/pokemon/icons/variant/8/889-crowned_2.png differ diff --git a/public/images/pokemon/icons/variant/8/889-crowned_3.png b/public/images/pokemon/icons/variant/8/889-crowned_3.png index 81929666ba1..1a6cce98497 100644 Binary files a/public/images/pokemon/icons/variant/8/889-crowned_3.png and b/public/images/pokemon/icons/variant/8/889-crowned_3.png differ diff --git a/public/images/pokemon/icons/variant/8/889_2.png b/public/images/pokemon/icons/variant/8/889_2.png index 91bde36e526..284ab95c6ed 100644 Binary files a/public/images/pokemon/icons/variant/8/889_2.png and b/public/images/pokemon/icons/variant/8/889_2.png differ diff --git a/public/images/pokemon/icons/variant/8/889_3.png b/public/images/pokemon/icons/variant/8/889_3.png index 93b547d3e03..b3984c5d129 100644 Binary files a/public/images/pokemon/icons/variant/8/889_3.png and b/public/images/pokemon/icons/variant/8/889_3.png differ diff --git a/public/images/pokemon/icons/variant/8/890-eternamax_2.png b/public/images/pokemon/icons/variant/8/890-eternamax_2.png index e9168e582cf..1343eb5ff2e 100644 Binary files a/public/images/pokemon/icons/variant/8/890-eternamax_2.png and b/public/images/pokemon/icons/variant/8/890-eternamax_2.png differ diff --git a/public/images/pokemon/icons/variant/8/890-eternamax_3.png b/public/images/pokemon/icons/variant/8/890-eternamax_3.png index 885d081c6e0..57b53d83d6b 100644 Binary files a/public/images/pokemon/icons/variant/8/890-eternamax_3.png and b/public/images/pokemon/icons/variant/8/890-eternamax_3.png differ diff --git a/public/images/pokemon/icons/variant/8/890_2.png b/public/images/pokemon/icons/variant/8/890_2.png index 2afdc3f6fee..513622d3888 100644 Binary files a/public/images/pokemon/icons/variant/8/890_2.png and b/public/images/pokemon/icons/variant/8/890_2.png differ diff --git a/public/images/pokemon/icons/variant/8/890_3.png b/public/images/pokemon/icons/variant/8/890_3.png index dbf49ec615a..8d2870fdd72 100644 Binary files a/public/images/pokemon/icons/variant/8/890_3.png and b/public/images/pokemon/icons/variant/8/890_3.png differ diff --git a/public/images/pokemon/icons/variant/8/891_1.png b/public/images/pokemon/icons/variant/8/891_1.png index b68703861db..5814eccb1fe 100644 Binary files a/public/images/pokemon/icons/variant/8/891_1.png and b/public/images/pokemon/icons/variant/8/891_1.png differ diff --git a/public/images/pokemon/icons/variant/8/891_2.png b/public/images/pokemon/icons/variant/8/891_2.png index 43d338f7700..db210f06f47 100644 Binary files a/public/images/pokemon/icons/variant/8/891_2.png and b/public/images/pokemon/icons/variant/8/891_2.png differ diff --git a/public/images/pokemon/icons/variant/8/891_3.png b/public/images/pokemon/icons/variant/8/891_3.png index 7d04d7fd31d..512ebfe9da1 100644 Binary files a/public/images/pokemon/icons/variant/8/891_3.png and b/public/images/pokemon/icons/variant/8/891_3.png differ diff --git a/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_1.png b/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_1.png index e986a3a2143..620f9f3d257 100644 Binary files a/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_1.png and b/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_1.png differ diff --git a/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_2.png b/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_2.png index 7e0c47cdbf3..3b6043f383e 100644 Binary files a/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_2.png and b/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_2.png differ diff --git a/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_3.png b/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_3.png index d07d31bcc05..d01ab5329c3 100644 Binary files a/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_3.png and b/public/images/pokemon/icons/variant/8/892-gigantamax-rapid_3.png differ diff --git a/public/images/pokemon/icons/variant/8/892-gigantamax-single_1.png b/public/images/pokemon/icons/variant/8/892-gigantamax-single_1.png index 11e0d5e09fa..04797f2f8f1 100644 Binary files a/public/images/pokemon/icons/variant/8/892-gigantamax-single_1.png and b/public/images/pokemon/icons/variant/8/892-gigantamax-single_1.png differ diff --git a/public/images/pokemon/icons/variant/8/892-gigantamax-single_2.png b/public/images/pokemon/icons/variant/8/892-gigantamax-single_2.png index 0c4294fdb04..c4d0b260df3 100644 Binary files a/public/images/pokemon/icons/variant/8/892-gigantamax-single_2.png and b/public/images/pokemon/icons/variant/8/892-gigantamax-single_2.png differ diff --git a/public/images/pokemon/icons/variant/8/892-gigantamax-single_3.png b/public/images/pokemon/icons/variant/8/892-gigantamax-single_3.png index 19c53f4bd23..0cfec7fb412 100644 Binary files a/public/images/pokemon/icons/variant/8/892-gigantamax-single_3.png and b/public/images/pokemon/icons/variant/8/892-gigantamax-single_3.png differ diff --git a/public/images/pokemon/icons/variant/8/892-rapid-strike_1.png b/public/images/pokemon/icons/variant/8/892-rapid-strike_1.png index 8f03ad57d36..e4fe8f62649 100644 Binary files a/public/images/pokemon/icons/variant/8/892-rapid-strike_1.png and b/public/images/pokemon/icons/variant/8/892-rapid-strike_1.png differ diff --git a/public/images/pokemon/icons/variant/8/892-rapid-strike_2.png b/public/images/pokemon/icons/variant/8/892-rapid-strike_2.png index 01d932b59dd..3baeedb6bb5 100644 Binary files a/public/images/pokemon/icons/variant/8/892-rapid-strike_2.png and b/public/images/pokemon/icons/variant/8/892-rapid-strike_2.png differ diff --git a/public/images/pokemon/icons/variant/8/892-rapid-strike_3.png b/public/images/pokemon/icons/variant/8/892-rapid-strike_3.png index ed17d8cda35..3fc71bd84c0 100644 Binary files a/public/images/pokemon/icons/variant/8/892-rapid-strike_3.png and b/public/images/pokemon/icons/variant/8/892-rapid-strike_3.png differ diff --git a/public/images/pokemon/icons/variant/8/892_1.png b/public/images/pokemon/icons/variant/8/892_1.png index 8a58b513589..f32cffe2728 100644 Binary files a/public/images/pokemon/icons/variant/8/892_1.png and b/public/images/pokemon/icons/variant/8/892_1.png differ diff --git a/public/images/pokemon/icons/variant/8/892_2.png b/public/images/pokemon/icons/variant/8/892_2.png index 5f1bf24777a..a0152271679 100644 Binary files a/public/images/pokemon/icons/variant/8/892_2.png and b/public/images/pokemon/icons/variant/8/892_2.png differ diff --git a/public/images/pokemon/icons/variant/8/892_3.png b/public/images/pokemon/icons/variant/8/892_3.png index 43caa1c59c1..4fc766dd8eb 100644 Binary files a/public/images/pokemon/icons/variant/8/892_3.png and b/public/images/pokemon/icons/variant/8/892_3.png differ diff --git a/public/images/pokemon/icons/variant/8/894_2.png b/public/images/pokemon/icons/variant/8/894_2.png index 2b4754d56a0..0f2343983a7 100644 Binary files a/public/images/pokemon/icons/variant/8/894_2.png and b/public/images/pokemon/icons/variant/8/894_2.png differ diff --git a/public/images/pokemon/icons/variant/8/894_3.png b/public/images/pokemon/icons/variant/8/894_3.png index cc5baef46cc..67a65f3d006 100644 Binary files a/public/images/pokemon/icons/variant/8/894_3.png and b/public/images/pokemon/icons/variant/8/894_3.png differ diff --git a/public/images/pokemon/icons/variant/8/895_2.png b/public/images/pokemon/icons/variant/8/895_2.png index bdacf0683ee..7f80b179916 100644 Binary files a/public/images/pokemon/icons/variant/8/895_2.png and b/public/images/pokemon/icons/variant/8/895_2.png differ diff --git a/public/images/pokemon/icons/variant/8/895_3.png b/public/images/pokemon/icons/variant/8/895_3.png index 9ac023e2e89..d900274d14d 100644 Binary files a/public/images/pokemon/icons/variant/8/895_3.png and b/public/images/pokemon/icons/variant/8/895_3.png differ diff --git a/public/images/pokemon/icons/variant/8/896_1.png b/public/images/pokemon/icons/variant/8/896_1.png index d57d7cad794..329f9ce0d0f 100644 Binary files a/public/images/pokemon/icons/variant/8/896_1.png and b/public/images/pokemon/icons/variant/8/896_1.png differ diff --git a/public/images/pokemon/icons/variant/8/896_2.png b/public/images/pokemon/icons/variant/8/896_2.png index 241392e5354..22470f847ae 100644 Binary files a/public/images/pokemon/icons/variant/8/896_2.png and b/public/images/pokemon/icons/variant/8/896_2.png differ diff --git a/public/images/pokemon/icons/variant/8/896_3.png b/public/images/pokemon/icons/variant/8/896_3.png index 2664d6ef12f..e609b50e618 100644 Binary files a/public/images/pokemon/icons/variant/8/896_3.png and b/public/images/pokemon/icons/variant/8/896_3.png differ diff --git a/public/images/pokemon/icons/variant/8/897_1.png b/public/images/pokemon/icons/variant/8/897_1.png index 12fe6ee7d7f..f07f3847f9a 100644 Binary files a/public/images/pokemon/icons/variant/8/897_1.png and b/public/images/pokemon/icons/variant/8/897_1.png differ diff --git a/public/images/pokemon/icons/variant/8/897_2.png b/public/images/pokemon/icons/variant/8/897_2.png index 77eca7f0d01..f4e96dedc98 100644 Binary files a/public/images/pokemon/icons/variant/8/897_2.png and b/public/images/pokemon/icons/variant/8/897_2.png differ diff --git a/public/images/pokemon/icons/variant/8/897_3.png b/public/images/pokemon/icons/variant/8/897_3.png index 156e8f8ad37..07610b745d1 100644 Binary files a/public/images/pokemon/icons/variant/8/897_3.png and b/public/images/pokemon/icons/variant/8/897_3.png differ diff --git a/public/images/pokemon/icons/variant/8/898-ice_1.png b/public/images/pokemon/icons/variant/8/898-ice_1.png index 34b45a31bcc..b328c7d3041 100644 Binary files a/public/images/pokemon/icons/variant/8/898-ice_1.png and b/public/images/pokemon/icons/variant/8/898-ice_1.png differ diff --git a/public/images/pokemon/icons/variant/8/898-ice_2.png b/public/images/pokemon/icons/variant/8/898-ice_2.png index acefad4a238..e202f756b30 100644 Binary files a/public/images/pokemon/icons/variant/8/898-ice_2.png and b/public/images/pokemon/icons/variant/8/898-ice_2.png differ diff --git a/public/images/pokemon/icons/variant/8/898-ice_3.png b/public/images/pokemon/icons/variant/8/898-ice_3.png index 17f259b74e2..af337c02990 100644 Binary files a/public/images/pokemon/icons/variant/8/898-ice_3.png and b/public/images/pokemon/icons/variant/8/898-ice_3.png differ diff --git a/public/images/pokemon/icons/variant/8/898-shadow_1.png b/public/images/pokemon/icons/variant/8/898-shadow_1.png index 2161141ecfe..92efc45e21d 100644 Binary files a/public/images/pokemon/icons/variant/8/898-shadow_1.png and b/public/images/pokemon/icons/variant/8/898-shadow_1.png differ diff --git a/public/images/pokemon/icons/variant/8/898-shadow_2.png b/public/images/pokemon/icons/variant/8/898-shadow_2.png index 52517018f29..95f9b278abc 100644 Binary files a/public/images/pokemon/icons/variant/8/898-shadow_2.png and b/public/images/pokemon/icons/variant/8/898-shadow_2.png differ diff --git a/public/images/pokemon/icons/variant/8/898-shadow_3.png b/public/images/pokemon/icons/variant/8/898-shadow_3.png index 627d61a5c29..c2fedc512a4 100644 Binary files a/public/images/pokemon/icons/variant/8/898-shadow_3.png and b/public/images/pokemon/icons/variant/8/898-shadow_3.png differ diff --git a/public/images/pokemon/icons/variant/8/898_1.png b/public/images/pokemon/icons/variant/8/898_1.png index c2075f823c1..9e9b4aeec9e 100644 Binary files a/public/images/pokemon/icons/variant/8/898_1.png and b/public/images/pokemon/icons/variant/8/898_1.png differ diff --git a/public/images/pokemon/icons/variant/8/898_2.png b/public/images/pokemon/icons/variant/8/898_2.png index 0032d709bca..e47b652a5e4 100644 Binary files a/public/images/pokemon/icons/variant/8/898_2.png and b/public/images/pokemon/icons/variant/8/898_2.png differ diff --git a/public/images/pokemon/icons/variant/8/898_3.png b/public/images/pokemon/icons/variant/8/898_3.png index fbb47bc00bc..2f49f4c84c2 100644 Binary files a/public/images/pokemon/icons/variant/8/898_3.png and b/public/images/pokemon/icons/variant/8/898_3.png differ diff --git a/public/images/pokemon/icons/variant/8/900_2.png b/public/images/pokemon/icons/variant/8/900_2.png index 376c1dbe794..f36740b999c 100644 Binary files a/public/images/pokemon/icons/variant/8/900_2.png and b/public/images/pokemon/icons/variant/8/900_2.png differ diff --git a/public/images/pokemon/icons/variant/8/900_3.png b/public/images/pokemon/icons/variant/8/900_3.png index 9e2fb2a91af..54f22e1bbe4 100644 Binary files a/public/images/pokemon/icons/variant/8/900_3.png and b/public/images/pokemon/icons/variant/8/900_3.png differ diff --git a/public/images/pokemon/icons/variant/8/901_2.png b/public/images/pokemon/icons/variant/8/901_2.png index 0140889bd6d..a0a4d88ba38 100644 Binary files a/public/images/pokemon/icons/variant/8/901_2.png and b/public/images/pokemon/icons/variant/8/901_2.png differ diff --git a/public/images/pokemon/icons/variant/8/901_3.png b/public/images/pokemon/icons/variant/8/901_3.png index 7e21a682fa3..44777d7d1f9 100644 Binary files a/public/images/pokemon/icons/variant/8/901_3.png and b/public/images/pokemon/icons/variant/8/901_3.png differ diff --git a/public/images/pokemon/icons/variant/8/903_2.png b/public/images/pokemon/icons/variant/8/903_2.png index fdcabbe644f..eed2fc3b050 100644 Binary files a/public/images/pokemon/icons/variant/8/903_2.png and b/public/images/pokemon/icons/variant/8/903_2.png differ diff --git a/public/images/pokemon/icons/variant/8/903_3.png b/public/images/pokemon/icons/variant/8/903_3.png index b96cbbd6154..9f7597d68e6 100644 Binary files a/public/images/pokemon/icons/variant/8/903_3.png and b/public/images/pokemon/icons/variant/8/903_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1000_1.png b/public/images/pokemon/icons/variant/9/1000_1.png index 92457719472..731ad33552c 100644 Binary files a/public/images/pokemon/icons/variant/9/1000_1.png and b/public/images/pokemon/icons/variant/9/1000_1.png differ diff --git a/public/images/pokemon/icons/variant/9/1000_2.png b/public/images/pokemon/icons/variant/9/1000_2.png index def858c1d10..dd1cbcc333d 100644 Binary files a/public/images/pokemon/icons/variant/9/1000_2.png and b/public/images/pokemon/icons/variant/9/1000_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1000_3.png b/public/images/pokemon/icons/variant/9/1000_3.png index e9ce3de8d62..7ec9c0ac67c 100644 Binary files a/public/images/pokemon/icons/variant/9/1000_3.png and b/public/images/pokemon/icons/variant/9/1000_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1001_2.png b/public/images/pokemon/icons/variant/9/1001_2.png index de4543903ea..db8db057e49 100644 Binary files a/public/images/pokemon/icons/variant/9/1001_2.png and b/public/images/pokemon/icons/variant/9/1001_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1001_3.png b/public/images/pokemon/icons/variant/9/1001_3.png index 01231f93252..7a88cd12123 100644 Binary files a/public/images/pokemon/icons/variant/9/1001_3.png and b/public/images/pokemon/icons/variant/9/1001_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1003_2.png b/public/images/pokemon/icons/variant/9/1003_2.png index 2cbc2f4e26a..5d1216f2535 100644 Binary files a/public/images/pokemon/icons/variant/9/1003_2.png and b/public/images/pokemon/icons/variant/9/1003_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1003_3.png b/public/images/pokemon/icons/variant/9/1003_3.png index 36e80525b0f..06b158ce6b1 100644 Binary files a/public/images/pokemon/icons/variant/9/1003_3.png and b/public/images/pokemon/icons/variant/9/1003_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1004_2.png b/public/images/pokemon/icons/variant/9/1004_2.png index 1a2761659a6..520b2ac0cfe 100644 Binary files a/public/images/pokemon/icons/variant/9/1004_2.png and b/public/images/pokemon/icons/variant/9/1004_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1004_3.png b/public/images/pokemon/icons/variant/9/1004_3.png index d42a84ed698..478edac91f7 100644 Binary files a/public/images/pokemon/icons/variant/9/1004_3.png and b/public/images/pokemon/icons/variant/9/1004_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1006_2.png b/public/images/pokemon/icons/variant/9/1006_2.png index 65f7ce87a83..b615b27a532 100644 Binary files a/public/images/pokemon/icons/variant/9/1006_2.png and b/public/images/pokemon/icons/variant/9/1006_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1006_3.png b/public/images/pokemon/icons/variant/9/1006_3.png index 97240b73609..a9df30dbcb3 100644 Binary files a/public/images/pokemon/icons/variant/9/1006_3.png and b/public/images/pokemon/icons/variant/9/1006_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1007-apex-build_2.png b/public/images/pokemon/icons/variant/9/1007-apex-build_2.png index 7b8fd5f6114..c15dce2e446 100644 Binary files a/public/images/pokemon/icons/variant/9/1007-apex-build_2.png and b/public/images/pokemon/icons/variant/9/1007-apex-build_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1007-apex-build_3.png b/public/images/pokemon/icons/variant/9/1007-apex-build_3.png index ead43d9b1f9..40b266253bc 100644 Binary files a/public/images/pokemon/icons/variant/9/1007-apex-build_3.png and b/public/images/pokemon/icons/variant/9/1007-apex-build_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1008-ultimate-mode_1.png b/public/images/pokemon/icons/variant/9/1008-ultimate-mode_1.png index 554984faa64..f39cae84c04 100644 Binary files a/public/images/pokemon/icons/variant/9/1008-ultimate-mode_1.png and b/public/images/pokemon/icons/variant/9/1008-ultimate-mode_1.png differ diff --git a/public/images/pokemon/icons/variant/9/1008-ultimate-mode_2.png b/public/images/pokemon/icons/variant/9/1008-ultimate-mode_2.png index b96ce1bd85b..31069bf58dd 100644 Binary files a/public/images/pokemon/icons/variant/9/1008-ultimate-mode_2.png and b/public/images/pokemon/icons/variant/9/1008-ultimate-mode_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1008-ultimate-mode_3.png b/public/images/pokemon/icons/variant/9/1008-ultimate-mode_3.png index a3698052aa8..7ea21df1368 100644 Binary files a/public/images/pokemon/icons/variant/9/1008-ultimate-mode_3.png and b/public/images/pokemon/icons/variant/9/1008-ultimate-mode_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1010_2.png b/public/images/pokemon/icons/variant/9/1010_2.png index 7e20810c2b4..22649ed648f 100644 Binary files a/public/images/pokemon/icons/variant/9/1010_2.png and b/public/images/pokemon/icons/variant/9/1010_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1010_3.png b/public/images/pokemon/icons/variant/9/1010_3.png index ff6cd6e71b0..5c99a7e75fe 100644 Binary files a/public/images/pokemon/icons/variant/9/1010_3.png and b/public/images/pokemon/icons/variant/9/1010_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1011_2.png b/public/images/pokemon/icons/variant/9/1011_2.png index 01abc1a8e65..a65f218c467 100644 Binary files a/public/images/pokemon/icons/variant/9/1011_2.png and b/public/images/pokemon/icons/variant/9/1011_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1011_3.png b/public/images/pokemon/icons/variant/9/1011_3.png index fa5e3e35135..8fe616f98e7 100644 Binary files a/public/images/pokemon/icons/variant/9/1011_3.png and b/public/images/pokemon/icons/variant/9/1011_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1012-counterfeit_2.png b/public/images/pokemon/icons/variant/9/1012-counterfeit_2.png index 19fa8603c69..e8e12827c83 100644 Binary files a/public/images/pokemon/icons/variant/9/1012-counterfeit_2.png and b/public/images/pokemon/icons/variant/9/1012-counterfeit_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1012-counterfeit_3.png b/public/images/pokemon/icons/variant/9/1012-counterfeit_3.png index 04f74b0fd3a..bb4a11a2787 100644 Binary files a/public/images/pokemon/icons/variant/9/1012-counterfeit_3.png and b/public/images/pokemon/icons/variant/9/1012-counterfeit_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1013-unremarkable_2.png b/public/images/pokemon/icons/variant/9/1013-unremarkable_2.png index 3588b5e2641..c7cec584a25 100644 Binary files a/public/images/pokemon/icons/variant/9/1013-unremarkable_2.png and b/public/images/pokemon/icons/variant/9/1013-unremarkable_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1013-unremarkable_3.png b/public/images/pokemon/icons/variant/9/1013-unremarkable_3.png index acdb6716ab8..41d3687f733 100644 Binary files a/public/images/pokemon/icons/variant/9/1013-unremarkable_3.png and b/public/images/pokemon/icons/variant/9/1013-unremarkable_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1018_2.png b/public/images/pokemon/icons/variant/9/1018_2.png index 88f8d0f0988..cc04b799fdd 100644 Binary files a/public/images/pokemon/icons/variant/9/1018_2.png and b/public/images/pokemon/icons/variant/9/1018_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1018_3.png b/public/images/pokemon/icons/variant/9/1018_3.png index c5a3db27602..97c6f515675 100644 Binary files a/public/images/pokemon/icons/variant/9/1018_3.png and b/public/images/pokemon/icons/variant/9/1018_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1019_2.png b/public/images/pokemon/icons/variant/9/1019_2.png index 671ae3f6552..5a225779599 100644 Binary files a/public/images/pokemon/icons/variant/9/1019_2.png and b/public/images/pokemon/icons/variant/9/1019_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1019_3.png b/public/images/pokemon/icons/variant/9/1019_3.png index 0569b3e84b6..5658993e8b8 100644 Binary files a/public/images/pokemon/icons/variant/9/1019_3.png and b/public/images/pokemon/icons/variant/9/1019_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1022_2.png b/public/images/pokemon/icons/variant/9/1022_2.png index 7854c529314..2e0dcb7a5f7 100644 Binary files a/public/images/pokemon/icons/variant/9/1022_2.png and b/public/images/pokemon/icons/variant/9/1022_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1022_3.png b/public/images/pokemon/icons/variant/9/1022_3.png index 50e3afa2e7b..bccaaf181c4 100644 Binary files a/public/images/pokemon/icons/variant/9/1022_3.png and b/public/images/pokemon/icons/variant/9/1022_3.png differ diff --git a/public/images/pokemon/icons/variant/9/1023_2.png b/public/images/pokemon/icons/variant/9/1023_2.png index 527f07dfeef..d259adb30b0 100644 Binary files a/public/images/pokemon/icons/variant/9/1023_2.png and b/public/images/pokemon/icons/variant/9/1023_2.png differ diff --git a/public/images/pokemon/icons/variant/9/1023_3.png b/public/images/pokemon/icons/variant/9/1023_3.png index 2ccb7260f7a..14117a144e8 100644 Binary files a/public/images/pokemon/icons/variant/9/1023_3.png and b/public/images/pokemon/icons/variant/9/1023_3.png differ diff --git a/public/images/pokemon/icons/variant/9/8901_1.png b/public/images/pokemon/icons/variant/9/8901_1.png index fb0c9c395fb..57cf97ae031 100644 Binary files a/public/images/pokemon/icons/variant/9/8901_1.png and b/public/images/pokemon/icons/variant/9/8901_1.png differ diff --git a/public/images/pokemon/icons/variant/9/8901_2.png b/public/images/pokemon/icons/variant/9/8901_2.png index c95721ee59e..12bcd960f10 100644 Binary files a/public/images/pokemon/icons/variant/9/8901_2.png and b/public/images/pokemon/icons/variant/9/8901_2.png differ diff --git a/public/images/pokemon/icons/variant/9/8901_3.png b/public/images/pokemon/icons/variant/9/8901_3.png index 926777a226f..ac85684102a 100644 Binary files a/public/images/pokemon/icons/variant/9/8901_3.png and b/public/images/pokemon/icons/variant/9/8901_3.png differ diff --git a/public/images/pokemon/icons/variant/9/909_2.png b/public/images/pokemon/icons/variant/9/909_2.png index 73f71bd49d3..44732f406b2 100644 Binary files a/public/images/pokemon/icons/variant/9/909_2.png and b/public/images/pokemon/icons/variant/9/909_2.png differ diff --git a/public/images/pokemon/icons/variant/9/909_3.png b/public/images/pokemon/icons/variant/9/909_3.png index 5fb79e5b917..edc889b4595 100644 Binary files a/public/images/pokemon/icons/variant/9/909_3.png and b/public/images/pokemon/icons/variant/9/909_3.png differ diff --git a/public/images/pokemon/icons/variant/9/910_2.png b/public/images/pokemon/icons/variant/9/910_2.png index 9a808d0e3b7..6f267d0750d 100644 Binary files a/public/images/pokemon/icons/variant/9/910_2.png and b/public/images/pokemon/icons/variant/9/910_2.png differ diff --git a/public/images/pokemon/icons/variant/9/910_3.png b/public/images/pokemon/icons/variant/9/910_3.png index 0521f47961f..a173378d878 100644 Binary files a/public/images/pokemon/icons/variant/9/910_3.png and b/public/images/pokemon/icons/variant/9/910_3.png differ diff --git a/public/images/pokemon/icons/variant/9/911_2.png b/public/images/pokemon/icons/variant/9/911_2.png index cebbbb77c95..5236642b0e2 100644 Binary files a/public/images/pokemon/icons/variant/9/911_2.png and b/public/images/pokemon/icons/variant/9/911_2.png differ diff --git a/public/images/pokemon/icons/variant/9/911_3.png b/public/images/pokemon/icons/variant/9/911_3.png index 3182c11e2e0..de8d9b7cd4c 100644 Binary files a/public/images/pokemon/icons/variant/9/911_3.png and b/public/images/pokemon/icons/variant/9/911_3.png differ diff --git a/public/images/pokemon/icons/variant/9/912_2.png b/public/images/pokemon/icons/variant/9/912_2.png index 80bc8fb2c46..03b91d3089a 100644 Binary files a/public/images/pokemon/icons/variant/9/912_2.png and b/public/images/pokemon/icons/variant/9/912_2.png differ diff --git a/public/images/pokemon/icons/variant/9/912_3.png b/public/images/pokemon/icons/variant/9/912_3.png index c52bdd2fb73..82bf94a4fd5 100644 Binary files a/public/images/pokemon/icons/variant/9/912_3.png and b/public/images/pokemon/icons/variant/9/912_3.png differ diff --git a/public/images/pokemon/icons/variant/9/913_2.png b/public/images/pokemon/icons/variant/9/913_2.png index bb39165f68d..9f91793dc04 100644 Binary files a/public/images/pokemon/icons/variant/9/913_2.png and b/public/images/pokemon/icons/variant/9/913_2.png differ diff --git a/public/images/pokemon/icons/variant/9/913_3.png b/public/images/pokemon/icons/variant/9/913_3.png index 71cb697ee3b..2054eb52812 100644 Binary files a/public/images/pokemon/icons/variant/9/913_3.png and b/public/images/pokemon/icons/variant/9/913_3.png differ diff --git a/public/images/pokemon/icons/variant/9/914_2.png b/public/images/pokemon/icons/variant/9/914_2.png index ecf60fef07f..5ce20395f61 100644 Binary files a/public/images/pokemon/icons/variant/9/914_2.png and b/public/images/pokemon/icons/variant/9/914_2.png differ diff --git a/public/images/pokemon/icons/variant/9/914_3.png b/public/images/pokemon/icons/variant/9/914_3.png index c7ea5441d4b..1e975529223 100644 Binary files a/public/images/pokemon/icons/variant/9/914_3.png and b/public/images/pokemon/icons/variant/9/914_3.png differ diff --git a/public/images/pokemon/icons/variant/9/919_1.png b/public/images/pokemon/icons/variant/9/919_1.png index d6020b717db..4fb6692c0c0 100644 Binary files a/public/images/pokemon/icons/variant/9/919_1.png and b/public/images/pokemon/icons/variant/9/919_1.png differ diff --git a/public/images/pokemon/icons/variant/9/919_2.png b/public/images/pokemon/icons/variant/9/919_2.png index 0e6cc33f0cb..6ceecb59460 100644 Binary files a/public/images/pokemon/icons/variant/9/919_2.png and b/public/images/pokemon/icons/variant/9/919_2.png differ diff --git a/public/images/pokemon/icons/variant/9/919_3.png b/public/images/pokemon/icons/variant/9/919_3.png index 5480bc5f1f8..8b22211a90b 100644 Binary files a/public/images/pokemon/icons/variant/9/919_3.png and b/public/images/pokemon/icons/variant/9/919_3.png differ diff --git a/public/images/pokemon/icons/variant/9/920_1.png b/public/images/pokemon/icons/variant/9/920_1.png index 186bebbdc9d..7eb0e9e3657 100644 Binary files a/public/images/pokemon/icons/variant/9/920_1.png and b/public/images/pokemon/icons/variant/9/920_1.png differ diff --git a/public/images/pokemon/icons/variant/9/920_2.png b/public/images/pokemon/icons/variant/9/920_2.png index 99b1e663dc0..791303226f7 100644 Binary files a/public/images/pokemon/icons/variant/9/920_2.png and b/public/images/pokemon/icons/variant/9/920_2.png differ diff --git a/public/images/pokemon/icons/variant/9/920_3.png b/public/images/pokemon/icons/variant/9/920_3.png index 25bd3d3c629..5b980b40f37 100644 Binary files a/public/images/pokemon/icons/variant/9/920_3.png and b/public/images/pokemon/icons/variant/9/920_3.png differ diff --git a/public/images/pokemon/icons/variant/9/924_1.png b/public/images/pokemon/icons/variant/9/924_1.png index fbf980cd5f1..11019a4afe3 100644 Binary files a/public/images/pokemon/icons/variant/9/924_1.png and b/public/images/pokemon/icons/variant/9/924_1.png differ diff --git a/public/images/pokemon/icons/variant/9/924_2.png b/public/images/pokemon/icons/variant/9/924_2.png index 5432c135b40..da028de9810 100644 Binary files a/public/images/pokemon/icons/variant/9/924_2.png and b/public/images/pokemon/icons/variant/9/924_2.png differ diff --git a/public/images/pokemon/icons/variant/9/924_3.png b/public/images/pokemon/icons/variant/9/924_3.png index fe438313f67..ac6a9acc3ab 100644 Binary files a/public/images/pokemon/icons/variant/9/924_3.png and b/public/images/pokemon/icons/variant/9/924_3.png differ diff --git a/public/images/pokemon/icons/variant/9/925-four_1.png b/public/images/pokemon/icons/variant/9/925-four_1.png index 5e5fa3dd186..835b4bbc540 100644 Binary files a/public/images/pokemon/icons/variant/9/925-four_1.png and b/public/images/pokemon/icons/variant/9/925-four_1.png differ diff --git a/public/images/pokemon/icons/variant/9/925-four_2.png b/public/images/pokemon/icons/variant/9/925-four_2.png index 9f480930adc..48e0d3bd511 100644 Binary files a/public/images/pokemon/icons/variant/9/925-four_2.png and b/public/images/pokemon/icons/variant/9/925-four_2.png differ diff --git a/public/images/pokemon/icons/variant/9/925-four_3.png b/public/images/pokemon/icons/variant/9/925-four_3.png index 997bb356a0d..ecd9eb4695a 100644 Binary files a/public/images/pokemon/icons/variant/9/925-four_3.png and b/public/images/pokemon/icons/variant/9/925-four_3.png differ diff --git a/public/images/pokemon/icons/variant/9/925-three_1.png b/public/images/pokemon/icons/variant/9/925-three_1.png index 486f5c0ec3b..0d0ee8410e7 100644 Binary files a/public/images/pokemon/icons/variant/9/925-three_1.png and b/public/images/pokemon/icons/variant/9/925-three_1.png differ diff --git a/public/images/pokemon/icons/variant/9/925-three_2.png b/public/images/pokemon/icons/variant/9/925-three_2.png index 53eaec0f370..ba5eaaf49f5 100644 Binary files a/public/images/pokemon/icons/variant/9/925-three_2.png and b/public/images/pokemon/icons/variant/9/925-three_2.png differ diff --git a/public/images/pokemon/icons/variant/9/925-three_3.png b/public/images/pokemon/icons/variant/9/925-three_3.png index 1381738cc7b..9b0e2dadfee 100644 Binary files a/public/images/pokemon/icons/variant/9/925-three_3.png and b/public/images/pokemon/icons/variant/9/925-three_3.png differ diff --git a/public/images/pokemon/icons/variant/9/932_2.png b/public/images/pokemon/icons/variant/9/932_2.png index 5b0e2583b5a..3898b045a99 100644 Binary files a/public/images/pokemon/icons/variant/9/932_2.png and b/public/images/pokemon/icons/variant/9/932_2.png differ diff --git a/public/images/pokemon/icons/variant/9/932_3.png b/public/images/pokemon/icons/variant/9/932_3.png index a2e6774971c..8a5798882d8 100644 Binary files a/public/images/pokemon/icons/variant/9/932_3.png and b/public/images/pokemon/icons/variant/9/932_3.png differ diff --git a/public/images/pokemon/icons/variant/9/933_2.png b/public/images/pokemon/icons/variant/9/933_2.png index 55a0fb6c895..16eb3ea19e6 100644 Binary files a/public/images/pokemon/icons/variant/9/933_2.png and b/public/images/pokemon/icons/variant/9/933_2.png differ diff --git a/public/images/pokemon/icons/variant/9/933_3.png b/public/images/pokemon/icons/variant/9/933_3.png index ec521be73ad..4920983072f 100644 Binary files a/public/images/pokemon/icons/variant/9/933_3.png and b/public/images/pokemon/icons/variant/9/933_3.png differ diff --git a/public/images/pokemon/icons/variant/9/934_2.png b/public/images/pokemon/icons/variant/9/934_2.png index f414aa2e46a..2bf5cc07f77 100644 Binary files a/public/images/pokemon/icons/variant/9/934_2.png and b/public/images/pokemon/icons/variant/9/934_2.png differ diff --git a/public/images/pokemon/icons/variant/9/934_3.png b/public/images/pokemon/icons/variant/9/934_3.png index 5e6ae63978a..1bff3aedb09 100644 Binary files a/public/images/pokemon/icons/variant/9/934_3.png and b/public/images/pokemon/icons/variant/9/934_3.png differ diff --git a/public/images/pokemon/icons/variant/9/935_1.png b/public/images/pokemon/icons/variant/9/935_1.png index 90c5add8062..995050c093c 100644 Binary files a/public/images/pokemon/icons/variant/9/935_1.png and b/public/images/pokemon/icons/variant/9/935_1.png differ diff --git a/public/images/pokemon/icons/variant/9/935_2.png b/public/images/pokemon/icons/variant/9/935_2.png index 0dd9c43c941..cfe793361f7 100644 Binary files a/public/images/pokemon/icons/variant/9/935_2.png and b/public/images/pokemon/icons/variant/9/935_2.png differ diff --git a/public/images/pokemon/icons/variant/9/935_3.png b/public/images/pokemon/icons/variant/9/935_3.png index b8d1b63a1ed..1a6a4c41198 100644 Binary files a/public/images/pokemon/icons/variant/9/935_3.png and b/public/images/pokemon/icons/variant/9/935_3.png differ diff --git a/public/images/pokemon/icons/variant/9/936_1.png b/public/images/pokemon/icons/variant/9/936_1.png index 06c39d72867..07e6b6e50a9 100644 Binary files a/public/images/pokemon/icons/variant/9/936_1.png and b/public/images/pokemon/icons/variant/9/936_1.png differ diff --git a/public/images/pokemon/icons/variant/9/936_2.png b/public/images/pokemon/icons/variant/9/936_2.png index 80e4f83d134..47f67ac4e7f 100644 Binary files a/public/images/pokemon/icons/variant/9/936_2.png and b/public/images/pokemon/icons/variant/9/936_2.png differ diff --git a/public/images/pokemon/icons/variant/9/936_3.png b/public/images/pokemon/icons/variant/9/936_3.png index f2a53aedf09..149cb6915b4 100644 Binary files a/public/images/pokemon/icons/variant/9/936_3.png and b/public/images/pokemon/icons/variant/9/936_3.png differ diff --git a/public/images/pokemon/icons/variant/9/937_1.png b/public/images/pokemon/icons/variant/9/937_1.png index e45d536a6b0..b4eeedea217 100644 Binary files a/public/images/pokemon/icons/variant/9/937_1.png and b/public/images/pokemon/icons/variant/9/937_1.png differ diff --git a/public/images/pokemon/icons/variant/9/937_2.png b/public/images/pokemon/icons/variant/9/937_2.png index 1362ef759f7..53b544104d4 100644 Binary files a/public/images/pokemon/icons/variant/9/937_2.png and b/public/images/pokemon/icons/variant/9/937_2.png differ diff --git a/public/images/pokemon/icons/variant/9/937_3.png b/public/images/pokemon/icons/variant/9/937_3.png index cc0a05cea0b..c0a4b45aa43 100644 Binary files a/public/images/pokemon/icons/variant/9/937_3.png and b/public/images/pokemon/icons/variant/9/937_3.png differ diff --git a/public/images/pokemon/icons/variant/9/937_9.png b/public/images/pokemon/icons/variant/9/937_9.png index b9ad59dca69..92c176e0bab 100644 Binary files a/public/images/pokemon/icons/variant/9/937_9.png and b/public/images/pokemon/icons/variant/9/937_9.png differ diff --git a/public/images/pokemon/icons/variant/9/940_2.png b/public/images/pokemon/icons/variant/9/940_2.png index 2344679d987..7f13d9bfa8f 100644 Binary files a/public/images/pokemon/icons/variant/9/940_2.png and b/public/images/pokemon/icons/variant/9/940_2.png differ diff --git a/public/images/pokemon/icons/variant/9/940_3.png b/public/images/pokemon/icons/variant/9/940_3.png index 56a17f4d4dd..70728cf7d42 100644 Binary files a/public/images/pokemon/icons/variant/9/940_3.png and b/public/images/pokemon/icons/variant/9/940_3.png differ diff --git a/public/images/pokemon/icons/variant/9/941_2.png b/public/images/pokemon/icons/variant/9/941_2.png index 57ed730a37c..0133e95e367 100644 Binary files a/public/images/pokemon/icons/variant/9/941_2.png and b/public/images/pokemon/icons/variant/9/941_2.png differ diff --git a/public/images/pokemon/icons/variant/9/941_3.png b/public/images/pokemon/icons/variant/9/941_3.png index 6d0dea04b0e..c4c19cd72ae 100644 Binary files a/public/images/pokemon/icons/variant/9/941_3.png and b/public/images/pokemon/icons/variant/9/941_3.png differ diff --git a/public/images/pokemon/icons/variant/9/944_2.png b/public/images/pokemon/icons/variant/9/944_2.png index 70af4937c8f..6d351e8a00f 100644 Binary files a/public/images/pokemon/icons/variant/9/944_2.png and b/public/images/pokemon/icons/variant/9/944_2.png differ diff --git a/public/images/pokemon/icons/variant/9/944_3.png b/public/images/pokemon/icons/variant/9/944_3.png index ef7618c9a9c..0736dbaed45 100644 Binary files a/public/images/pokemon/icons/variant/9/944_3.png and b/public/images/pokemon/icons/variant/9/944_3.png differ diff --git a/public/images/pokemon/icons/variant/9/945_2.png b/public/images/pokemon/icons/variant/9/945_2.png index 5a4a7c6ebe5..76d9483e3e3 100644 Binary files a/public/images/pokemon/icons/variant/9/945_2.png and b/public/images/pokemon/icons/variant/9/945_2.png differ diff --git a/public/images/pokemon/icons/variant/9/945_3.png b/public/images/pokemon/icons/variant/9/945_3.png index 1dad94c543c..85ddd4c126a 100644 Binary files a/public/images/pokemon/icons/variant/9/945_3.png and b/public/images/pokemon/icons/variant/9/945_3.png differ diff --git a/public/images/pokemon/icons/variant/9/948_2.png b/public/images/pokemon/icons/variant/9/948_2.png index 410f808a465..518344d8426 100644 Binary files a/public/images/pokemon/icons/variant/9/948_2.png and b/public/images/pokemon/icons/variant/9/948_2.png differ diff --git a/public/images/pokemon/icons/variant/9/948_3.png b/public/images/pokemon/icons/variant/9/948_3.png index 7fc4d7b32e4..4929a1d987b 100644 Binary files a/public/images/pokemon/icons/variant/9/948_3.png and b/public/images/pokemon/icons/variant/9/948_3.png differ diff --git a/public/images/pokemon/icons/variant/9/949_2.png b/public/images/pokemon/icons/variant/9/949_2.png index ef70b3d7d96..8e76b03a7e6 100644 Binary files a/public/images/pokemon/icons/variant/9/949_2.png and b/public/images/pokemon/icons/variant/9/949_2.png differ diff --git a/public/images/pokemon/icons/variant/9/949_3.png b/public/images/pokemon/icons/variant/9/949_3.png index 4d0175d939e..470aa8af3da 100644 Binary files a/public/images/pokemon/icons/variant/9/949_3.png and b/public/images/pokemon/icons/variant/9/949_3.png differ diff --git a/public/images/pokemon/icons/variant/9/951_2.png b/public/images/pokemon/icons/variant/9/951_2.png index 43ef19de0b5..20d0f18255a 100644 Binary files a/public/images/pokemon/icons/variant/9/951_2.png and b/public/images/pokemon/icons/variant/9/951_2.png differ diff --git a/public/images/pokemon/icons/variant/9/951_3.png b/public/images/pokemon/icons/variant/9/951_3.png index b9e613a8164..d8cccd03445 100644 Binary files a/public/images/pokemon/icons/variant/9/951_3.png and b/public/images/pokemon/icons/variant/9/951_3.png differ diff --git a/public/images/pokemon/icons/variant/9/952_2.png b/public/images/pokemon/icons/variant/9/952_2.png index f0118b6d8ce..cdcdc6fddf2 100644 Binary files a/public/images/pokemon/icons/variant/9/952_2.png and b/public/images/pokemon/icons/variant/9/952_2.png differ diff --git a/public/images/pokemon/icons/variant/9/952_3.png b/public/images/pokemon/icons/variant/9/952_3.png index c73ea8ef08b..a1c5c9d425b 100644 Binary files a/public/images/pokemon/icons/variant/9/952_3.png and b/public/images/pokemon/icons/variant/9/952_3.png differ diff --git a/public/images/pokemon/icons/variant/9/953_2.png b/public/images/pokemon/icons/variant/9/953_2.png index 8b200581cff..157138cd16e 100644 Binary files a/public/images/pokemon/icons/variant/9/953_2.png and b/public/images/pokemon/icons/variant/9/953_2.png differ diff --git a/public/images/pokemon/icons/variant/9/953_3.png b/public/images/pokemon/icons/variant/9/953_3.png index 0e35868ebc7..aa9e6235883 100644 Binary files a/public/images/pokemon/icons/variant/9/953_3.png and b/public/images/pokemon/icons/variant/9/953_3.png differ diff --git a/public/images/pokemon/icons/variant/9/954_2.png b/public/images/pokemon/icons/variant/9/954_2.png index 7e3607698bf..a414e3c8de4 100644 Binary files a/public/images/pokemon/icons/variant/9/954_2.png and b/public/images/pokemon/icons/variant/9/954_2.png differ diff --git a/public/images/pokemon/icons/variant/9/954_3.png b/public/images/pokemon/icons/variant/9/954_3.png index affd07a9df9..5901180977f 100644 Binary files a/public/images/pokemon/icons/variant/9/954_3.png and b/public/images/pokemon/icons/variant/9/954_3.png differ diff --git a/public/images/pokemon/icons/variant/9/957_1.png b/public/images/pokemon/icons/variant/9/957_1.png index 752cdaa64d3..548a48075e3 100644 Binary files a/public/images/pokemon/icons/variant/9/957_1.png and b/public/images/pokemon/icons/variant/9/957_1.png differ diff --git a/public/images/pokemon/icons/variant/9/957_2.png b/public/images/pokemon/icons/variant/9/957_2.png index fcbacb6c862..e7e0fd22eca 100644 Binary files a/public/images/pokemon/icons/variant/9/957_2.png and b/public/images/pokemon/icons/variant/9/957_2.png differ diff --git a/public/images/pokemon/icons/variant/9/957_3.png b/public/images/pokemon/icons/variant/9/957_3.png index bc6c288c502..e13c8a5e1fd 100644 Binary files a/public/images/pokemon/icons/variant/9/957_3.png and b/public/images/pokemon/icons/variant/9/957_3.png differ diff --git a/public/images/pokemon/icons/variant/9/958_1.png b/public/images/pokemon/icons/variant/9/958_1.png index ac661ce1386..24095c5bc6f 100644 Binary files a/public/images/pokemon/icons/variant/9/958_1.png and b/public/images/pokemon/icons/variant/9/958_1.png differ diff --git a/public/images/pokemon/icons/variant/9/958_2.png b/public/images/pokemon/icons/variant/9/958_2.png index 97a27b59733..b98a04b3995 100644 Binary files a/public/images/pokemon/icons/variant/9/958_2.png and b/public/images/pokemon/icons/variant/9/958_2.png differ diff --git a/public/images/pokemon/icons/variant/9/958_3.png b/public/images/pokemon/icons/variant/9/958_3.png index a4a311eb23e..b4a513c0dc9 100644 Binary files a/public/images/pokemon/icons/variant/9/958_3.png and b/public/images/pokemon/icons/variant/9/958_3.png differ diff --git a/public/images/pokemon/icons/variant/9/959_1.png b/public/images/pokemon/icons/variant/9/959_1.png index aef9f17ff9b..20d0501cefa 100644 Binary files a/public/images/pokemon/icons/variant/9/959_1.png and b/public/images/pokemon/icons/variant/9/959_1.png differ diff --git a/public/images/pokemon/icons/variant/9/959_2.png b/public/images/pokemon/icons/variant/9/959_2.png index af71566fdcd..f18e5b0f433 100644 Binary files a/public/images/pokemon/icons/variant/9/959_2.png and b/public/images/pokemon/icons/variant/9/959_2.png differ diff --git a/public/images/pokemon/icons/variant/9/959_3.png b/public/images/pokemon/icons/variant/9/959_3.png index 78519ab502f..404fe0c2ee7 100644 Binary files a/public/images/pokemon/icons/variant/9/959_3.png and b/public/images/pokemon/icons/variant/9/959_3.png differ diff --git a/public/images/pokemon/icons/variant/9/962_1.png b/public/images/pokemon/icons/variant/9/962_1.png index 5b78aa0f0a7..dc49a8c31ce 100644 Binary files a/public/images/pokemon/icons/variant/9/962_1.png and b/public/images/pokemon/icons/variant/9/962_1.png differ diff --git a/public/images/pokemon/icons/variant/9/962_2.png b/public/images/pokemon/icons/variant/9/962_2.png index 7d018e82197..8deb82f5e36 100644 Binary files a/public/images/pokemon/icons/variant/9/962_2.png and b/public/images/pokemon/icons/variant/9/962_2.png differ diff --git a/public/images/pokemon/icons/variant/9/962_3.png b/public/images/pokemon/icons/variant/9/962_3.png index 4bde28d426e..71d4730bf8a 100644 Binary files a/public/images/pokemon/icons/variant/9/962_3.png and b/public/images/pokemon/icons/variant/9/962_3.png differ diff --git a/public/images/pokemon/icons/variant/9/967_2.png b/public/images/pokemon/icons/variant/9/967_2.png index a8b7935f1dc..1c22c0e6f38 100644 Binary files a/public/images/pokemon/icons/variant/9/967_2.png and b/public/images/pokemon/icons/variant/9/967_2.png differ diff --git a/public/images/pokemon/icons/variant/9/967_3.png b/public/images/pokemon/icons/variant/9/967_3.png index b67e193543e..a0bb9fe86be 100644 Binary files a/public/images/pokemon/icons/variant/9/967_3.png and b/public/images/pokemon/icons/variant/9/967_3.png differ diff --git a/public/images/pokemon/icons/variant/9/968_2.png b/public/images/pokemon/icons/variant/9/968_2.png index fb3cbb3646c..31583388c64 100644 Binary files a/public/images/pokemon/icons/variant/9/968_2.png and b/public/images/pokemon/icons/variant/9/968_2.png differ diff --git a/public/images/pokemon/icons/variant/9/968_3.png b/public/images/pokemon/icons/variant/9/968_3.png index c22bfc1b1be..b9e6b39c009 100644 Binary files a/public/images/pokemon/icons/variant/9/968_3.png and b/public/images/pokemon/icons/variant/9/968_3.png differ diff --git a/public/images/pokemon/icons/variant/9/969_2.png b/public/images/pokemon/icons/variant/9/969_2.png index 824555cce19..10d6cadc28c 100644 Binary files a/public/images/pokemon/icons/variant/9/969_2.png and b/public/images/pokemon/icons/variant/9/969_2.png differ diff --git a/public/images/pokemon/icons/variant/9/969_3.png b/public/images/pokemon/icons/variant/9/969_3.png index 38c7afd4559..3d72152a3cd 100644 Binary files a/public/images/pokemon/icons/variant/9/969_3.png and b/public/images/pokemon/icons/variant/9/969_3.png differ diff --git a/public/images/pokemon/icons/variant/9/970_2.png b/public/images/pokemon/icons/variant/9/970_2.png index 3a2c45c9f49..c783bba2eae 100644 Binary files a/public/images/pokemon/icons/variant/9/970_2.png and b/public/images/pokemon/icons/variant/9/970_2.png differ diff --git a/public/images/pokemon/icons/variant/9/970_3.png b/public/images/pokemon/icons/variant/9/970_3.png index 01949deea0e..1ad671ad38e 100644 Binary files a/public/images/pokemon/icons/variant/9/970_3.png and b/public/images/pokemon/icons/variant/9/970_3.png differ diff --git a/public/images/pokemon/icons/variant/9/973_1.png b/public/images/pokemon/icons/variant/9/973_1.png index 3dafafe1f8d..c40a4d963e6 100644 Binary files a/public/images/pokemon/icons/variant/9/973_1.png and b/public/images/pokemon/icons/variant/9/973_1.png differ diff --git a/public/images/pokemon/icons/variant/9/973_2.png b/public/images/pokemon/icons/variant/9/973_2.png index 0fb662c43fb..8ed18551f8f 100644 Binary files a/public/images/pokemon/icons/variant/9/973_2.png and b/public/images/pokemon/icons/variant/9/973_2.png differ diff --git a/public/images/pokemon/icons/variant/9/973_3.png b/public/images/pokemon/icons/variant/9/973_3.png index 3b8e2b58d8c..451e480d509 100644 Binary files a/public/images/pokemon/icons/variant/9/973_3.png and b/public/images/pokemon/icons/variant/9/973_3.png differ diff --git a/public/images/pokemon/icons/variant/9/974_2.png b/public/images/pokemon/icons/variant/9/974_2.png index d2345f81171..2a6ef11ddf5 100644 Binary files a/public/images/pokemon/icons/variant/9/974_2.png and b/public/images/pokemon/icons/variant/9/974_2.png differ diff --git a/public/images/pokemon/icons/variant/9/974_3.png b/public/images/pokemon/icons/variant/9/974_3.png index b15fd390a95..16ed0a91211 100644 Binary files a/public/images/pokemon/icons/variant/9/974_3.png and b/public/images/pokemon/icons/variant/9/974_3.png differ diff --git a/public/images/pokemon/icons/variant/9/975_2.png b/public/images/pokemon/icons/variant/9/975_2.png index 8f6f1d5042d..1b89a79cf2c 100644 Binary files a/public/images/pokemon/icons/variant/9/975_2.png and b/public/images/pokemon/icons/variant/9/975_2.png differ diff --git a/public/images/pokemon/icons/variant/9/975_3.png b/public/images/pokemon/icons/variant/9/975_3.png index 9946f06cd33..0ef75114af4 100644 Binary files a/public/images/pokemon/icons/variant/9/975_3.png and b/public/images/pokemon/icons/variant/9/975_3.png differ diff --git a/public/images/pokemon/icons/variant/9/978-curly_2.png b/public/images/pokemon/icons/variant/9/978-curly_2.png index 14de557d03e..b33bf4cee3a 100644 Binary files a/public/images/pokemon/icons/variant/9/978-curly_2.png and b/public/images/pokemon/icons/variant/9/978-curly_2.png differ diff --git a/public/images/pokemon/icons/variant/9/978-curly_3.png b/public/images/pokemon/icons/variant/9/978-curly_3.png index 1a2593c495b..d6181a47d20 100644 Binary files a/public/images/pokemon/icons/variant/9/978-curly_3.png and b/public/images/pokemon/icons/variant/9/978-curly_3.png differ diff --git a/public/images/pokemon/icons/variant/9/978-droopy_2.png b/public/images/pokemon/icons/variant/9/978-droopy_2.png index 7cf300eaabf..48c2f41f232 100644 Binary files a/public/images/pokemon/icons/variant/9/978-droopy_2.png and b/public/images/pokemon/icons/variant/9/978-droopy_2.png differ diff --git a/public/images/pokemon/icons/variant/9/978-droopy_3.png b/public/images/pokemon/icons/variant/9/978-droopy_3.png index 915d4b96252..8c7522e369f 100644 Binary files a/public/images/pokemon/icons/variant/9/978-droopy_3.png and b/public/images/pokemon/icons/variant/9/978-droopy_3.png differ diff --git a/public/images/pokemon/icons/variant/9/978-stretchy_2.png b/public/images/pokemon/icons/variant/9/978-stretchy_2.png index 036be57dde2..bcf7b8e8f55 100644 Binary files a/public/images/pokemon/icons/variant/9/978-stretchy_2.png and b/public/images/pokemon/icons/variant/9/978-stretchy_2.png differ diff --git a/public/images/pokemon/icons/variant/9/978-stretchy_3.png b/public/images/pokemon/icons/variant/9/978-stretchy_3.png index 3d142b24f7a..fcfc28dd57e 100644 Binary files a/public/images/pokemon/icons/variant/9/978-stretchy_3.png and b/public/images/pokemon/icons/variant/9/978-stretchy_3.png differ diff --git a/public/images/pokemon/icons/variant/9/979_1.png b/public/images/pokemon/icons/variant/9/979_1.png index 97f982c4878..bb9405fadae 100644 Binary files a/public/images/pokemon/icons/variant/9/979_1.png and b/public/images/pokemon/icons/variant/9/979_1.png differ diff --git a/public/images/pokemon/icons/variant/9/979_2.png b/public/images/pokemon/icons/variant/9/979_2.png index f27ce543686..0522d12885c 100644 Binary files a/public/images/pokemon/icons/variant/9/979_2.png and b/public/images/pokemon/icons/variant/9/979_2.png differ diff --git a/public/images/pokemon/icons/variant/9/979_3.png b/public/images/pokemon/icons/variant/9/979_3.png index 0088be58344..26b078c9579 100644 Binary files a/public/images/pokemon/icons/variant/9/979_3.png and b/public/images/pokemon/icons/variant/9/979_3.png differ diff --git a/public/images/pokemon/icons/variant/9/981_2.png b/public/images/pokemon/icons/variant/9/981_2.png index 1bceb5c2291..27dda491013 100644 Binary files a/public/images/pokemon/icons/variant/9/981_2.png and b/public/images/pokemon/icons/variant/9/981_2.png differ diff --git a/public/images/pokemon/icons/variant/9/981_3.png b/public/images/pokemon/icons/variant/9/981_3.png index 217b607125e..33d3942d5bb 100644 Binary files a/public/images/pokemon/icons/variant/9/981_3.png and b/public/images/pokemon/icons/variant/9/981_3.png differ diff --git a/public/images/pokemon/icons/variant/9/982-three-segment_2.png b/public/images/pokemon/icons/variant/9/982-three-segment_2.png index 17e055b35af..c61ba7bbfe4 100644 Binary files a/public/images/pokemon/icons/variant/9/982-three-segment_2.png and b/public/images/pokemon/icons/variant/9/982-three-segment_2.png differ diff --git a/public/images/pokemon/icons/variant/9/982-three-segment_3.png b/public/images/pokemon/icons/variant/9/982-three-segment_3.png index 3fc80099ca3..71dd249513c 100644 Binary files a/public/images/pokemon/icons/variant/9/982-three-segment_3.png and b/public/images/pokemon/icons/variant/9/982-three-segment_3.png differ diff --git a/public/images/pokemon/icons/variant/9/982_2.png b/public/images/pokemon/icons/variant/9/982_2.png index 14ec37bcc92..c1efa6a1c63 100644 Binary files a/public/images/pokemon/icons/variant/9/982_2.png and b/public/images/pokemon/icons/variant/9/982_2.png differ diff --git a/public/images/pokemon/icons/variant/9/982_3.png b/public/images/pokemon/icons/variant/9/982_3.png index d058675200c..b7250434115 100644 Binary files a/public/images/pokemon/icons/variant/9/982_3.png and b/public/images/pokemon/icons/variant/9/982_3.png differ diff --git a/public/images/pokemon/icons/variant/9/987_1.png b/public/images/pokemon/icons/variant/9/987_1.png index dccbbb60a04..6b91a276db6 100644 Binary files a/public/images/pokemon/icons/variant/9/987_1.png and b/public/images/pokemon/icons/variant/9/987_1.png differ diff --git a/public/images/pokemon/icons/variant/9/987_2.png b/public/images/pokemon/icons/variant/9/987_2.png index 9253f797f9d..a50f793c8ff 100644 Binary files a/public/images/pokemon/icons/variant/9/987_2.png and b/public/images/pokemon/icons/variant/9/987_2.png differ diff --git a/public/images/pokemon/icons/variant/9/987_3.png b/public/images/pokemon/icons/variant/9/987_3.png index 27cd59ebab8..476373dc53d 100644 Binary files a/public/images/pokemon/icons/variant/9/987_3.png and b/public/images/pokemon/icons/variant/9/987_3.png differ diff --git a/public/images/pokemon/icons/variant/9/988_2.png b/public/images/pokemon/icons/variant/9/988_2.png index fcaf8393026..0ab15744219 100644 Binary files a/public/images/pokemon/icons/variant/9/988_2.png and b/public/images/pokemon/icons/variant/9/988_2.png differ diff --git a/public/images/pokemon/icons/variant/9/988_3.png b/public/images/pokemon/icons/variant/9/988_3.png index f2db83a8f50..4e77d7339c9 100644 Binary files a/public/images/pokemon/icons/variant/9/988_3.png and b/public/images/pokemon/icons/variant/9/988_3.png differ diff --git a/public/images/pokemon/icons/variant/9/993_2.png b/public/images/pokemon/icons/variant/9/993_2.png index 07def0a91d0..3d93858422c 100644 Binary files a/public/images/pokemon/icons/variant/9/993_2.png and b/public/images/pokemon/icons/variant/9/993_2.png differ diff --git a/public/images/pokemon/icons/variant/9/993_3.png b/public/images/pokemon/icons/variant/9/993_3.png index 37aa1aa8d80..c88cacc7042 100644 Binary files a/public/images/pokemon/icons/variant/9/993_3.png and b/public/images/pokemon/icons/variant/9/993_3.png differ diff --git a/public/images/pokemon/icons/variant/9/994_2.png b/public/images/pokemon/icons/variant/9/994_2.png index 00f5180e5b2..6d45a3e1311 100644 Binary files a/public/images/pokemon/icons/variant/9/994_2.png and b/public/images/pokemon/icons/variant/9/994_2.png differ diff --git a/public/images/pokemon/icons/variant/9/994_3.png b/public/images/pokemon/icons/variant/9/994_3.png index 71ce48efa26..11381c39f11 100644 Binary files a/public/images/pokemon/icons/variant/9/994_3.png and b/public/images/pokemon/icons/variant/9/994_3.png differ diff --git a/public/images/pokemon/icons/variant/9/995_2.png b/public/images/pokemon/icons/variant/9/995_2.png index 3a4965bfbab..a69bc923231 100644 Binary files a/public/images/pokemon/icons/variant/9/995_2.png and b/public/images/pokemon/icons/variant/9/995_2.png differ diff --git a/public/images/pokemon/icons/variant/9/995_3.png b/public/images/pokemon/icons/variant/9/995_3.png index c6e30c80de4..f4e75577184 100644 Binary files a/public/images/pokemon/icons/variant/9/995_3.png and b/public/images/pokemon/icons/variant/9/995_3.png differ diff --git a/public/images/pokemon/icons/variant/9/996_2.png b/public/images/pokemon/icons/variant/9/996_2.png index 12b1bc9a970..06d23b2736b 100644 Binary files a/public/images/pokemon/icons/variant/9/996_2.png and b/public/images/pokemon/icons/variant/9/996_2.png differ diff --git a/public/images/pokemon/icons/variant/9/996_3.png b/public/images/pokemon/icons/variant/9/996_3.png index 2e58f38b400..7eaf8d71621 100644 Binary files a/public/images/pokemon/icons/variant/9/996_3.png and b/public/images/pokemon/icons/variant/9/996_3.png differ diff --git a/public/images/pokemon/icons/variant/9/997_2.png b/public/images/pokemon/icons/variant/9/997_2.png index a16f35beb96..12e5e51d561 100644 Binary files a/public/images/pokemon/icons/variant/9/997_2.png and b/public/images/pokemon/icons/variant/9/997_2.png differ diff --git a/public/images/pokemon/icons/variant/9/997_3.png b/public/images/pokemon/icons/variant/9/997_3.png index c1ba113c5db..f3f9e0c89af 100644 Binary files a/public/images/pokemon/icons/variant/9/997_3.png and b/public/images/pokemon/icons/variant/9/997_3.png differ diff --git a/public/images/pokemon/icons/variant/9/998_2.png b/public/images/pokemon/icons/variant/9/998_2.png index 9b89d44a3c3..7726920a256 100644 Binary files a/public/images/pokemon/icons/variant/9/998_2.png and b/public/images/pokemon/icons/variant/9/998_2.png differ diff --git a/public/images/pokemon/icons/variant/9/998_3.png b/public/images/pokemon/icons/variant/9/998_3.png index c533829ff2d..3ab7d1e0979 100644 Binary files a/public/images/pokemon/icons/variant/9/998_3.png and b/public/images/pokemon/icons/variant/9/998_3.png differ diff --git a/public/images/pokemon/icons/variant/9/999_1.png b/public/images/pokemon/icons/variant/9/999_1.png index ea3cdfa0de5..92623014dfd 100644 Binary files a/public/images/pokemon/icons/variant/9/999_1.png and b/public/images/pokemon/icons/variant/9/999_1.png differ diff --git a/public/images/pokemon/icons/variant/9/999_2.png b/public/images/pokemon/icons/variant/9/999_2.png index 05a374b7f30..30bfec8ca2a 100644 Binary files a/public/images/pokemon/icons/variant/9/999_2.png and b/public/images/pokemon/icons/variant/9/999_2.png differ diff --git a/public/images/pokemon/icons/variant/9/999_3.png b/public/images/pokemon/icons/variant/9/999_3.png index 84545a14d52..62ec7dbedf2 100644 Binary files a/public/images/pokemon/icons/variant/9/999_3.png and b/public/images/pokemon/icons/variant/9/999_3.png differ diff --git a/public/images/pokemon/shiny/1003.png b/public/images/pokemon/shiny/1003.png index 17462eaf89f..2fc5da30402 100644 Binary files a/public/images/pokemon/shiny/1003.png and b/public/images/pokemon/shiny/1003.png differ diff --git a/public/images/pokemon/shiny/1006.png b/public/images/pokemon/shiny/1006.png index f077d000ca1..d61bc104a6e 100644 Binary files a/public/images/pokemon/shiny/1006.png and b/public/images/pokemon/shiny/1006.png differ diff --git a/public/images/pokemon/shiny/1008-ultimate-mode.png b/public/images/pokemon/shiny/1008-ultimate-mode.png index e46057584ac..5b750053423 100644 Binary files a/public/images/pokemon/shiny/1008-ultimate-mode.png and b/public/images/pokemon/shiny/1008-ultimate-mode.png differ diff --git a/public/images/pokemon/shiny/1018.png b/public/images/pokemon/shiny/1018.png index 42076fd0687..dd4f5f07fad 100644 Binary files a/public/images/pokemon/shiny/1018.png and b/public/images/pokemon/shiny/1018.png differ diff --git a/public/images/pokemon/shiny/1019.png b/public/images/pokemon/shiny/1019.png index 29b939436b9..fc955dcae09 100644 Binary files a/public/images/pokemon/shiny/1019.png and b/public/images/pokemon/shiny/1019.png differ diff --git a/public/images/pokemon/shiny/1024-stellar.png b/public/images/pokemon/shiny/1024-stellar.png index b00b395ec56..d54eab29796 100644 Binary files a/public/images/pokemon/shiny/1024-stellar.png and b/public/images/pokemon/shiny/1024-stellar.png differ diff --git a/public/images/pokemon/shiny/164.png b/public/images/pokemon/shiny/164.png index 4e36ce61adb..9730fc12eef 100644 Binary files a/public/images/pokemon/shiny/164.png and b/public/images/pokemon/shiny/164.png differ diff --git a/public/images/pokemon/shiny/178.png b/public/images/pokemon/shiny/178.png index 248015ee65e..185cfd49659 100644 Binary files a/public/images/pokemon/shiny/178.png and b/public/images/pokemon/shiny/178.png differ diff --git a/public/images/pokemon/shiny/190.png b/public/images/pokemon/shiny/190.png index 60b7ad3163d..041dfc685b3 100644 Binary files a/public/images/pokemon/shiny/190.png and b/public/images/pokemon/shiny/190.png differ diff --git a/public/images/pokemon/shiny/194.png b/public/images/pokemon/shiny/194.png index 38800a7d545..6f04614bb1e 100644 Binary files a/public/images/pokemon/shiny/194.png and b/public/images/pokemon/shiny/194.png differ diff --git a/public/images/pokemon/shiny/195.png b/public/images/pokemon/shiny/195.png index 107ed1d46c3..0995afc8f35 100644 Binary files a/public/images/pokemon/shiny/195.png and b/public/images/pokemon/shiny/195.png differ diff --git a/public/images/pokemon/shiny/196.png b/public/images/pokemon/shiny/196.png index 8b62939e300..5a8f2e8c6ee 100644 Binary files a/public/images/pokemon/shiny/196.png and b/public/images/pokemon/shiny/196.png differ diff --git a/public/images/pokemon/shiny/218.png b/public/images/pokemon/shiny/218.png index b3e42ae4adc..5f2c7377df1 100644 Binary files a/public/images/pokemon/shiny/218.png and b/public/images/pokemon/shiny/218.png differ diff --git a/public/images/pokemon/shiny/226.png b/public/images/pokemon/shiny/226.png index f2934a577f1..e16b9dbef32 100644 Binary files a/public/images/pokemon/shiny/226.png and b/public/images/pokemon/shiny/226.png differ diff --git a/public/images/pokemon/shiny/25-beauty-cosplay.png b/public/images/pokemon/shiny/25-beauty-cosplay.png index 5d63e4e1498..8bdccf90e47 100644 Binary files a/public/images/pokemon/shiny/25-beauty-cosplay.png and b/public/images/pokemon/shiny/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/shiny/25-cool-cosplay.png b/public/images/pokemon/shiny/25-cool-cosplay.png index 56b2240a3b7..36bf80db18c 100644 Binary files a/public/images/pokemon/shiny/25-cool-cosplay.png and b/public/images/pokemon/shiny/25-cool-cosplay.png differ diff --git a/public/images/pokemon/shiny/25-cosplay.png b/public/images/pokemon/shiny/25-cosplay.png index 3d7d28a39eb..efa61c9897c 100644 Binary files a/public/images/pokemon/shiny/25-cosplay.png and b/public/images/pokemon/shiny/25-cosplay.png differ diff --git a/public/images/pokemon/shiny/25-cute-cosplay.png b/public/images/pokemon/shiny/25-cute-cosplay.png index 40b9937f2b0..706d6854bd9 100644 Binary files a/public/images/pokemon/shiny/25-cute-cosplay.png and b/public/images/pokemon/shiny/25-cute-cosplay.png differ diff --git a/public/images/pokemon/shiny/25-smart-cosplay.png b/public/images/pokemon/shiny/25-smart-cosplay.png index 294ee343350..04bb8d847fe 100644 Binary files a/public/images/pokemon/shiny/25-smart-cosplay.png and b/public/images/pokemon/shiny/25-smart-cosplay.png differ diff --git a/public/images/pokemon/shiny/25-tough-cosplay.png b/public/images/pokemon/shiny/25-tough-cosplay.png index 09834dfbc68..70494ff640d 100644 Binary files a/public/images/pokemon/shiny/25-tough-cosplay.png and b/public/images/pokemon/shiny/25-tough-cosplay.png differ diff --git a/public/images/pokemon/shiny/253.png b/public/images/pokemon/shiny/253.png index 624b4a5711e..4fd9f8f959d 100644 Binary files a/public/images/pokemon/shiny/253.png and b/public/images/pokemon/shiny/253.png differ diff --git a/public/images/pokemon/shiny/256.png b/public/images/pokemon/shiny/256.png index 1ec493bd62d..d9d79248198 100644 Binary files a/public/images/pokemon/shiny/256.png and b/public/images/pokemon/shiny/256.png differ diff --git a/public/images/pokemon/shiny/261.png b/public/images/pokemon/shiny/261.png index 6976a0747e1..7a3977f0857 100644 Binary files a/public/images/pokemon/shiny/261.png and b/public/images/pokemon/shiny/261.png differ diff --git a/public/images/pokemon/shiny/262.png b/public/images/pokemon/shiny/262.png index d2dbec0bb8d..0910d0b6c44 100644 Binary files a/public/images/pokemon/shiny/262.png and b/public/images/pokemon/shiny/262.png differ diff --git a/public/images/pokemon/shiny/275.png b/public/images/pokemon/shiny/275.png index de8271cdbd2..95cbf7f2b88 100644 Binary files a/public/images/pokemon/shiny/275.png and b/public/images/pokemon/shiny/275.png differ diff --git a/public/images/pokemon/shiny/279.png b/public/images/pokemon/shiny/279.png index 26dba547913..f6fc8985bb5 100644 Binary files a/public/images/pokemon/shiny/279.png and b/public/images/pokemon/shiny/279.png differ diff --git a/public/images/pokemon/shiny/280.png b/public/images/pokemon/shiny/280.png index 918c84b9ee8..c60a3f3614c 100644 Binary files a/public/images/pokemon/shiny/280.png and b/public/images/pokemon/shiny/280.png differ diff --git a/public/images/pokemon/shiny/281.png b/public/images/pokemon/shiny/281.png index 97ca88d5c64..57dbcdabd1a 100644 Binary files a/public/images/pokemon/shiny/281.png and b/public/images/pokemon/shiny/281.png differ diff --git a/public/images/pokemon/shiny/282.png b/public/images/pokemon/shiny/282.png index 01fb6e5d7ef..9de7ef2f4a4 100644 Binary files a/public/images/pokemon/shiny/282.png and b/public/images/pokemon/shiny/282.png differ diff --git a/public/images/pokemon/shiny/3-gigantamax.png b/public/images/pokemon/shiny/3-gigantamax.png index acc57a41671..c963d7423bb 100644 Binary files a/public/images/pokemon/shiny/3-gigantamax.png and b/public/images/pokemon/shiny/3-gigantamax.png differ diff --git a/public/images/pokemon/shiny/3.png b/public/images/pokemon/shiny/3.png index 4afd3847484..d707077a182 100644 Binary files a/public/images/pokemon/shiny/3.png and b/public/images/pokemon/shiny/3.png differ diff --git a/public/images/pokemon/shiny/308.png b/public/images/pokemon/shiny/308.png index 102bc0256e4..ba212b4c850 100644 Binary files a/public/images/pokemon/shiny/308.png and b/public/images/pokemon/shiny/308.png differ diff --git a/public/images/pokemon/shiny/327.png b/public/images/pokemon/shiny/327.png index 56a473a8416..789a420bafb 100644 Binary files a/public/images/pokemon/shiny/327.png and b/public/images/pokemon/shiny/327.png differ diff --git a/public/images/pokemon/shiny/335.png b/public/images/pokemon/shiny/335.png index fc7c325a469..0bc99f6308c 100644 Binary files a/public/images/pokemon/shiny/335.png and b/public/images/pokemon/shiny/335.png differ diff --git a/public/images/pokemon/shiny/336.png b/public/images/pokemon/shiny/336.png index 45d57027704..eaef46582b8 100644 Binary files a/public/images/pokemon/shiny/336.png and b/public/images/pokemon/shiny/336.png differ diff --git a/public/images/pokemon/shiny/357.png b/public/images/pokemon/shiny/357.png index 0eb62e53719..7c371e95bc6 100644 Binary files a/public/images/pokemon/shiny/357.png and b/public/images/pokemon/shiny/357.png differ diff --git a/public/images/pokemon/shiny/370.png b/public/images/pokemon/shiny/370.png index f49fe4fe27c..58b69a44874 100644 Binary files a/public/images/pokemon/shiny/370.png and b/public/images/pokemon/shiny/370.png differ diff --git a/public/images/pokemon/shiny/373-mega.png b/public/images/pokemon/shiny/373-mega.png index fd2e8eed6e2..555d74b82be 100644 Binary files a/public/images/pokemon/shiny/373-mega.png and b/public/images/pokemon/shiny/373-mega.png differ diff --git a/public/images/pokemon/shiny/373.png b/public/images/pokemon/shiny/373.png index 6e21c49c034..3b824e64fa2 100644 Binary files a/public/images/pokemon/shiny/373.png and b/public/images/pokemon/shiny/373.png differ diff --git a/public/images/pokemon/shiny/378.png b/public/images/pokemon/shiny/378.png index 7674ac1873a..e3ddaf8f2da 100644 Binary files a/public/images/pokemon/shiny/378.png and b/public/images/pokemon/shiny/378.png differ diff --git a/public/images/pokemon/shiny/382-primal.png b/public/images/pokemon/shiny/382-primal.png index 614ca450257..9d435e39c0f 100644 Binary files a/public/images/pokemon/shiny/382-primal.png and b/public/images/pokemon/shiny/382-primal.png differ diff --git a/public/images/pokemon/shiny/4078.png b/public/images/pokemon/shiny/4078.png index 2af733a6758..a979321ddcd 100644 Binary files a/public/images/pokemon/shiny/4078.png and b/public/images/pokemon/shiny/4078.png differ diff --git a/public/images/pokemon/shiny/4080.png b/public/images/pokemon/shiny/4080.png index 35f3c7c0ff6..4136cddf888 100644 Binary files a/public/images/pokemon/shiny/4080.png and b/public/images/pokemon/shiny/4080.png differ diff --git a/public/images/pokemon/shiny/4144.png b/public/images/pokemon/shiny/4144.png index a17083ade49..95393d72642 100644 Binary files a/public/images/pokemon/shiny/4144.png and b/public/images/pokemon/shiny/4144.png differ diff --git a/public/images/pokemon/shiny/4145.png b/public/images/pokemon/shiny/4145.png index bd6e602d32f..a8d29d3a11c 100644 Binary files a/public/images/pokemon/shiny/4145.png and b/public/images/pokemon/shiny/4145.png differ diff --git a/public/images/pokemon/shiny/4146.png b/public/images/pokemon/shiny/4146.png index b7a3157782b..c4ac526d7a6 100644 Binary files a/public/images/pokemon/shiny/4146.png and b/public/images/pokemon/shiny/4146.png differ diff --git a/public/images/pokemon/shiny/4199.png b/public/images/pokemon/shiny/4199.png index fb4b8b70ddb..516d757c9ee 100644 Binary files a/public/images/pokemon/shiny/4199.png and b/public/images/pokemon/shiny/4199.png differ diff --git a/public/images/pokemon/shiny/424.png b/public/images/pokemon/shiny/424.png index 5685c21e276..2cc3a79a3b0 100644 Binary files a/public/images/pokemon/shiny/424.png and b/public/images/pokemon/shiny/424.png differ diff --git a/public/images/pokemon/shiny/431.png b/public/images/pokemon/shiny/431.png index 9ada8fdb6f1..539d8a10ca3 100644 Binary files a/public/images/pokemon/shiny/431.png and b/public/images/pokemon/shiny/431.png differ diff --git a/public/images/pokemon/shiny/433.png b/public/images/pokemon/shiny/433.png index f5f34928c21..a1956df5636 100644 Binary files a/public/images/pokemon/shiny/433.png and b/public/images/pokemon/shiny/433.png differ diff --git a/public/images/pokemon/shiny/436.png b/public/images/pokemon/shiny/436.png index 87263bbbe6c..a0aaf53f0a6 100644 Binary files a/public/images/pokemon/shiny/436.png and b/public/images/pokemon/shiny/436.png differ diff --git a/public/images/pokemon/shiny/440.png b/public/images/pokemon/shiny/440.png index aa4284202ed..824528a7241 100644 Binary files a/public/images/pokemon/shiny/440.png and b/public/images/pokemon/shiny/440.png differ diff --git a/public/images/pokemon/shiny/45.png b/public/images/pokemon/shiny/45.png index 4aab94dfb65..ad2fa4a3832 100644 Binary files a/public/images/pokemon/shiny/45.png and b/public/images/pokemon/shiny/45.png differ diff --git a/public/images/pokemon/shiny/451.png b/public/images/pokemon/shiny/451.png index 4f8120ce668..777210be118 100644 Binary files a/public/images/pokemon/shiny/451.png and b/public/images/pokemon/shiny/451.png differ diff --git a/public/images/pokemon/shiny/454.png b/public/images/pokemon/shiny/454.png index 232c3cb30a0..8dcf791011f 100644 Binary files a/public/images/pokemon/shiny/454.png and b/public/images/pokemon/shiny/454.png differ diff --git a/public/images/pokemon/shiny/469.png b/public/images/pokemon/shiny/469.png index 7e8d8b674d3..b06a2f9d432 100644 Binary files a/public/images/pokemon/shiny/469.png and b/public/images/pokemon/shiny/469.png differ diff --git a/public/images/pokemon/shiny/47.png b/public/images/pokemon/shiny/47.png index b1b0bb9a12a..08d13062f82 100644 Binary files a/public/images/pokemon/shiny/47.png and b/public/images/pokemon/shiny/47.png differ diff --git a/public/images/pokemon/shiny/472.png b/public/images/pokemon/shiny/472.png index 14fa9b0fe8b..3f10a3bcc99 100644 Binary files a/public/images/pokemon/shiny/472.png and b/public/images/pokemon/shiny/472.png differ diff --git a/public/images/pokemon/shiny/477.png b/public/images/pokemon/shiny/477.png index 2011636c517..149d8426953 100644 Binary files a/public/images/pokemon/shiny/477.png and b/public/images/pokemon/shiny/477.png differ diff --git a/public/images/pokemon/shiny/556.png b/public/images/pokemon/shiny/556.png index d62d114bbcb..9dccfbc3421 100644 Binary files a/public/images/pokemon/shiny/556.png and b/public/images/pokemon/shiny/556.png differ diff --git a/public/images/pokemon/shiny/563.png b/public/images/pokemon/shiny/563.png index 91624b28dc5..9408c4a48b5 100644 Binary files a/public/images/pokemon/shiny/563.png and b/public/images/pokemon/shiny/563.png differ diff --git a/public/images/pokemon/shiny/569-gigantamax.png b/public/images/pokemon/shiny/569-gigantamax.png index f0a0bc5536b..bfa6738efbb 100644 Binary files a/public/images/pokemon/shiny/569-gigantamax.png and b/public/images/pokemon/shiny/569-gigantamax.png differ diff --git a/public/images/pokemon/shiny/573.png b/public/images/pokemon/shiny/573.png index c664a419f75..5af1a4e6342 100644 Binary files a/public/images/pokemon/shiny/573.png and b/public/images/pokemon/shiny/573.png differ diff --git a/public/images/pokemon/shiny/577.png b/public/images/pokemon/shiny/577.png index 08c3bf0bf59..9d398876549 100644 Binary files a/public/images/pokemon/shiny/577.png and b/public/images/pokemon/shiny/577.png differ diff --git a/public/images/pokemon/shiny/582.png b/public/images/pokemon/shiny/582.png index b96387186c7..5608f3c5b92 100644 Binary files a/public/images/pokemon/shiny/582.png and b/public/images/pokemon/shiny/582.png differ diff --git a/public/images/pokemon/shiny/586-spring.png b/public/images/pokemon/shiny/586-spring.png index c256c57c94b..688cfe6aca4 100644 Binary files a/public/images/pokemon/shiny/586-spring.png and b/public/images/pokemon/shiny/586-spring.png differ diff --git a/public/images/pokemon/shiny/60.png b/public/images/pokemon/shiny/60.png index 1a92e9a24ed..070d97e0e27 100644 Binary files a/public/images/pokemon/shiny/60.png and b/public/images/pokemon/shiny/60.png differ diff --git a/public/images/pokemon/shiny/62.png b/public/images/pokemon/shiny/62.png index d25b4087015..5160cf626ef 100644 Binary files a/public/images/pokemon/shiny/62.png and b/public/images/pokemon/shiny/62.png differ diff --git a/public/images/pokemon/shiny/636.png b/public/images/pokemon/shiny/636.png index 21088248dee..15d710dabef 100644 Binary files a/public/images/pokemon/shiny/636.png and b/public/images/pokemon/shiny/636.png differ diff --git a/public/images/pokemon/shiny/656.png b/public/images/pokemon/shiny/656.png index d65d9ab857d..1c04ae9ef99 100644 Binary files a/public/images/pokemon/shiny/656.png and b/public/images/pokemon/shiny/656.png differ diff --git a/public/images/pokemon/shiny/658-ash.png b/public/images/pokemon/shiny/658-ash.png index b25693fd24e..50f756815d2 100644 Binary files a/public/images/pokemon/shiny/658-ash.png and b/public/images/pokemon/shiny/658-ash.png differ diff --git a/public/images/pokemon/shiny/658.png b/public/images/pokemon/shiny/658.png index 100d2a02f4a..0f039b50b26 100644 Binary files a/public/images/pokemon/shiny/658.png and b/public/images/pokemon/shiny/658.png differ diff --git a/public/images/pokemon/shiny/668.png b/public/images/pokemon/shiny/668.png index 73c11b9a7c7..e75781c9e99 100644 Binary files a/public/images/pokemon/shiny/668.png and b/public/images/pokemon/shiny/668.png differ diff --git a/public/images/pokemon/shiny/672.json b/public/images/pokemon/shiny/672.json index dfd98acaf6b..f337bef7d29 100644 --- a/public/images/pokemon/shiny/672.json +++ b/public/images/pokemon/shiny/672.json @@ -1,41 +1,479 @@ -{ - "textures": [ - { - "image": "672.png", - "format": "RGBA8888", - "size": { - "w": 50, - "h": 50 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 42, - "h": 50 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 42, - "h": 50 - }, - "frame": { - "x": 0, - "y": 0, - "w": 42, - "h": 50 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b346b616fb3566e3bb64cdd6b14c5d59:fb0b72a9ea01a28cfcf7731d5cf359af:2e4767b7cd134fc0ab1bb6e9eee82bc7$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 127, "y": 50, "w": 42, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 42, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 43, "y": 53, "w": 43, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 43, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 124, "y": 148, "w": 43, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 13, "w": 43, "h": 45 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 0, "y": 102, "w": 42, "h": 47 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 11, "w": 42, "h": 47 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 0, "y": 54, "w": 42, "h": 48 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 10, "w": 42, "h": 48 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 127, "y": 99, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 128, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 42, "y": 100, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 43, "y": 0, "w": 43, "h": 53 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 4, "w": 43, "h": 53 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 0, "y": 0, "w": 43, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 43, "h": 54 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 83, "y": 101, "w": 41, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 9, "w": 41, "h": 49 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 86, "y": 50, "w": 41, "h": 51 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 7, "w": 41, "h": 51 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 86, "y": 0, "w": 42, "h": 50 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 8, "w": 42, "h": 50 }, + "sourceSize": { "w": 44, "h": 58 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.11-x64", + "image": "672.png", + "format": "I8", + "size": { "w": 170, "h": 193 }, + "scale": "1" + } } diff --git a/public/images/pokemon/shiny/672.png b/public/images/pokemon/shiny/672.png index b25ec4f08d3..8602e7a026b 100644 Binary files a/public/images/pokemon/shiny/672.png and b/public/images/pokemon/shiny/672.png differ diff --git a/public/images/pokemon/shiny/674.png b/public/images/pokemon/shiny/674.png index 7c8e71d5988..00e7ebf2b7f 100644 Binary files a/public/images/pokemon/shiny/674.png and b/public/images/pokemon/shiny/674.png differ diff --git a/public/images/pokemon/shiny/676-dandy.png b/public/images/pokemon/shiny/676-dandy.png index d0e19946a24..079d6bd9a83 100644 Binary files a/public/images/pokemon/shiny/676-dandy.png and b/public/images/pokemon/shiny/676-dandy.png differ diff --git a/public/images/pokemon/shiny/676-debutante.png b/public/images/pokemon/shiny/676-debutante.png index ff8d8d76dbe..35fd0b35699 100644 Binary files a/public/images/pokemon/shiny/676-debutante.png and b/public/images/pokemon/shiny/676-debutante.png differ diff --git a/public/images/pokemon/shiny/676-diamond.png b/public/images/pokemon/shiny/676-diamond.png index a29257968a3..e47f7b5adb5 100644 Binary files a/public/images/pokemon/shiny/676-diamond.png and b/public/images/pokemon/shiny/676-diamond.png differ diff --git a/public/images/pokemon/shiny/676-heart.png b/public/images/pokemon/shiny/676-heart.png index 39c7e8b900c..63095d052e1 100644 Binary files a/public/images/pokemon/shiny/676-heart.png and b/public/images/pokemon/shiny/676-heart.png differ diff --git a/public/images/pokemon/shiny/676-kabuki.png b/public/images/pokemon/shiny/676-kabuki.png index d11cff6c87e..3cc7605fb06 100644 Binary files a/public/images/pokemon/shiny/676-kabuki.png and b/public/images/pokemon/shiny/676-kabuki.png differ diff --git a/public/images/pokemon/shiny/676-la-reine.png b/public/images/pokemon/shiny/676-la-reine.png index 7eed3ef20a2..6889daa88b1 100644 Binary files a/public/images/pokemon/shiny/676-la-reine.png and b/public/images/pokemon/shiny/676-la-reine.png differ diff --git a/public/images/pokemon/shiny/676-matron.png b/public/images/pokemon/shiny/676-matron.png index 14e31ce77b7..3fea29d65f6 100644 Binary files a/public/images/pokemon/shiny/676-matron.png and b/public/images/pokemon/shiny/676-matron.png differ diff --git a/public/images/pokemon/shiny/676-pharaoh.png b/public/images/pokemon/shiny/676-pharaoh.png index 32b78156f7d..780f851a779 100644 Binary files a/public/images/pokemon/shiny/676-pharaoh.png and b/public/images/pokemon/shiny/676-pharaoh.png differ diff --git a/public/images/pokemon/shiny/676-star.png b/public/images/pokemon/shiny/676-star.png index d7a327566b9..bf0827c85e7 100644 Binary files a/public/images/pokemon/shiny/676-star.png and b/public/images/pokemon/shiny/676-star.png differ diff --git a/public/images/pokemon/shiny/677.png b/public/images/pokemon/shiny/677.png index a885bec4ee0..102df3defce 100644 Binary files a/public/images/pokemon/shiny/677.png and b/public/images/pokemon/shiny/677.png differ diff --git a/public/images/pokemon/shiny/678-female.png b/public/images/pokemon/shiny/678-female.png index e999a0fbd69..abd62cec227 100644 Binary files a/public/images/pokemon/shiny/678-female.png and b/public/images/pokemon/shiny/678-female.png differ diff --git a/public/images/pokemon/shiny/678.png b/public/images/pokemon/shiny/678.png index 683d92c3299..90905c01c18 100644 Binary files a/public/images/pokemon/shiny/678.png and b/public/images/pokemon/shiny/678.png differ diff --git a/public/images/pokemon/shiny/688.png b/public/images/pokemon/shiny/688.png index 42565cb09b2..9b4f03e855f 100644 Binary files a/public/images/pokemon/shiny/688.png and b/public/images/pokemon/shiny/688.png differ diff --git a/public/images/pokemon/shiny/689.png b/public/images/pokemon/shiny/689.png index c58ed341e75..30f5b0db048 100644 Binary files a/public/images/pokemon/shiny/689.png and b/public/images/pokemon/shiny/689.png differ diff --git a/public/images/pokemon/shiny/692.json b/public/images/pokemon/shiny/692.json index fc36cdb3337..86b535260ae 100644 --- a/public/images/pokemon/shiny/692.json +++ b/public/images/pokemon/shiny/692.json @@ -1,41 +1,794 @@ -{ - "textures": [ - { - "image": "692.png", - "format": "RGBA8888", - "size": { - "w": 56, - "h": 56 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 56, - "h": 35 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 35 - }, - "frame": { - "x": 0, - "y": 0, - "w": 56, - "h": 35 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:19c1aa023d08bc22ccccf8bfeaa199e7:b92ea755c18e1ed1e6d509334c6f592e:2880def858c84cd859bedf13b0b49a33$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0002.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0003.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0004.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0005.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0006.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0007.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0008.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0009.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0010.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0011.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0012.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0013.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0014.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0015.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0016.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0017.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0018.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0019.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0020.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0021.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0022.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0023.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0024.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0025.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0026.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0027.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0028.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0029.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0030.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0031.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0032.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0033.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0034.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0035.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0036.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0037.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0038.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0039.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0040.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0041.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0042.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0043.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0044.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0045.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0046.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0047.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0048.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0049.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0050.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0051.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0052.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0053.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0054.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0055.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0056.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0057.png", + "frame": { "x": 121, "y": 1, "w": 59, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 59, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0058.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0059.png", + "frame": { "x": 1, "y": 36, "w": 58, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 58, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0060.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0061.png", + "frame": { "x": 181, "y": 1, "w": 57, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 57, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0062.png", + "frame": { "x": 60, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0063.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0064.png", + "frame": { "x": 121, "y": 36, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0065.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0066.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0067.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0068.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0069.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0070.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0071.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0072.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0073.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0074.png", + "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0075.png", + "frame": { "x": 1, "y": 71, "w": 57, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0076.png", + "frame": { "x": 117, "y": 72, "w": 59, "h": 33 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 59, "h": 33 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0077.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0078.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0079.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0080.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0081.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0082.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 1, "w": 60, "h": 34 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 60, "h": 34 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0084.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0085.png", + "frame": { "x": 62, "y": 1, "w": 58, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 58, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0086.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + }, + { + "filename": "0087.png", + "frame": { "x": 178, "y": 37, "w": 56, "h": 35 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 56, "h": 35 }, + "sourceSize": { "w": 63, "h": 35 }, + "duration": 50 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.12-x64", + "image": "692.png", + "format": "I8", + "size": { "w": 239, "h": 106 }, + "scale": "1" + } } diff --git a/public/images/pokemon/shiny/692.png b/public/images/pokemon/shiny/692.png index 8dc8ee90534..86f8cf51e92 100644 Binary files a/public/images/pokemon/shiny/692.png and b/public/images/pokemon/shiny/692.png differ diff --git a/public/images/pokemon/shiny/693.json b/public/images/pokemon/shiny/693.json index fb6d81cf000..c8f7763de1d 100644 --- a/public/images/pokemon/shiny/693.json +++ b/public/images/pokemon/shiny/693.json @@ -1,41 +1,902 @@ -{ - "textures": [ - { - "image": "693.png", - "format": "RGBA8888", - "size": { - "w": 90, - "h": 90 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 90, - "h": 78 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 90, - "h": 78 - }, - "frame": { - "x": 0, - "y": 0, - "w": 90, - "h": 78 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:7177ad3c831f1d08c39936f6412709e8:048bfa90b4b6f14b5462fefb528957ec:9c1f9147e693c05eb4655590e9099679$" - } +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 416, "y": 214, "w": 91, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 91, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 405, "y": 145, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 207, "y": 344, "w": 105, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 17, "w": 105, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 507, "y": 285, "w": 105, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 18, "w": 105, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 412, "y": 1, "w": 104, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 13, "w": 104, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 1, "y": 145, "w": 99, "h": 72 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 99, "h": 72 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 1, "y": 76, "w": 105, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 21, "w": 105, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 507, "y": 219, "w": 104, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 24, "w": 104, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 1, "y": 283, "w": 102, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 23, "w": 102, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 207, "y": 1, "w": 99, "h": 77 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 99, "h": 77 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 517, "y": 74, "w": 93, "h": 78 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 93, "h": 78 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0073.png", + "frame": { "x": 106, "y": 78, "w": 102, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 102, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0074.png", + "frame": { "x": 421, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 19, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0075.png", + "frame": { "x": 312, "y": 354, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 18, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0076.png", + "frame": { "x": 208, "y": 78, "w": 95, "h": 76 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 95, "h": 76 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0077.png", + "frame": { "x": 303, "y": 140, "w": 102, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 102, "h": 70 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0078.png", + "frame": { "x": 523, "y": 348, "w": 102, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 11, "w": 102, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0079.png", + "frame": { "x": 318, "y": 290, "w": 103, "h": 64 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 7, "w": 103, "h": 64 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0080.png", + "frame": { "x": 105, "y": 1, "w": 102, "h": 75 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 0, "w": 102, "h": 75 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0081.png", + "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0082.png", + "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0083.png", + "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0084.png", + "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0085.png", + "frame": { "x": 508, "y": 152, "w": 106, "h": 67 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 15, "w": 106, "h": 67 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0086.png", + "frame": { "x": 414, "y": 74, "w": 103, "h": 71 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 103, "h": 71 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0087.png", + "frame": { "x": 306, "y": 72, "w": 108, "h": 68 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 14, "w": 108, "h": 68 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0088.png", + "frame": { "x": 108, "y": 276, "w": 105, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 14, "w": 105, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0089.png", + "frame": { "x": 1, "y": 1, "w": 104, "h": 74 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 8, "w": 104, "h": 74 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0090.png", + "frame": { "x": 203, "y": 210, "w": 106, "h": 66 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 13, "w": 106, "h": 66 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0091.png", + "frame": { "x": 309, "y": 214, "w": 107, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 14, "w": 107, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0092.png", + "frame": { "x": 306, "y": 1, "w": 106, "h": 70 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 9, "w": 106, "h": 70 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0093.png", + "frame": { "x": 1, "y": 218, "w": 107, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 14, "w": 107, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0094.png", + "frame": { "x": 213, "y": 279, "w": 105, "h": 65 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 14, "w": 105, "h": 65 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0095.png", + "frame": { "x": 103, "y": 341, "w": 104, "h": 63 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 15, "w": 104, "h": 63 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0096.png", + "frame": { "x": 516, "y": 1, "w": 101, "h": 73 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 101, "h": 73 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0097.png", + "frame": { "x": 100, "y": 149, "w": 103, "h": 69 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 103, "h": 69 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0098.png", + "frame": { "x": 1, "y": 349, "w": 102, "h": 62 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 16, "w": 102, "h": 62 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + }, + { + "filename": "0099.png", + "frame": { "x": 103, "y": 404, "w": 100, "h": 61 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 16, "w": 100, "h": 61 }, + "sourceSize": { "w": 118, "h": 90 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.12-x64", + "image": "693.png", + "format": "I8", + "size": { "w": 626, "h": 466 }, + "scale": "1" + } } diff --git a/public/images/pokemon/shiny/693.png b/public/images/pokemon/shiny/693.png index 7088c31377a..3b995e1493d 100644 Binary files a/public/images/pokemon/shiny/693.png and b/public/images/pokemon/shiny/693.png differ diff --git a/public/images/pokemon/shiny/694.png b/public/images/pokemon/shiny/694.png index 5f65aa5d4ff..b419e52c5ed 100644 Binary files a/public/images/pokemon/shiny/694.png and b/public/images/pokemon/shiny/694.png differ diff --git a/public/images/pokemon/shiny/698.png b/public/images/pokemon/shiny/698.png index a861e0c14d5..c432a033e66 100644 Binary files a/public/images/pokemon/shiny/698.png and b/public/images/pokemon/shiny/698.png differ diff --git a/public/images/pokemon/shiny/699.png b/public/images/pokemon/shiny/699.png index 1e22a84228f..c815ef67ad4 100644 Binary files a/public/images/pokemon/shiny/699.png and b/public/images/pokemon/shiny/699.png differ diff --git a/public/images/pokemon/shiny/703.png b/public/images/pokemon/shiny/703.png index 44ac529283c..7b3d2433b86 100644 Binary files a/public/images/pokemon/shiny/703.png and b/public/images/pokemon/shiny/703.png differ diff --git a/public/images/pokemon/shiny/707.png b/public/images/pokemon/shiny/707.png index 7aed21b7873..d69309fe966 100644 Binary files a/public/images/pokemon/shiny/707.png and b/public/images/pokemon/shiny/707.png differ diff --git a/public/images/pokemon/shiny/708.png b/public/images/pokemon/shiny/708.png index d94b1286590..ef19fc486c3 100644 Binary files a/public/images/pokemon/shiny/708.png and b/public/images/pokemon/shiny/708.png differ diff --git a/public/images/pokemon/shiny/714.png b/public/images/pokemon/shiny/714.png index 924c67d3c85..0542e486947 100644 Binary files a/public/images/pokemon/shiny/714.png and b/public/images/pokemon/shiny/714.png differ diff --git a/public/images/pokemon/shiny/716-active.png b/public/images/pokemon/shiny/716-active.png index 357f0fb843b..7d7cebef182 100644 Binary files a/public/images/pokemon/shiny/716-active.png and b/public/images/pokemon/shiny/716-active.png differ diff --git a/public/images/pokemon/shiny/716-neutral.png b/public/images/pokemon/shiny/716-neutral.png index bcccc513da4..222841db842 100644 Binary files a/public/images/pokemon/shiny/716-neutral.png and b/public/images/pokemon/shiny/716-neutral.png differ diff --git a/public/images/pokemon/shiny/718-10.png b/public/images/pokemon/shiny/718-10.png index f976d91b4f6..219321fd355 100644 Binary files a/public/images/pokemon/shiny/718-10.png and b/public/images/pokemon/shiny/718-10.png differ diff --git a/public/images/pokemon/shiny/718.png b/public/images/pokemon/shiny/718.png index 778ae8bff07..540677c77ee 100644 Binary files a/public/images/pokemon/shiny/718.png and b/public/images/pokemon/shiny/718.png differ diff --git a/public/images/pokemon/shiny/719.png b/public/images/pokemon/shiny/719.png index c466201632a..d55497074ef 100644 Binary files a/public/images/pokemon/shiny/719.png and b/public/images/pokemon/shiny/719.png differ diff --git a/public/images/pokemon/shiny/730.png b/public/images/pokemon/shiny/730.png index 744d43630e7..b8bb5bd93dc 100644 Binary files a/public/images/pokemon/shiny/730.png and b/public/images/pokemon/shiny/730.png differ diff --git a/public/images/pokemon/shiny/753.json b/public/images/pokemon/shiny/753.json index 964519cb949..5b20ef749a0 100644 --- a/public/images/pokemon/shiny/753.json +++ b/public/images/pokemon/shiny/753.json @@ -4,30 +4,2571 @@ "image": "753.png", "format": "RGBA8888", "size": { - "w": 45, - "h": 45 + "w": 137, + "h": 137 }, "scale": 1, "frames": [ { "filename": "0001.png", "rotated": false, - "trimmed": false, + "trimmed": true, "sourceSize": { - "w": 28, - "h": 45 + "w": 30, + "h": 52 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 28, - "h": 45 + "y": 5, + "w": 30, + "h": 47 }, "frame": { "x": 0, "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0101.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0120.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0121.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0122.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 30, + "h": 47 + }, + "frame": { + "x": 0, + "y": 0, + "w": 30, + "h": 47 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 28, + "h": 47 + }, + "frame": { + "x": 30, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 4, + "w": 28, + "h": 47 + }, + "frame": { + "x": 58, + "y": 0, + "w": 28, + "h": 47 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 0, + "w": 29, + "h": 46 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 29, + "h": 46 + }, + "frame": { + "x": 86, + "y": 46, + "w": 29, + "h": 46 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 47, + "w": 30, + "h": 45 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 27, + "h": 46 + }, + "frame": { + "x": 30, + "y": 47, + "w": 27, + "h": 46 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 92, + "w": 30, + "h": 45 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 7, + "w": 30, + "h": 45 + }, + "frame": { + "x": 0, + "y": 92, + "w": 30, + "h": 45 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 0, + "y": 8, + "w": 29, + "h": 44 + }, + "frame": { + "x": 57, + "y": 47, + "w": 29, + "h": 44 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 57, + "y": 91, + "w": 28, + "h": 44 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 30, + "h": 52 + }, + "spriteSourceSize": { + "x": 2, + "y": 8, + "w": 28, + "h": 44 + }, + "frame": { + "x": 85, + "y": 92, + "w": 28, + "h": 44 } } ] @@ -36,6 +2577,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:0dfeaaa8dc9e984b8345da123854713a:ca6cbb0693924b86228f2fe9ab294ec9:16c1874bc814253ca78e52a99a340ff7$" + "smartupdate": "$TexturePacker:SmartUpdate:0a066207f4eaa63438f1b44ba24dbced:1c3824600c00c692fd9dab4dbe03a2ed:16c1874bc814253ca78e52a99a340ff7$" } } diff --git a/public/images/pokemon/shiny/753.png b/public/images/pokemon/shiny/753.png index e13412f2a4f..12f0f7a090f 100644 Binary files a/public/images/pokemon/shiny/753.png and b/public/images/pokemon/shiny/753.png differ diff --git a/public/images/pokemon/shiny/754.json b/public/images/pokemon/shiny/754.json index ecb5b8a6779..18bb597aa75 100644 --- a/public/images/pokemon/shiny/754.json +++ b/public/images/pokemon/shiny/754.json @@ -4,29 +4,1121 @@ "image": "754.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 234, + "h": 234 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0036.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 46, + "w": 93, "h": 68 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 46, + "w": 93, "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 46, + "w": 93, + "h": 68 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 0, + "w": 93, + "h": 68 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 0, + "w": 48, + "h": 68 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 93, + "h": 68 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 0, + "y": 68, + "w": 93, + "h": 68 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 93, + "h": 68 + }, + "frame": { + "x": 93, + "y": 68, + "w": 93, + "h": 68 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 186, + "y": 68, + "w": 48, + "h": 68 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 85, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 85, + "h": 68 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 85, + "h": 68 + }, + "frame": { + "x": 0, + "y": 136, + "w": 85, + "h": 68 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 85, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 133, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 181, + "y": 136, + "w": 48, + "h": 68 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 93, + "h": 68 + }, + "spriteSourceSize": { + "x": 23, + "y": 0, + "w": 48, + "h": 68 + }, + "frame": { + "x": 181, + "y": 136, + "w": 48, "h": 68 } } @@ -36,6 +1128,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f4866096a7f384feda7689540b5499f2:1c5d416a85ea018909e59a1eb9c84c3a:f7cb0e9bb3adbe899317e6e2e306035d$" + "smartupdate": "$TexturePacker:SmartUpdate:05bdd50d4b0041ca84c3293ee7fdf36e:adfe2b6fb11cad37f71416b628cb08c7:f7cb0e9bb3adbe899317e6e2e306035d$" } } diff --git a/public/images/pokemon/shiny/754.png b/public/images/pokemon/shiny/754.png index f50262ab10e..b1d4806163a 100644 Binary files a/public/images/pokemon/shiny/754.png and b/public/images/pokemon/shiny/754.png differ diff --git a/public/images/pokemon/shiny/772.png b/public/images/pokemon/shiny/772.png index 759691cc312..c9310ecf0ab 100644 Binary files a/public/images/pokemon/shiny/772.png and b/public/images/pokemon/shiny/772.png differ diff --git a/public/images/pokemon/shiny/773-bug.png b/public/images/pokemon/shiny/773-bug.png index 3b394f2e790..596b20d4fb5 100644 Binary files a/public/images/pokemon/shiny/773-bug.png and b/public/images/pokemon/shiny/773-bug.png differ diff --git a/public/images/pokemon/shiny/773-dark.png b/public/images/pokemon/shiny/773-dark.png index da630322594..fc9c35f949c 100644 Binary files a/public/images/pokemon/shiny/773-dark.png and b/public/images/pokemon/shiny/773-dark.png differ diff --git a/public/images/pokemon/shiny/773-dragon.png b/public/images/pokemon/shiny/773-dragon.png index 68748f6b459..5f2e9a803a3 100644 Binary files a/public/images/pokemon/shiny/773-dragon.png and b/public/images/pokemon/shiny/773-dragon.png differ diff --git a/public/images/pokemon/shiny/773-electric.png b/public/images/pokemon/shiny/773-electric.png index 95052609b5b..5a235bf4d50 100644 Binary files a/public/images/pokemon/shiny/773-electric.png and b/public/images/pokemon/shiny/773-electric.png differ diff --git a/public/images/pokemon/shiny/773-fairy.png b/public/images/pokemon/shiny/773-fairy.png index e56452c69e1..341374ccb69 100644 Binary files a/public/images/pokemon/shiny/773-fairy.png and b/public/images/pokemon/shiny/773-fairy.png differ diff --git a/public/images/pokemon/shiny/773-fighting.png b/public/images/pokemon/shiny/773-fighting.png index be088dcc9a7..572f926ce62 100644 Binary files a/public/images/pokemon/shiny/773-fighting.png and b/public/images/pokemon/shiny/773-fighting.png differ diff --git a/public/images/pokemon/shiny/773-fire.png b/public/images/pokemon/shiny/773-fire.png index 4965ec5095b..57f66d02835 100644 Binary files a/public/images/pokemon/shiny/773-fire.png and b/public/images/pokemon/shiny/773-fire.png differ diff --git a/public/images/pokemon/shiny/773-flying.png b/public/images/pokemon/shiny/773-flying.png index b99b93656be..4b710075bd1 100644 Binary files a/public/images/pokemon/shiny/773-flying.png and b/public/images/pokemon/shiny/773-flying.png differ diff --git a/public/images/pokemon/shiny/773-ghost.png b/public/images/pokemon/shiny/773-ghost.png index 6910ede97b5..6086ee99039 100644 Binary files a/public/images/pokemon/shiny/773-ghost.png and b/public/images/pokemon/shiny/773-ghost.png differ diff --git a/public/images/pokemon/shiny/773-grass.png b/public/images/pokemon/shiny/773-grass.png index 6e855f965ef..b4a5d7fb7b0 100644 Binary files a/public/images/pokemon/shiny/773-grass.png and b/public/images/pokemon/shiny/773-grass.png differ diff --git a/public/images/pokemon/shiny/773-ground.png b/public/images/pokemon/shiny/773-ground.png index 42662a76f90..52e9bdeff40 100644 Binary files a/public/images/pokemon/shiny/773-ground.png and b/public/images/pokemon/shiny/773-ground.png differ diff --git a/public/images/pokemon/shiny/773-ice.png b/public/images/pokemon/shiny/773-ice.png index 823f8af572d..be53811bab5 100644 Binary files a/public/images/pokemon/shiny/773-ice.png and b/public/images/pokemon/shiny/773-ice.png differ diff --git a/public/images/pokemon/shiny/773-poison.png b/public/images/pokemon/shiny/773-poison.png index 76606bf058c..e40ac0c2592 100644 Binary files a/public/images/pokemon/shiny/773-poison.png and b/public/images/pokemon/shiny/773-poison.png differ diff --git a/public/images/pokemon/shiny/773-psychic.png b/public/images/pokemon/shiny/773-psychic.png index 4b014987a9b..bd796b30ab4 100644 Binary files a/public/images/pokemon/shiny/773-psychic.png and b/public/images/pokemon/shiny/773-psychic.png differ diff --git a/public/images/pokemon/shiny/773-rock.png b/public/images/pokemon/shiny/773-rock.png index 1993dd8bc18..bcfef0a30c6 100644 Binary files a/public/images/pokemon/shiny/773-rock.png and b/public/images/pokemon/shiny/773-rock.png differ diff --git a/public/images/pokemon/shiny/773-steel.png b/public/images/pokemon/shiny/773-steel.png index 6bcf5c178f3..05538a05fa9 100644 Binary files a/public/images/pokemon/shiny/773-steel.png and b/public/images/pokemon/shiny/773-steel.png differ diff --git a/public/images/pokemon/shiny/773-water.png b/public/images/pokemon/shiny/773-water.png index 7e9b1b6cd15..60c07b62bae 100644 Binary files a/public/images/pokemon/shiny/773-water.png and b/public/images/pokemon/shiny/773-water.png differ diff --git a/public/images/pokemon/shiny/773.png b/public/images/pokemon/shiny/773.png index 6f900ae9fdc..5991fcd08e2 100644 Binary files a/public/images/pokemon/shiny/773.png and b/public/images/pokemon/shiny/773.png differ diff --git a/public/images/pokemon/shiny/774-blue-meteor.png b/public/images/pokemon/shiny/774-blue-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-blue-meteor.png and b/public/images/pokemon/shiny/774-blue-meteor.png differ diff --git a/public/images/pokemon/shiny/774-blue.png b/public/images/pokemon/shiny/774-blue.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-blue.png and b/public/images/pokemon/shiny/774-blue.png differ diff --git a/public/images/pokemon/shiny/774-green-meteor.png b/public/images/pokemon/shiny/774-green-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-green-meteor.png and b/public/images/pokemon/shiny/774-green-meteor.png differ diff --git a/public/images/pokemon/shiny/774-green.png b/public/images/pokemon/shiny/774-green.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-green.png and b/public/images/pokemon/shiny/774-green.png differ diff --git a/public/images/pokemon/shiny/774-indigo-meteor.png b/public/images/pokemon/shiny/774-indigo-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-indigo-meteor.png and b/public/images/pokemon/shiny/774-indigo-meteor.png differ diff --git a/public/images/pokemon/shiny/774-indigo.png b/public/images/pokemon/shiny/774-indigo.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-indigo.png and b/public/images/pokemon/shiny/774-indigo.png differ diff --git a/public/images/pokemon/shiny/774-orange-meteor.png b/public/images/pokemon/shiny/774-orange-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-orange-meteor.png and b/public/images/pokemon/shiny/774-orange-meteor.png differ diff --git a/public/images/pokemon/shiny/774-orange.png b/public/images/pokemon/shiny/774-orange.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-orange.png and b/public/images/pokemon/shiny/774-orange.png differ diff --git a/public/images/pokemon/shiny/774-red-meteor.png b/public/images/pokemon/shiny/774-red-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-red-meteor.png and b/public/images/pokemon/shiny/774-red-meteor.png differ diff --git a/public/images/pokemon/shiny/774-red.png b/public/images/pokemon/shiny/774-red.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-red.png and b/public/images/pokemon/shiny/774-red.png differ diff --git a/public/images/pokemon/shiny/774-violet-meteor.png b/public/images/pokemon/shiny/774-violet-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-violet-meteor.png and b/public/images/pokemon/shiny/774-violet-meteor.png differ diff --git a/public/images/pokemon/shiny/774-violet.png b/public/images/pokemon/shiny/774-violet.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-violet.png and b/public/images/pokemon/shiny/774-violet.png differ diff --git a/public/images/pokemon/shiny/774-yellow-meteor.png b/public/images/pokemon/shiny/774-yellow-meteor.png index c693211a1b7..7d9f5a9cb00 100644 Binary files a/public/images/pokemon/shiny/774-yellow-meteor.png and b/public/images/pokemon/shiny/774-yellow-meteor.png differ diff --git a/public/images/pokemon/shiny/774-yellow.png b/public/images/pokemon/shiny/774-yellow.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774-yellow.png and b/public/images/pokemon/shiny/774-yellow.png differ diff --git a/public/images/pokemon/shiny/774.png b/public/images/pokemon/shiny/774.png index b3987efb81f..8f610a3b8e2 100644 Binary files a/public/images/pokemon/shiny/774.png and b/public/images/pokemon/shiny/774.png differ diff --git a/public/images/pokemon/shiny/777.png b/public/images/pokemon/shiny/777.png index 8ceb5506f9b..4c7960ad0c2 100644 Binary files a/public/images/pokemon/shiny/777.png and b/public/images/pokemon/shiny/777.png differ diff --git a/public/images/pokemon/shiny/778-disguised.png b/public/images/pokemon/shiny/778-disguised.png index 941fc6c284e..65a3db22785 100644 Binary files a/public/images/pokemon/shiny/778-disguised.png and b/public/images/pokemon/shiny/778-disguised.png differ diff --git a/public/images/pokemon/shiny/782.png b/public/images/pokemon/shiny/782.png index be4689a7cc5..6bcd0a2c78b 100644 Binary files a/public/images/pokemon/shiny/782.png and b/public/images/pokemon/shiny/782.png differ diff --git a/public/images/pokemon/shiny/783.png b/public/images/pokemon/shiny/783.png index b14d064e998..a43f466cb8a 100644 Binary files a/public/images/pokemon/shiny/783.png and b/public/images/pokemon/shiny/783.png differ diff --git a/public/images/pokemon/shiny/784.png b/public/images/pokemon/shiny/784.png index f9f5813e1c2..1a5c351a655 100644 Binary files a/public/images/pokemon/shiny/784.png and b/public/images/pokemon/shiny/784.png differ diff --git a/public/images/pokemon/shiny/80-mega.png b/public/images/pokemon/shiny/80-mega.png index 21eb3c37a05..9840ed3c00c 100644 Binary files a/public/images/pokemon/shiny/80-mega.png and b/public/images/pokemon/shiny/80-mega.png differ diff --git a/public/images/pokemon/shiny/80.png b/public/images/pokemon/shiny/80.png index a40953ebc30..a8eaa80eefa 100644 Binary files a/public/images/pokemon/shiny/80.png and b/public/images/pokemon/shiny/80.png differ diff --git a/public/images/pokemon/shiny/802-zenith.png b/public/images/pokemon/shiny/802-zenith.png index 28c5a5e68d9..4b99ca31c0d 100644 Binary files a/public/images/pokemon/shiny/802-zenith.png and b/public/images/pokemon/shiny/802-zenith.png differ diff --git a/public/images/pokemon/shiny/818-gigantamax.png b/public/images/pokemon/shiny/818-gigantamax.png index 6ff10199f70..8d25b818edb 100644 Binary files a/public/images/pokemon/shiny/818-gigantamax.png and b/public/images/pokemon/shiny/818-gigantamax.png differ diff --git a/public/images/pokemon/shiny/862.png b/public/images/pokemon/shiny/862.png index e48ad78032b..9d2e45c7c24 100644 Binary files a/public/images/pokemon/shiny/862.png and b/public/images/pokemon/shiny/862.png differ diff --git a/public/images/pokemon/shiny/864.png b/public/images/pokemon/shiny/864.png index 383dfecc748..75914d3ba7e 100644 Binary files a/public/images/pokemon/shiny/864.png and b/public/images/pokemon/shiny/864.png differ diff --git a/public/images/pokemon/shiny/867.png b/public/images/pokemon/shiny/867.png index 0443deeaf9c..8c69e198e66 100644 Binary files a/public/images/pokemon/shiny/867.png and b/public/images/pokemon/shiny/867.png differ diff --git a/public/images/pokemon/shiny/890-eternamax.png b/public/images/pokemon/shiny/890-eternamax.png index 3e7b5c1721f..300dbc4416b 100644 Binary files a/public/images/pokemon/shiny/890-eternamax.png and b/public/images/pokemon/shiny/890-eternamax.png differ diff --git a/public/images/pokemon/shiny/892-gigantamax-rapid.png b/public/images/pokemon/shiny/892-gigantamax-rapid.png index f9c4276359f..4b3cbeaca69 100644 Binary files a/public/images/pokemon/shiny/892-gigantamax-rapid.png and b/public/images/pokemon/shiny/892-gigantamax-rapid.png differ diff --git a/public/images/pokemon/shiny/892-rapid-strike.png b/public/images/pokemon/shiny/892-rapid-strike.png index 2ed26aa7510..0f8e38c477c 100644 Binary files a/public/images/pokemon/shiny/892-rapid-strike.png and b/public/images/pokemon/shiny/892-rapid-strike.png differ diff --git a/public/images/pokemon/shiny/898-ice.png b/public/images/pokemon/shiny/898-ice.png index ae98d45e159..c46f9a8e622 100644 Binary files a/public/images/pokemon/shiny/898-ice.png and b/public/images/pokemon/shiny/898-ice.png differ diff --git a/public/images/pokemon/shiny/898-shadow.png b/public/images/pokemon/shiny/898-shadow.png index 6d056c192b1..bdd59b05cc7 100644 Binary files a/public/images/pokemon/shiny/898-shadow.png and b/public/images/pokemon/shiny/898-shadow.png differ diff --git a/public/images/pokemon/shiny/909.png b/public/images/pokemon/shiny/909.png index 2712bc86a06..3bbcf8b6203 100644 Binary files a/public/images/pokemon/shiny/909.png and b/public/images/pokemon/shiny/909.png differ diff --git a/public/images/pokemon/shiny/912.png b/public/images/pokemon/shiny/912.png index 70067668d6a..e1c4074c6d6 100644 Binary files a/public/images/pokemon/shiny/912.png and b/public/images/pokemon/shiny/912.png differ diff --git a/public/images/pokemon/shiny/913.png b/public/images/pokemon/shiny/913.png index 08eb57e1957..67c631c90a8 100644 Binary files a/public/images/pokemon/shiny/913.png and b/public/images/pokemon/shiny/913.png differ diff --git a/public/images/pokemon/shiny/914.png b/public/images/pokemon/shiny/914.png index 950f964aa09..78699ab7603 100644 Binary files a/public/images/pokemon/shiny/914.png and b/public/images/pokemon/shiny/914.png differ diff --git a/public/images/pokemon/shiny/940.png b/public/images/pokemon/shiny/940.png index a953bd6fc44..60e8e76d011 100644 Binary files a/public/images/pokemon/shiny/940.png and b/public/images/pokemon/shiny/940.png differ diff --git a/public/images/pokemon/shiny/941.png b/public/images/pokemon/shiny/941.png index 5ccba807754..9ce025c872c 100644 Binary files a/public/images/pokemon/shiny/941.png and b/public/images/pokemon/shiny/941.png differ diff --git a/public/images/pokemon/shiny/944.png b/public/images/pokemon/shiny/944.png index e410629b535..770b943b264 100644 Binary files a/public/images/pokemon/shiny/944.png and b/public/images/pokemon/shiny/944.png differ diff --git a/public/images/pokemon/shiny/945.png b/public/images/pokemon/shiny/945.png index ab3fb485bb2..d45ac5c2f2a 100644 Binary files a/public/images/pokemon/shiny/945.png and b/public/images/pokemon/shiny/945.png differ diff --git a/public/images/pokemon/shiny/966-caph-starmobile.png b/public/images/pokemon/shiny/966-caph-starmobile.png index 6107a426ff6..956e629df97 100644 Binary files a/public/images/pokemon/shiny/966-caph-starmobile.png and b/public/images/pokemon/shiny/966-caph-starmobile.png differ diff --git a/public/images/pokemon/shiny/966-navi-starmobile.png b/public/images/pokemon/shiny/966-navi-starmobile.png index 74999d4fa13..91c9249cf8e 100644 Binary files a/public/images/pokemon/shiny/966-navi-starmobile.png and b/public/images/pokemon/shiny/966-navi-starmobile.png differ diff --git a/public/images/pokemon/shiny/966-ruchbah-starmobile.png b/public/images/pokemon/shiny/966-ruchbah-starmobile.png index 9de01ac6a73..01b21d7310c 100644 Binary files a/public/images/pokemon/shiny/966-ruchbah-starmobile.png and b/public/images/pokemon/shiny/966-ruchbah-starmobile.png differ diff --git a/public/images/pokemon/shiny/966-schedar-starmobile.png b/public/images/pokemon/shiny/966-schedar-starmobile.png index 79033bb123c..e354c5a868d 100644 Binary files a/public/images/pokemon/shiny/966-schedar-starmobile.png and b/public/images/pokemon/shiny/966-schedar-starmobile.png differ diff --git a/public/images/pokemon/shiny/966-segin-starmobile.png b/public/images/pokemon/shiny/966-segin-starmobile.png index f4cab89a203..c51cab90ece 100644 Binary files a/public/images/pokemon/shiny/966-segin-starmobile.png and b/public/images/pokemon/shiny/966-segin-starmobile.png differ diff --git a/public/images/pokemon/shiny/966.png b/public/images/pokemon/shiny/966.png index 53abf612cd0..3a0b6b7b433 100644 Binary files a/public/images/pokemon/shiny/966.png and b/public/images/pokemon/shiny/966.png differ diff --git a/public/images/pokemon/shiny/974.png b/public/images/pokemon/shiny/974.png index fdb7d238438..afb8e17d84a 100644 Binary files a/public/images/pokemon/shiny/974.png and b/public/images/pokemon/shiny/974.png differ diff --git a/public/images/pokemon/shiny/975.png b/public/images/pokemon/shiny/975.png index ccf619cc582..af2818bce64 100644 Binary files a/public/images/pokemon/shiny/975.png and b/public/images/pokemon/shiny/975.png differ diff --git a/public/images/pokemon/shiny/981.png b/public/images/pokemon/shiny/981.png index 4b1ea705a5c..619ec9bbdcc 100644 Binary files a/public/images/pokemon/shiny/981.png and b/public/images/pokemon/shiny/981.png differ diff --git a/public/images/pokemon/shiny/988.png b/public/images/pokemon/shiny/988.png index 89d2ef7b0a6..503e3156ae6 100644 Binary files a/public/images/pokemon/shiny/988.png and b/public/images/pokemon/shiny/988.png differ diff --git a/public/images/pokemon/shiny/997.png b/public/images/pokemon/shiny/997.png index e164116e56c..7a3afa6fbd7 100644 Binary files a/public/images/pokemon/shiny/997.png and b/public/images/pokemon/shiny/997.png differ diff --git a/public/images/pokemon/shiny/female/178.png b/public/images/pokemon/shiny/female/178.png index b0d983307e4..98445815e3d 100644 Binary files a/public/images/pokemon/shiny/female/178.png and b/public/images/pokemon/shiny/female/178.png differ diff --git a/public/images/pokemon/shiny/female/190.png b/public/images/pokemon/shiny/female/190.png index c79a1f85fe2..6c9072fd750 100644 Binary files a/public/images/pokemon/shiny/female/190.png and b/public/images/pokemon/shiny/female/190.png differ diff --git a/public/images/pokemon/shiny/female/194.png b/public/images/pokemon/shiny/female/194.png index 23e55c52190..a5bc530c9c8 100644 Binary files a/public/images/pokemon/shiny/female/194.png and b/public/images/pokemon/shiny/female/194.png differ diff --git a/public/images/pokemon/shiny/female/195.png b/public/images/pokemon/shiny/female/195.png index e55bf97df65..4af5488813d 100644 Binary files a/public/images/pokemon/shiny/female/195.png and b/public/images/pokemon/shiny/female/195.png differ diff --git a/public/images/pokemon/shiny/female/25-beauty-cosplay.png b/public/images/pokemon/shiny/female/25-beauty-cosplay.png index 388e132cae8..e060c108042 100644 Binary files a/public/images/pokemon/shiny/female/25-beauty-cosplay.png and b/public/images/pokemon/shiny/female/25-beauty-cosplay.png differ diff --git a/public/images/pokemon/shiny/female/25-cool-cosplay.png b/public/images/pokemon/shiny/female/25-cool-cosplay.png index 64972a7990c..ccb2aec823d 100644 Binary files a/public/images/pokemon/shiny/female/25-cool-cosplay.png and b/public/images/pokemon/shiny/female/25-cool-cosplay.png differ diff --git a/public/images/pokemon/shiny/female/25-cosplay.png b/public/images/pokemon/shiny/female/25-cosplay.png index 218ed10af43..0a27465a3c9 100644 Binary files a/public/images/pokemon/shiny/female/25-cosplay.png and b/public/images/pokemon/shiny/female/25-cosplay.png differ diff --git a/public/images/pokemon/shiny/female/25-cute-cosplay.png b/public/images/pokemon/shiny/female/25-cute-cosplay.png index 691190e0369..571f42c938a 100644 Binary files a/public/images/pokemon/shiny/female/25-cute-cosplay.png and b/public/images/pokemon/shiny/female/25-cute-cosplay.png differ diff --git a/public/images/pokemon/shiny/female/25-smart-cosplay.png b/public/images/pokemon/shiny/female/25-smart-cosplay.png index b187948f570..40bbab0f395 100644 Binary files a/public/images/pokemon/shiny/female/25-smart-cosplay.png and b/public/images/pokemon/shiny/female/25-smart-cosplay.png differ diff --git a/public/images/pokemon/shiny/female/25-tough-cosplay.png b/public/images/pokemon/shiny/female/25-tough-cosplay.png index 982dcd6b89f..71c0fcbd35f 100644 Binary files a/public/images/pokemon/shiny/female/25-tough-cosplay.png and b/public/images/pokemon/shiny/female/25-tough-cosplay.png differ diff --git a/public/images/pokemon/shiny/female/256.png b/public/images/pokemon/shiny/female/256.png index a040c6389a6..cc73bef8b49 100644 Binary files a/public/images/pokemon/shiny/female/256.png and b/public/images/pokemon/shiny/female/256.png differ diff --git a/public/images/pokemon/shiny/female/275.png b/public/images/pokemon/shiny/female/275.png index a0571493279..4dc1740b4e2 100644 Binary files a/public/images/pokemon/shiny/female/275.png and b/public/images/pokemon/shiny/female/275.png differ diff --git a/public/images/pokemon/shiny/female/3.png b/public/images/pokemon/shiny/female/3.png index ec5a9849e60..c8a4b6834a1 100644 Binary files a/public/images/pokemon/shiny/female/3.png and b/public/images/pokemon/shiny/female/3.png differ diff --git a/public/images/pokemon/shiny/female/424.png b/public/images/pokemon/shiny/female/424.png index f84f91548c9..57a36706d64 100644 Binary files a/public/images/pokemon/shiny/female/424.png and b/public/images/pokemon/shiny/female/424.png differ diff --git a/public/images/pokemon/shiny/female/45.png b/public/images/pokemon/shiny/female/45.png index 2ea6e0d214b..da0be23657a 100644 Binary files a/public/images/pokemon/shiny/female/45.png and b/public/images/pokemon/shiny/female/45.png differ diff --git a/public/images/pokemon/shiny/female/454.png b/public/images/pokemon/shiny/female/454.png index 7d2fc47429c..ad7740d4e36 100644 Binary files a/public/images/pokemon/shiny/female/454.png and b/public/images/pokemon/shiny/female/454.png differ diff --git a/public/images/pokemon/shiny/female/668.png b/public/images/pokemon/shiny/female/668.png index ec0d2338fac..f4004b95dd3 100644 Binary files a/public/images/pokemon/shiny/female/668.png and b/public/images/pokemon/shiny/female/668.png differ diff --git a/public/images/pokemon/variant/1006_2.png b/public/images/pokemon/variant/1006_2.png index 5819330574a..693cfd4f62a 100644 Binary files a/public/images/pokemon/variant/1006_2.png and b/public/images/pokemon/variant/1006_2.png differ diff --git a/public/images/pokemon/variant/1007-apex-build_2.png b/public/images/pokemon/variant/1007-apex-build_2.png index 4aae9d286af..abc6a2e916e 100644 Binary files a/public/images/pokemon/variant/1007-apex-build_2.png and b/public/images/pokemon/variant/1007-apex-build_2.png differ diff --git a/public/images/pokemon/variant/1007-apex-build_3.png b/public/images/pokemon/variant/1007-apex-build_3.png index f13706fe32a..b47ff1a576a 100644 Binary files a/public/images/pokemon/variant/1007-apex-build_3.png and b/public/images/pokemon/variant/1007-apex-build_3.png differ diff --git a/public/images/pokemon/variant/113_1.png b/public/images/pokemon/variant/113_1.png index b64aca2eb7e..29f882e0df8 100644 Binary files a/public/images/pokemon/variant/113_1.png and b/public/images/pokemon/variant/113_1.png differ diff --git a/public/images/pokemon/variant/113_2.png b/public/images/pokemon/variant/113_2.png index d89db9f3b73..570f9ac845f 100644 Binary files a/public/images/pokemon/variant/113_2.png and b/public/images/pokemon/variant/113_2.png differ diff --git a/public/images/pokemon/variant/113_3.png b/public/images/pokemon/variant/113_3.png index 2623a4c5527..bb85f377255 100644 Binary files a/public/images/pokemon/variant/113_3.png and b/public/images/pokemon/variant/113_3.png differ diff --git a/public/images/pokemon/variant/125_3.png b/public/images/pokemon/variant/125_3.png index dfab3fd2b7a..9ce75e831f5 100644 Binary files a/public/images/pokemon/variant/125_3.png and b/public/images/pokemon/variant/125_3.png differ diff --git a/public/images/pokemon/variant/126_2.png b/public/images/pokemon/variant/126_2.png index 12ddf148e51..8bf7a3cf997 100644 Binary files a/public/images/pokemon/variant/126_2.png and b/public/images/pokemon/variant/126_2.png differ diff --git a/public/images/pokemon/variant/139_3.png b/public/images/pokemon/variant/139_3.png index 90f8728ffc7..3bf6d63022d 100644 Binary files a/public/images/pokemon/variant/139_3.png and b/public/images/pokemon/variant/139_3.png differ diff --git a/public/images/pokemon/variant/141_2.png b/public/images/pokemon/variant/141_2.png index c94613ee202..d47b03cd5ce 100644 Binary files a/public/images/pokemon/variant/141_2.png and b/public/images/pokemon/variant/141_2.png differ diff --git a/public/images/pokemon/variant/141_3.png b/public/images/pokemon/variant/141_3.png index 74ff87613d6..8399c0b9f57 100644 Binary files a/public/images/pokemon/variant/141_3.png and b/public/images/pokemon/variant/141_3.png differ diff --git a/public/images/pokemon/variant/144_2.png b/public/images/pokemon/variant/144_2.png index ca20163748d..ff9645a26c8 100644 Binary files a/public/images/pokemon/variant/144_2.png and b/public/images/pokemon/variant/144_2.png differ diff --git a/public/images/pokemon/variant/144_3.png b/public/images/pokemon/variant/144_3.png index a14e9166803..4e7d130fa0a 100644 Binary files a/public/images/pokemon/variant/144_3.png and b/public/images/pokemon/variant/144_3.png differ diff --git a/public/images/pokemon/variant/161_3.png b/public/images/pokemon/variant/161_3.png index f4badb44d7f..343929d6240 100644 Binary files a/public/images/pokemon/variant/161_3.png and b/public/images/pokemon/variant/161_3.png differ diff --git a/public/images/pokemon/variant/164_2.png b/public/images/pokemon/variant/164_2.png index a5809a334f9..7e3c00126f5 100644 Binary files a/public/images/pokemon/variant/164_2.png and b/public/images/pokemon/variant/164_2.png differ diff --git a/public/images/pokemon/variant/164_3.png b/public/images/pokemon/variant/164_3.png index 38c88b30a49..cae32fa3dda 100644 Binary files a/public/images/pokemon/variant/164_3.png and b/public/images/pokemon/variant/164_3.png differ diff --git a/public/images/pokemon/variant/173_3.png b/public/images/pokemon/variant/173_3.png index 2799a88a0df..4d5e090c6b5 100644 Binary files a/public/images/pokemon/variant/173_3.png and b/public/images/pokemon/variant/173_3.png differ diff --git a/public/images/pokemon/variant/178_2.png b/public/images/pokemon/variant/178_2.png index 82e478b4d54..372119559eb 100644 Binary files a/public/images/pokemon/variant/178_2.png and b/public/images/pokemon/variant/178_2.png differ diff --git a/public/images/pokemon/variant/178_3.png b/public/images/pokemon/variant/178_3.png index 57cedc11b67..7353630ec2b 100644 Binary files a/public/images/pokemon/variant/178_3.png and b/public/images/pokemon/variant/178_3.png differ diff --git a/public/images/pokemon/variant/180_2.png b/public/images/pokemon/variant/180_2.png index fbdd97e2d52..e57a616871e 100644 Binary files a/public/images/pokemon/variant/180_2.png and b/public/images/pokemon/variant/180_2.png differ diff --git a/public/images/pokemon/variant/180_3.png b/public/images/pokemon/variant/180_3.png index 382b3ea0961..fb195a03c67 100644 Binary files a/public/images/pokemon/variant/180_3.png and b/public/images/pokemon/variant/180_3.png differ diff --git a/public/images/pokemon/variant/181-mega_3.png b/public/images/pokemon/variant/181-mega_3.png index 4adad450342..146bcafc979 100644 Binary files a/public/images/pokemon/variant/181-mega_3.png and b/public/images/pokemon/variant/181-mega_3.png differ diff --git a/public/images/pokemon/variant/183_3.png b/public/images/pokemon/variant/183_3.png index 479164bc4f8..ba5f9b3f82e 100644 Binary files a/public/images/pokemon/variant/183_3.png and b/public/images/pokemon/variant/183_3.png differ diff --git a/public/images/pokemon/variant/184_2.png b/public/images/pokemon/variant/184_2.png index fd57af02f36..cc6806d6873 100644 Binary files a/public/images/pokemon/variant/184_2.png and b/public/images/pokemon/variant/184_2.png differ diff --git a/public/images/pokemon/variant/184_3.png b/public/images/pokemon/variant/184_3.png index 09fa5274381..996c0b70361 100644 Binary files a/public/images/pokemon/variant/184_3.png and b/public/images/pokemon/variant/184_3.png differ diff --git a/public/images/pokemon/variant/199_1.png b/public/images/pokemon/variant/199_1.png index 3366b156560..1d5cf2f66c6 100644 Binary files a/public/images/pokemon/variant/199_1.png and b/public/images/pokemon/variant/199_1.png differ diff --git a/public/images/pokemon/variant/212-mega_2.png b/public/images/pokemon/variant/212-mega_2.png index e3d12893a29..041d2b106fb 100644 Binary files a/public/images/pokemon/variant/212-mega_2.png and b/public/images/pokemon/variant/212-mega_2.png differ diff --git a/public/images/pokemon/variant/212-mega_3.png b/public/images/pokemon/variant/212-mega_3.png index 9d7ba9e777e..f268e6e4163 100644 Binary files a/public/images/pokemon/variant/212-mega_3.png and b/public/images/pokemon/variant/212-mega_3.png differ diff --git a/public/images/pokemon/variant/212_2.png b/public/images/pokemon/variant/212_2.png index a22ed57eaf3..8b18be61d93 100644 Binary files a/public/images/pokemon/variant/212_2.png and b/public/images/pokemon/variant/212_2.png differ diff --git a/public/images/pokemon/variant/212_3.png b/public/images/pokemon/variant/212_3.png index 1a71f292f28..22401c6e890 100644 Binary files a/public/images/pokemon/variant/212_3.png and b/public/images/pokemon/variant/212_3.png differ diff --git a/public/images/pokemon/variant/226_2.png b/public/images/pokemon/variant/226_2.png index 2d011894969..302c53be6f7 100644 Binary files a/public/images/pokemon/variant/226_2.png and b/public/images/pokemon/variant/226_2.png differ diff --git a/public/images/pokemon/variant/226_3.png b/public/images/pokemon/variant/226_3.png index d0ad24bc78d..398481aa3d1 100644 Binary files a/public/images/pokemon/variant/226_3.png and b/public/images/pokemon/variant/226_3.png differ diff --git a/public/images/pokemon/variant/239_3.png b/public/images/pokemon/variant/239_3.png index 158d8701098..a164415eec4 100644 Binary files a/public/images/pokemon/variant/239_3.png and b/public/images/pokemon/variant/239_3.png differ diff --git a/public/images/pokemon/variant/242_1.png b/public/images/pokemon/variant/242_1.png index 8b5cff906e4..566b4a1bd34 100644 Binary files a/public/images/pokemon/variant/242_1.png and b/public/images/pokemon/variant/242_1.png differ diff --git a/public/images/pokemon/variant/242_2.png b/public/images/pokemon/variant/242_2.png index aefddbd0cf8..a9944fb35c5 100644 Binary files a/public/images/pokemon/variant/242_2.png and b/public/images/pokemon/variant/242_2.png differ diff --git a/public/images/pokemon/variant/242_3.png b/public/images/pokemon/variant/242_3.png index bc121988137..6621455120b 100644 Binary files a/public/images/pokemon/variant/242_3.png and b/public/images/pokemon/variant/242_3.png differ diff --git a/public/images/pokemon/variant/244_2.png b/public/images/pokemon/variant/244_2.png index b6418e496f6..ae39f19517f 100644 Binary files a/public/images/pokemon/variant/244_2.png and b/public/images/pokemon/variant/244_2.png differ diff --git a/public/images/pokemon/variant/244_3.png b/public/images/pokemon/variant/244_3.png index c903b01d8ce..81064afcdad 100644 Binary files a/public/images/pokemon/variant/244_3.png and b/public/images/pokemon/variant/244_3.png differ diff --git a/public/images/pokemon/variant/249_2.png b/public/images/pokemon/variant/249_2.png index d896fa2999f..12e3d4accf9 100644 Binary files a/public/images/pokemon/variant/249_2.png and b/public/images/pokemon/variant/249_2.png differ diff --git a/public/images/pokemon/variant/249_3.png b/public/images/pokemon/variant/249_3.png index 7a932d917fb..5b65f3c11f1 100644 Binary files a/public/images/pokemon/variant/249_3.png and b/public/images/pokemon/variant/249_3.png differ diff --git a/public/images/pokemon/variant/250_2.png b/public/images/pokemon/variant/250_2.png index d63c5310db8..26752b6ca61 100644 Binary files a/public/images/pokemon/variant/250_2.png and b/public/images/pokemon/variant/250_2.png differ diff --git a/public/images/pokemon/variant/250_3.png b/public/images/pokemon/variant/250_3.png index 59fbb3bdfd5..bf07a8c6722 100644 Binary files a/public/images/pokemon/variant/250_3.png and b/public/images/pokemon/variant/250_3.png differ diff --git a/public/images/pokemon/variant/257_3.png b/public/images/pokemon/variant/257_3.png index 62c4b6589a3..4b4be03a058 100644 Binary files a/public/images/pokemon/variant/257_3.png and b/public/images/pokemon/variant/257_3.png differ diff --git a/public/images/pokemon/variant/280_2.png b/public/images/pokemon/variant/280_2.png index 593d968b107..eb28437bdf1 100644 Binary files a/public/images/pokemon/variant/280_2.png and b/public/images/pokemon/variant/280_2.png differ diff --git a/public/images/pokemon/variant/280_3.png b/public/images/pokemon/variant/280_3.png index 63de10e023e..1611756391b 100644 Binary files a/public/images/pokemon/variant/280_3.png and b/public/images/pokemon/variant/280_3.png differ diff --git a/public/images/pokemon/variant/281_2.png b/public/images/pokemon/variant/281_2.png index dd30df8fe71..3a83387a092 100644 Binary files a/public/images/pokemon/variant/281_2.png and b/public/images/pokemon/variant/281_2.png differ diff --git a/public/images/pokemon/variant/281_3.png b/public/images/pokemon/variant/281_3.png index 0d9c802535d..1c444e6dcc5 100644 Binary files a/public/images/pokemon/variant/281_3.png and b/public/images/pokemon/variant/281_3.png differ diff --git a/public/images/pokemon/variant/282-mega_2.png b/public/images/pokemon/variant/282-mega_2.png index 1060939513a..d99c10226ea 100644 Binary files a/public/images/pokemon/variant/282-mega_2.png and b/public/images/pokemon/variant/282-mega_2.png differ diff --git a/public/images/pokemon/variant/282-mega_3.png b/public/images/pokemon/variant/282-mega_3.png index 027355e2b59..7a09676cb87 100644 Binary files a/public/images/pokemon/variant/282-mega_3.png and b/public/images/pokemon/variant/282-mega_3.png differ diff --git a/public/images/pokemon/variant/282_2.png b/public/images/pokemon/variant/282_2.png index 98421dbc47d..00f7f83ca9b 100644 Binary files a/public/images/pokemon/variant/282_2.png and b/public/images/pokemon/variant/282_2.png differ diff --git a/public/images/pokemon/variant/282_3.png b/public/images/pokemon/variant/282_3.png index 3156aa6d28e..3a54111f418 100644 Binary files a/public/images/pokemon/variant/282_3.png and b/public/images/pokemon/variant/282_3.png differ diff --git a/public/images/pokemon/variant/291_1.png b/public/images/pokemon/variant/291_1.png index 30cae5bb507..abe2a6fe5c9 100644 Binary files a/public/images/pokemon/variant/291_1.png and b/public/images/pokemon/variant/291_1.png differ diff --git a/public/images/pokemon/variant/291_2.png b/public/images/pokemon/variant/291_2.png index ccbe82a1201..0dc7a1528c6 100644 Binary files a/public/images/pokemon/variant/291_2.png and b/public/images/pokemon/variant/291_2.png differ diff --git a/public/images/pokemon/variant/291_3.png b/public/images/pokemon/variant/291_3.png index 26ea5d3cf4d..dc39129e899 100644 Binary files a/public/images/pokemon/variant/291_3.png and b/public/images/pokemon/variant/291_3.png differ diff --git a/public/images/pokemon/variant/292_1.png b/public/images/pokemon/variant/292_1.png index 3f4ec4df742..885d81d1c55 100644 Binary files a/public/images/pokemon/variant/292_1.png and b/public/images/pokemon/variant/292_1.png differ diff --git a/public/images/pokemon/variant/292_3.png b/public/images/pokemon/variant/292_3.png index 989d28d017a..7b113fda4ca 100644 Binary files a/public/images/pokemon/variant/292_3.png and b/public/images/pokemon/variant/292_3.png differ diff --git a/public/images/pokemon/variant/298_2.png b/public/images/pokemon/variant/298_2.png index f071c40c69a..d86cda27996 100644 Binary files a/public/images/pokemon/variant/298_2.png and b/public/images/pokemon/variant/298_2.png differ diff --git a/public/images/pokemon/variant/298_3.png b/public/images/pokemon/variant/298_3.png index 5dbf9b03b31..c3dea47feea 100644 Binary files a/public/images/pokemon/variant/298_3.png and b/public/images/pokemon/variant/298_3.png differ diff --git a/public/images/pokemon/variant/2_2.png b/public/images/pokemon/variant/2_2.png index b12bd60bd23..9519386f5ff 100644 Binary files a/public/images/pokemon/variant/2_2.png and b/public/images/pokemon/variant/2_2.png differ diff --git a/public/images/pokemon/variant/3-mega_2.png b/public/images/pokemon/variant/3-mega_2.png index 54ca687d1c3..bf926c350f3 100644 Binary files a/public/images/pokemon/variant/3-mega_2.png and b/public/images/pokemon/variant/3-mega_2.png differ diff --git a/public/images/pokemon/variant/3-mega_3.png b/public/images/pokemon/variant/3-mega_3.png index 07ddb5ae7ed..b7550f535ad 100644 Binary files a/public/images/pokemon/variant/3-mega_3.png and b/public/images/pokemon/variant/3-mega_3.png differ diff --git a/public/images/pokemon/variant/308_2.png b/public/images/pokemon/variant/308_2.png index 0c13b01d575..dd75ecc018a 100644 Binary files a/public/images/pokemon/variant/308_2.png and b/public/images/pokemon/variant/308_2.png differ diff --git a/public/images/pokemon/variant/31_1.png b/public/images/pokemon/variant/31_1.png index d968477a946..6ea527aa2f2 100644 Binary files a/public/images/pokemon/variant/31_1.png and b/public/images/pokemon/variant/31_1.png differ diff --git a/public/images/pokemon/variant/329_3.png b/public/images/pokemon/variant/329_3.png index 0530cfa7be3..bd08378ad6d 100644 Binary files a/public/images/pokemon/variant/329_3.png and b/public/images/pokemon/variant/329_3.png differ diff --git a/public/images/pokemon/variant/334-mega_2.png b/public/images/pokemon/variant/334-mega_2.png index f0304935968..18cc296b2e5 100644 Binary files a/public/images/pokemon/variant/334-mega_2.png and b/public/images/pokemon/variant/334-mega_2.png differ diff --git a/public/images/pokemon/variant/334_2.png b/public/images/pokemon/variant/334_2.png index cf30637cf79..965c7a8f962 100644 Binary files a/public/images/pokemon/variant/334_2.png and b/public/images/pokemon/variant/334_2.png differ diff --git a/public/images/pokemon/variant/334_3.png b/public/images/pokemon/variant/334_3.png index b54ed45c264..b3192760880 100644 Binary files a/public/images/pokemon/variant/334_3.png and b/public/images/pokemon/variant/334_3.png differ diff --git a/public/images/pokemon/variant/335_2.png b/public/images/pokemon/variant/335_2.png index 4baa18218ae..3e0449b2681 100644 Binary files a/public/images/pokemon/variant/335_2.png and b/public/images/pokemon/variant/335_2.png differ diff --git a/public/images/pokemon/variant/335_3.png b/public/images/pokemon/variant/335_3.png index c42ce4ce429..1a282d56b6b 100644 Binary files a/public/images/pokemon/variant/335_3.png and b/public/images/pokemon/variant/335_3.png differ diff --git a/public/images/pokemon/variant/340_3.png b/public/images/pokemon/variant/340_3.png index 24aede4bafe..aaa8e97cfa5 100644 Binary files a/public/images/pokemon/variant/340_3.png and b/public/images/pokemon/variant/340_3.png differ diff --git a/public/images/pokemon/variant/341_2.png b/public/images/pokemon/variant/341_2.png index ff943eab93c..065477de026 100644 Binary files a/public/images/pokemon/variant/341_2.png and b/public/images/pokemon/variant/341_2.png differ diff --git a/public/images/pokemon/variant/341_3.png b/public/images/pokemon/variant/341_3.png index ed4697d48b8..d5a5b3921b9 100644 Binary files a/public/images/pokemon/variant/341_3.png and b/public/images/pokemon/variant/341_3.png differ diff --git a/public/images/pokemon/variant/342_2.png b/public/images/pokemon/variant/342_2.png index e1f8acaf8a6..e8a325825f1 100644 Binary files a/public/images/pokemon/variant/342_2.png and b/public/images/pokemon/variant/342_2.png differ diff --git a/public/images/pokemon/variant/342_3.png b/public/images/pokemon/variant/342_3.png index 2a10036b3f3..0bec9c7b3bf 100644 Binary files a/public/images/pokemon/variant/342_3.png and b/public/images/pokemon/variant/342_3.png differ diff --git a/public/images/pokemon/variant/351-rainy_2.png b/public/images/pokemon/variant/351-rainy_2.png index 61cacb77d2e..284ae7f64ec 100644 Binary files a/public/images/pokemon/variant/351-rainy_2.png and b/public/images/pokemon/variant/351-rainy_2.png differ diff --git a/public/images/pokemon/variant/351-rainy_3.png b/public/images/pokemon/variant/351-rainy_3.png index c61be0fdd7d..155ae5b9980 100644 Binary files a/public/images/pokemon/variant/351-rainy_3.png and b/public/images/pokemon/variant/351-rainy_3.png differ diff --git a/public/images/pokemon/variant/351-sunny_2.png b/public/images/pokemon/variant/351-sunny_2.png index 3815dd5fd8a..4e1704fac4a 100644 Binary files a/public/images/pokemon/variant/351-sunny_2.png and b/public/images/pokemon/variant/351-sunny_2.png differ diff --git a/public/images/pokemon/variant/351-sunny_3.png b/public/images/pokemon/variant/351-sunny_3.png index 3627d88615e..a1cf0282cd3 100644 Binary files a/public/images/pokemon/variant/351-sunny_3.png and b/public/images/pokemon/variant/351-sunny_3.png differ diff --git a/public/images/pokemon/variant/351_2.png b/public/images/pokemon/variant/351_2.png index 30b88866823..dc2b3e82cb8 100644 Binary files a/public/images/pokemon/variant/351_2.png and b/public/images/pokemon/variant/351_2.png differ diff --git a/public/images/pokemon/variant/351_3.png b/public/images/pokemon/variant/351_3.png index 4e319855999..dd02e25602e 100644 Binary files a/public/images/pokemon/variant/351_3.png and b/public/images/pokemon/variant/351_3.png differ diff --git a/public/images/pokemon/variant/358_1.png b/public/images/pokemon/variant/358_1.png index ddbe5e00908..f91c0abcec9 100644 Binary files a/public/images/pokemon/variant/358_1.png and b/public/images/pokemon/variant/358_1.png differ diff --git a/public/images/pokemon/variant/35_3.png b/public/images/pokemon/variant/35_3.png index 68a8194fa0d..56376d95379 100644 Binary files a/public/images/pokemon/variant/35_3.png and b/public/images/pokemon/variant/35_3.png differ diff --git a/public/images/pokemon/variant/362_2.png b/public/images/pokemon/variant/362_2.png index 3c21d176209..5e64e7033e1 100644 Binary files a/public/images/pokemon/variant/362_2.png and b/public/images/pokemon/variant/362_2.png differ diff --git a/public/images/pokemon/variant/362_3.png b/public/images/pokemon/variant/362_3.png index 72b598a2d7b..bc95bc6dc0f 100644 Binary files a/public/images/pokemon/variant/362_3.png and b/public/images/pokemon/variant/362_3.png differ diff --git a/public/images/pokemon/variant/373-mega_2.png b/public/images/pokemon/variant/373-mega_2.png index ebde7060535..dd6e405ff23 100644 Binary files a/public/images/pokemon/variant/373-mega_2.png and b/public/images/pokemon/variant/373-mega_2.png differ diff --git a/public/images/pokemon/variant/373-mega_3.png b/public/images/pokemon/variant/373-mega_3.png index 8fd93cbc0d2..9ae075b2242 100644 Binary files a/public/images/pokemon/variant/373-mega_3.png and b/public/images/pokemon/variant/373-mega_3.png differ diff --git a/public/images/pokemon/variant/384-mega_2.png b/public/images/pokemon/variant/384-mega_2.png index 370cea05f93..2b2ca8f30bc 100644 Binary files a/public/images/pokemon/variant/384-mega_2.png and b/public/images/pokemon/variant/384-mega_2.png differ diff --git a/public/images/pokemon/variant/4080_1.png b/public/images/pokemon/variant/4080_1.png index 73ccbebdfa4..54af7ab101a 100644 Binary files a/public/images/pokemon/variant/4080_1.png and b/public/images/pokemon/variant/4080_1.png differ diff --git a/public/images/pokemon/variant/412-sandy_1.png b/public/images/pokemon/variant/412-sandy_1.png index ec173a73749..812ce17f2e7 100644 Binary files a/public/images/pokemon/variant/412-sandy_1.png and b/public/images/pokemon/variant/412-sandy_1.png differ diff --git a/public/images/pokemon/variant/412-sandy_2.png b/public/images/pokemon/variant/412-sandy_2.png index fb8d7724760..81fb36311ef 100644 Binary files a/public/images/pokemon/variant/412-sandy_2.png and b/public/images/pokemon/variant/412-sandy_2.png differ diff --git a/public/images/pokemon/variant/412-sandy_3.png b/public/images/pokemon/variant/412-sandy_3.png index 75ae220614c..e21fd9b0c1f 100644 Binary files a/public/images/pokemon/variant/412-sandy_3.png and b/public/images/pokemon/variant/412-sandy_3.png differ diff --git a/public/images/pokemon/variant/413-plant_1.png b/public/images/pokemon/variant/413-plant_1.png index 59de20445ab..a3be3c7e097 100644 Binary files a/public/images/pokemon/variant/413-plant_1.png and b/public/images/pokemon/variant/413-plant_1.png differ diff --git a/public/images/pokemon/variant/413-plant_2.png b/public/images/pokemon/variant/413-plant_2.png index 8e29a3b0549..3b7aa8310ad 100644 Binary files a/public/images/pokemon/variant/413-plant_2.png and b/public/images/pokemon/variant/413-plant_2.png differ diff --git a/public/images/pokemon/variant/413-plant_3.png b/public/images/pokemon/variant/413-plant_3.png index cd0dc42bae1..69bfae318fa 100644 Binary files a/public/images/pokemon/variant/413-plant_3.png and b/public/images/pokemon/variant/413-plant_3.png differ diff --git a/public/images/pokemon/variant/4144_2.png b/public/images/pokemon/variant/4144_2.png index 24453364a60..27c0fe6efaa 100644 Binary files a/public/images/pokemon/variant/4144_2.png and b/public/images/pokemon/variant/4144_2.png differ diff --git a/public/images/pokemon/variant/4144_3.png b/public/images/pokemon/variant/4144_3.png index 5a55039463b..eaceca535c6 100644 Binary files a/public/images/pokemon/variant/4144_3.png and b/public/images/pokemon/variant/4144_3.png differ diff --git a/public/images/pokemon/variant/4145_2.png b/public/images/pokemon/variant/4145_2.png index 3bee1a58c06..478044a0ff2 100644 Binary files a/public/images/pokemon/variant/4145_2.png and b/public/images/pokemon/variant/4145_2.png differ diff --git a/public/images/pokemon/variant/4145_3.png b/public/images/pokemon/variant/4145_3.png index a255a4b6894..f6f7ab5a300 100644 Binary files a/public/images/pokemon/variant/4145_3.png and b/public/images/pokemon/variant/4145_3.png differ diff --git a/public/images/pokemon/variant/4146_2.png b/public/images/pokemon/variant/4146_2.png index 4c260c7ef42..20fa78ceb37 100644 Binary files a/public/images/pokemon/variant/4146_2.png and b/public/images/pokemon/variant/4146_2.png differ diff --git a/public/images/pokemon/variant/4146_3.png b/public/images/pokemon/variant/4146_3.png index 27d05c91a0a..612664f269c 100644 Binary files a/public/images/pokemon/variant/4146_3.png and b/public/images/pokemon/variant/4146_3.png differ diff --git a/public/images/pokemon/variant/4199_1.png b/public/images/pokemon/variant/4199_1.png index 85f535c8256..444a74d344a 100644 Binary files a/public/images/pokemon/variant/4199_1.png and b/public/images/pokemon/variant/4199_1.png differ diff --git a/public/images/pokemon/variant/440_3.png b/public/images/pokemon/variant/440_3.png index b6b8f2266fa..2693b1ae541 100644 Binary files a/public/images/pokemon/variant/440_3.png and b/public/images/pokemon/variant/440_3.png differ diff --git a/public/images/pokemon/variant/466_3.png b/public/images/pokemon/variant/466_3.png index 146c4707a4f..b73ba1a3fed 100644 Binary files a/public/images/pokemon/variant/466_3.png and b/public/images/pokemon/variant/466_3.png differ diff --git a/public/images/pokemon/variant/469_2.png b/public/images/pokemon/variant/469_2.png index 82874a3978c..484d041a016 100644 Binary files a/public/images/pokemon/variant/469_2.png and b/public/images/pokemon/variant/469_2.png differ diff --git a/public/images/pokemon/variant/469_3.png b/public/images/pokemon/variant/469_3.png index a76d0d84f5c..24fffaabfa7 100644 Binary files a/public/images/pokemon/variant/469_3.png and b/public/images/pokemon/variant/469_3.png differ diff --git a/public/images/pokemon/variant/471_2.png b/public/images/pokemon/variant/471_2.png index d93266b56db..43bb38e637c 100644 Binary files a/public/images/pokemon/variant/471_2.png and b/public/images/pokemon/variant/471_2.png differ diff --git a/public/images/pokemon/variant/471_3.png b/public/images/pokemon/variant/471_3.png index 12df5891dc2..aac0b78dec5 100644 Binary files a/public/images/pokemon/variant/471_3.png and b/public/images/pokemon/variant/471_3.png differ diff --git a/public/images/pokemon/variant/475-mega_2.png b/public/images/pokemon/variant/475-mega_2.png index fd20272c2eb..073fd207903 100644 Binary files a/public/images/pokemon/variant/475-mega_2.png and b/public/images/pokemon/variant/475-mega_2.png differ diff --git a/public/images/pokemon/variant/475-mega_3.png b/public/images/pokemon/variant/475-mega_3.png index f549b85f700..b214ca3a95a 100644 Binary files a/public/images/pokemon/variant/475-mega_3.png and b/public/images/pokemon/variant/475-mega_3.png differ diff --git a/public/images/pokemon/variant/475_2.png b/public/images/pokemon/variant/475_2.png index a2cd3f58fbd..404f1205985 100644 Binary files a/public/images/pokemon/variant/475_2.png and b/public/images/pokemon/variant/475_2.png differ diff --git a/public/images/pokemon/variant/475_3.png b/public/images/pokemon/variant/475_3.png index 7936479060c..fb9b7efb2fb 100644 Binary files a/public/images/pokemon/variant/475_3.png and b/public/images/pokemon/variant/475_3.png differ diff --git a/public/images/pokemon/variant/478_2.png b/public/images/pokemon/variant/478_2.png index 65131a6ecfa..9c71179ae02 100644 Binary files a/public/images/pokemon/variant/478_2.png and b/public/images/pokemon/variant/478_2.png differ diff --git a/public/images/pokemon/variant/492-land_2.png b/public/images/pokemon/variant/492-land_2.png index cf51ec294ab..34cafd1e30a 100644 Binary files a/public/images/pokemon/variant/492-land_2.png and b/public/images/pokemon/variant/492-land_2.png differ diff --git a/public/images/pokemon/variant/526_2.png b/public/images/pokemon/variant/526_2.png index 68df77dd22d..a1ecdf60727 100644 Binary files a/public/images/pokemon/variant/526_2.png and b/public/images/pokemon/variant/526_2.png differ diff --git a/public/images/pokemon/variant/526_3.png b/public/images/pokemon/variant/526_3.png index f347af32030..544d514f9ea 100644 Binary files a/public/images/pokemon/variant/526_3.png and b/public/images/pokemon/variant/526_3.png differ diff --git a/public/images/pokemon/variant/529_2.png b/public/images/pokemon/variant/529_2.png index 59e8dc11094..11458be73f4 100644 Binary files a/public/images/pokemon/variant/529_2.png and b/public/images/pokemon/variant/529_2.png differ diff --git a/public/images/pokemon/variant/529_3.png b/public/images/pokemon/variant/529_3.png index ad7c95bbcc2..18edbc4cb48 100644 Binary files a/public/images/pokemon/variant/529_3.png and b/public/images/pokemon/variant/529_3.png differ diff --git a/public/images/pokemon/variant/530_2.png b/public/images/pokemon/variant/530_2.png index 2fb768d6df4..fdd39700cb5 100644 Binary files a/public/images/pokemon/variant/530_2.png and b/public/images/pokemon/variant/530_2.png differ diff --git a/public/images/pokemon/variant/530_3.png b/public/images/pokemon/variant/530_3.png index f92b642163c..1b0d519979c 100644 Binary files a/public/images/pokemon/variant/530_3.png and b/public/images/pokemon/variant/530_3.png differ diff --git a/public/images/pokemon/variant/539_2.png b/public/images/pokemon/variant/539_2.png index 7b738217ed4..6009dc77bea 100644 Binary files a/public/images/pokemon/variant/539_2.png and b/public/images/pokemon/variant/539_2.png differ diff --git a/public/images/pokemon/variant/539_3.png b/public/images/pokemon/variant/539_3.png index 8f581d1348e..d30db11d8af 100644 Binary files a/public/images/pokemon/variant/539_3.png and b/public/images/pokemon/variant/539_3.png differ diff --git a/public/images/pokemon/variant/543_3.png b/public/images/pokemon/variant/543_3.png index 7877d5e39b4..e364e9bfe6c 100644 Binary files a/public/images/pokemon/variant/543_3.png and b/public/images/pokemon/variant/543_3.png differ diff --git a/public/images/pokemon/variant/544_3.png b/public/images/pokemon/variant/544_3.png index a0d810c4a29..59124fdc1ed 100644 Binary files a/public/images/pokemon/variant/544_3.png and b/public/images/pokemon/variant/544_3.png differ diff --git a/public/images/pokemon/variant/549_3.png b/public/images/pokemon/variant/549_3.png index fffb5b9848a..f8d8dcc8b52 100644 Binary files a/public/images/pokemon/variant/549_3.png and b/public/images/pokemon/variant/549_3.png differ diff --git a/public/images/pokemon/variant/568_2.png b/public/images/pokemon/variant/568_2.png index 5ec25e6e8a6..52980945664 100644 Binary files a/public/images/pokemon/variant/568_2.png and b/public/images/pokemon/variant/568_2.png differ diff --git a/public/images/pokemon/variant/568_3.png b/public/images/pokemon/variant/568_3.png index cc991834a42..211cb00beef 100644 Binary files a/public/images/pokemon/variant/568_3.png and b/public/images/pokemon/variant/568_3.png differ diff --git a/public/images/pokemon/variant/56_2.png b/public/images/pokemon/variant/56_2.png index 8f9b8f258e1..e1594054317 100644 Binary files a/public/images/pokemon/variant/56_2.png and b/public/images/pokemon/variant/56_2.png differ diff --git a/public/images/pokemon/variant/56_3.png b/public/images/pokemon/variant/56_3.png index ee5508c861a..5cd988141c6 100644 Binary files a/public/images/pokemon/variant/56_3.png and b/public/images/pokemon/variant/56_3.png differ diff --git a/public/images/pokemon/variant/57_1.png b/public/images/pokemon/variant/57_1.png index 8ea65328703..b823a712480 100644 Binary files a/public/images/pokemon/variant/57_1.png and b/public/images/pokemon/variant/57_1.png differ diff --git a/public/images/pokemon/variant/57_2.png b/public/images/pokemon/variant/57_2.png index 6786b956a3c..2987531f846 100644 Binary files a/public/images/pokemon/variant/57_2.png and b/public/images/pokemon/variant/57_2.png differ diff --git a/public/images/pokemon/variant/57_3.png b/public/images/pokemon/variant/57_3.png index 720ad1f3529..29a8d3cddc3 100644 Binary files a/public/images/pokemon/variant/57_3.png and b/public/images/pokemon/variant/57_3.png differ diff --git a/public/images/pokemon/variant/585-autumn_1.png b/public/images/pokemon/variant/585-autumn_1.png index 8edc0f0f152..f90e0b52879 100644 Binary files a/public/images/pokemon/variant/585-autumn_1.png and b/public/images/pokemon/variant/585-autumn_1.png differ diff --git a/public/images/pokemon/variant/585-spring_1.png b/public/images/pokemon/variant/585-spring_1.png index 7ab83601cf6..8d7cbe10c45 100644 Binary files a/public/images/pokemon/variant/585-spring_1.png and b/public/images/pokemon/variant/585-spring_1.png differ diff --git a/public/images/pokemon/variant/585-summer_1.png b/public/images/pokemon/variant/585-summer_1.png index e4204ea7dd8..71646cca31c 100644 Binary files a/public/images/pokemon/variant/585-summer_1.png and b/public/images/pokemon/variant/585-summer_1.png differ diff --git a/public/images/pokemon/variant/585-winter_1.png b/public/images/pokemon/variant/585-winter_1.png index e5a0993319c..4b4a179e8a4 100644 Binary files a/public/images/pokemon/variant/585-winter_1.png and b/public/images/pokemon/variant/585-winter_1.png differ diff --git a/public/images/pokemon/variant/592_3.png b/public/images/pokemon/variant/592_3.png index aaded0d9d7e..17a71c59a16 100644 Binary files a/public/images/pokemon/variant/592_3.png and b/public/images/pokemon/variant/592_3.png differ diff --git a/public/images/pokemon/variant/594_3.png b/public/images/pokemon/variant/594_3.png index 91f730c416f..db92ce9a2b4 100644 Binary files a/public/images/pokemon/variant/594_3.png and b/public/images/pokemon/variant/594_3.png differ diff --git a/public/images/pokemon/variant/6-gigantamax_3.png b/public/images/pokemon/variant/6-gigantamax_3.png index 8362d06a329..e00d782169e 100644 Binary files a/public/images/pokemon/variant/6-gigantamax_3.png and b/public/images/pokemon/variant/6-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/6-mega-x_3.png b/public/images/pokemon/variant/6-mega-x_3.png index 68077ba591d..1ab76856995 100644 Binary files a/public/images/pokemon/variant/6-mega-x_3.png and b/public/images/pokemon/variant/6-mega-x_3.png differ diff --git a/public/images/pokemon/variant/6-mega-y_3.png b/public/images/pokemon/variant/6-mega-y_3.png index de41eee7f05..45469092676 100644 Binary files a/public/images/pokemon/variant/6-mega-y_3.png and b/public/images/pokemon/variant/6-mega-y_3.png differ diff --git a/public/images/pokemon/variant/612_3.png b/public/images/pokemon/variant/612_3.png index 80671b8470d..c612be108fe 100644 Binary files a/public/images/pokemon/variant/612_3.png and b/public/images/pokemon/variant/612_3.png differ diff --git a/public/images/pokemon/variant/631_2.png b/public/images/pokemon/variant/631_2.png index e2f0d2b9252..16fb7bab396 100644 Binary files a/public/images/pokemon/variant/631_2.png and b/public/images/pokemon/variant/631_2.png differ diff --git a/public/images/pokemon/variant/631_3.png b/public/images/pokemon/variant/631_3.png index 4bcb055fbe5..4958ccaae38 100644 Binary files a/public/images/pokemon/variant/631_3.png and b/public/images/pokemon/variant/631_3.png differ diff --git a/public/images/pokemon/variant/643_2.png b/public/images/pokemon/variant/643_2.png index fbd2a6e109c..0a28e1fb014 100644 Binary files a/public/images/pokemon/variant/643_2.png and b/public/images/pokemon/variant/643_2.png differ diff --git a/public/images/pokemon/variant/669-blue_2.png b/public/images/pokemon/variant/669-blue_2.png index 32ecda80b8d..fb8e103cdc1 100644 Binary files a/public/images/pokemon/variant/669-blue_2.png and b/public/images/pokemon/variant/669-blue_2.png differ diff --git a/public/images/pokemon/variant/669-blue_3.png b/public/images/pokemon/variant/669-blue_3.png index 8ce437a4442..26d60ec6e85 100644 Binary files a/public/images/pokemon/variant/669-blue_3.png and b/public/images/pokemon/variant/669-blue_3.png differ diff --git a/public/images/pokemon/variant/669-orange_2.png b/public/images/pokemon/variant/669-orange_2.png index fe6a2ccbf7d..943ebb7fa90 100644 Binary files a/public/images/pokemon/variant/669-orange_2.png and b/public/images/pokemon/variant/669-orange_2.png differ diff --git a/public/images/pokemon/variant/669-yellow_2.png b/public/images/pokemon/variant/669-yellow_2.png index 5811dfd493b..0702968dc48 100644 Binary files a/public/images/pokemon/variant/669-yellow_2.png and b/public/images/pokemon/variant/669-yellow_2.png differ diff --git a/public/images/pokemon/variant/670-blue_2.png b/public/images/pokemon/variant/670-blue_2.png index 73e797d7c28..7f4bdf1ceec 100644 Binary files a/public/images/pokemon/variant/670-blue_2.png and b/public/images/pokemon/variant/670-blue_2.png differ diff --git a/public/images/pokemon/variant/670-blue_3.png b/public/images/pokemon/variant/670-blue_3.png index e9f9322eaf1..d9f19b3a188 100644 Binary files a/public/images/pokemon/variant/670-blue_3.png and b/public/images/pokemon/variant/670-blue_3.png differ diff --git a/public/images/pokemon/variant/670-orange_2.png b/public/images/pokemon/variant/670-orange_2.png index 1144b3deb5e..8b056aec3ea 100644 Binary files a/public/images/pokemon/variant/670-orange_2.png and b/public/images/pokemon/variant/670-orange_2.png differ diff --git a/public/images/pokemon/variant/670-orange_3.png b/public/images/pokemon/variant/670-orange_3.png index 585031e7c26..28215fe7024 100644 Binary files a/public/images/pokemon/variant/670-orange_3.png and b/public/images/pokemon/variant/670-orange_3.png differ diff --git a/public/images/pokemon/variant/670-red_2.png b/public/images/pokemon/variant/670-red_2.png index 5a53a3fc8a1..0844efe2d09 100644 Binary files a/public/images/pokemon/variant/670-red_2.png and b/public/images/pokemon/variant/670-red_2.png differ diff --git a/public/images/pokemon/variant/670-red_3.png b/public/images/pokemon/variant/670-red_3.png index 4774c9e8012..d752967796b 100644 Binary files a/public/images/pokemon/variant/670-red_3.png and b/public/images/pokemon/variant/670-red_3.png differ diff --git a/public/images/pokemon/variant/670-white_2.png b/public/images/pokemon/variant/670-white_2.png index f5cdefbeef6..35eb5869a04 100644 Binary files a/public/images/pokemon/variant/670-white_2.png and b/public/images/pokemon/variant/670-white_2.png differ diff --git a/public/images/pokemon/variant/670-white_3.png b/public/images/pokemon/variant/670-white_3.png index 051eea69c8f..8a8295aecc5 100644 Binary files a/public/images/pokemon/variant/670-white_3.png and b/public/images/pokemon/variant/670-white_3.png differ diff --git a/public/images/pokemon/variant/670-yellow_2.png b/public/images/pokemon/variant/670-yellow_2.png index 9a02754ed75..83f3199617f 100644 Binary files a/public/images/pokemon/variant/670-yellow_2.png and b/public/images/pokemon/variant/670-yellow_2.png differ diff --git a/public/images/pokemon/variant/670-yellow_3.png b/public/images/pokemon/variant/670-yellow_3.png index 86464b7c97e..c3132fa1298 100644 Binary files a/public/images/pokemon/variant/670-yellow_3.png and b/public/images/pokemon/variant/670-yellow_3.png differ diff --git a/public/images/pokemon/variant/671-blue_3.png b/public/images/pokemon/variant/671-blue_3.png index fb57dab589e..21f1800245c 100644 Binary files a/public/images/pokemon/variant/671-blue_3.png and b/public/images/pokemon/variant/671-blue_3.png differ diff --git a/public/images/pokemon/variant/671-red_3.png b/public/images/pokemon/variant/671-red_3.png index 9daddb10dc1..41fd2354e7a 100644 Binary files a/public/images/pokemon/variant/671-red_3.png and b/public/images/pokemon/variant/671-red_3.png differ diff --git a/public/images/pokemon/variant/671-white_3.png b/public/images/pokemon/variant/671-white_3.png index 3c024e09b8d..2a8af9d855b 100644 Binary files a/public/images/pokemon/variant/671-white_3.png and b/public/images/pokemon/variant/671-white_3.png differ diff --git a/public/images/pokemon/variant/671-yellow_3.png b/public/images/pokemon/variant/671-yellow_3.png index dab7a758d81..0bc7856423b 100644 Binary files a/public/images/pokemon/variant/671-yellow_3.png and b/public/images/pokemon/variant/671-yellow_3.png differ diff --git a/public/images/pokemon/variant/672.json b/public/images/pokemon/variant/672.json index 8ed15346d6f..5387ebf05ac 100644 --- a/public/images/pokemon/variant/672.json +++ b/public/images/pokemon/variant/672.json @@ -13,5 +13,20 @@ "268062": "d2af94", "99522e": "321512", "ff884c": "552d30" + }, + "2": { + "174d3b": "363e6c", + "4d4d4d": "6b4473", + "99522e": "612c6b", + "f8f8f8": "ffeffe", + "404040": "161526", + "ff884c": "9f5f9b", + "36b389": "96d5e3", + "737373": "2d2b40", + "268062": "6885b6", + "66594c": "4c7a68", + "998673": "72b692", + "b4b4b4": "d4b3d7", + "403830": "305a4f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/672_3.json b/public/images/pokemon/variant/672_3.json deleted file mode 100644 index e3f780eff59..00000000000 --- a/public/images/pokemon/variant/672_3.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "textures": [ - { - "image": "672_3.png", - "format": "RGBA8888", - "size": { - "w": 50, - "h": 50 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 42, - "h": 50 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 42, - "h": 50 - }, - "frame": { - "x": 0, - "y": 0, - "w": 42, - "h": 50 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a5389856891adb93e4e47b311ec032fc:ff2b44df2ba78f8e713e7ecfbd8a40e8:2e4767b7cd134fc0ab1bb6e9eee82bc7$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/672_3.png b/public/images/pokemon/variant/672_3.png deleted file mode 100644 index 02d2fe283b9..00000000000 Binary files a/public/images/pokemon/variant/672_3.png and /dev/null differ diff --git a/public/images/pokemon/variant/696_3.png b/public/images/pokemon/variant/696_3.png index 6eab4cd29b3..7c2d7377033 100644 Binary files a/public/images/pokemon/variant/696_3.png and b/public/images/pokemon/variant/696_3.png differ diff --git a/public/images/pokemon/variant/697_3.png b/public/images/pokemon/variant/697_3.png index 055f35c71e0..1ef8b34613f 100644 Binary files a/public/images/pokemon/variant/697_3.png and b/public/images/pokemon/variant/697_3.png differ diff --git a/public/images/pokemon/variant/69_2.png b/public/images/pokemon/variant/69_2.png index 8ed462e7c9b..456cf9a7d12 100644 Binary files a/public/images/pokemon/variant/69_2.png and b/public/images/pokemon/variant/69_2.png differ diff --git a/public/images/pokemon/variant/69_3.png b/public/images/pokemon/variant/69_3.png index 6e37bdf8c33..1376ed47ea8 100644 Binary files a/public/images/pokemon/variant/69_3.png and b/public/images/pokemon/variant/69_3.png differ diff --git a/public/images/pokemon/variant/6_2.png b/public/images/pokemon/variant/6_2.png index f899f96d441..4423887599b 100644 Binary files a/public/images/pokemon/variant/6_2.png and b/public/images/pokemon/variant/6_2.png differ diff --git a/public/images/pokemon/variant/6_3.png b/public/images/pokemon/variant/6_3.png index 1c419ff419c..d17fd8b1301 100644 Binary files a/public/images/pokemon/variant/6_3.png and b/public/images/pokemon/variant/6_3.png differ diff --git a/public/images/pokemon/variant/715_2.png b/public/images/pokemon/variant/715_2.png index fe80cacfd31..1ece474d682 100644 Binary files a/public/images/pokemon/variant/715_2.png and b/public/images/pokemon/variant/715_2.png differ diff --git a/public/images/pokemon/variant/715_3.png b/public/images/pokemon/variant/715_3.png index e48057a11ff..227216c915b 100644 Binary files a/public/images/pokemon/variant/715_3.png and b/public/images/pokemon/variant/715_3.png differ diff --git a/public/images/pokemon/variant/742_2.png b/public/images/pokemon/variant/742_2.png index 32dc5593c55..34b01ce9817 100644 Binary files a/public/images/pokemon/variant/742_2.png and b/public/images/pokemon/variant/742_2.png differ diff --git a/public/images/pokemon/variant/742_3.png b/public/images/pokemon/variant/742_3.png index 599b1598002..5dca121a15b 100644 Binary files a/public/images/pokemon/variant/742_3.png and b/public/images/pokemon/variant/742_3.png differ diff --git a/public/images/pokemon/variant/743_2.png b/public/images/pokemon/variant/743_2.png index fb83af131eb..9f397fc7cda 100644 Binary files a/public/images/pokemon/variant/743_2.png and b/public/images/pokemon/variant/743_2.png differ diff --git a/public/images/pokemon/variant/743_3.png b/public/images/pokemon/variant/743_3.png index 7a36dc4f89c..4b3aeabd85a 100644 Binary files a/public/images/pokemon/variant/743_3.png and b/public/images/pokemon/variant/743_3.png differ diff --git a/public/images/pokemon/variant/756_3.png b/public/images/pokemon/variant/756_3.png index f4a072a1b2b..59b0ec24d9c 100644 Binary files a/public/images/pokemon/variant/756_3.png and b/public/images/pokemon/variant/756_3.png differ diff --git a/public/images/pokemon/variant/791_1.png b/public/images/pokemon/variant/791_1.png index 719e1b34c59..7043afdec00 100644 Binary files a/public/images/pokemon/variant/791_1.png and b/public/images/pokemon/variant/791_1.png differ diff --git a/public/images/pokemon/variant/7_2.png b/public/images/pokemon/variant/7_2.png index 63321bf71c2..36511146b8a 100644 Binary files a/public/images/pokemon/variant/7_2.png and b/public/images/pokemon/variant/7_2.png differ diff --git a/public/images/pokemon/variant/7_3.png b/public/images/pokemon/variant/7_3.png index b4adaff2f54..67f66bceeb6 100644 Binary files a/public/images/pokemon/variant/7_3.png and b/public/images/pokemon/variant/7_3.png differ diff --git a/public/images/pokemon/variant/823-gigantamax_2.png b/public/images/pokemon/variant/823-gigantamax_2.png index eecb3695378..b600ecb1365 100644 Binary files a/public/images/pokemon/variant/823-gigantamax_2.png and b/public/images/pokemon/variant/823-gigantamax_2.png differ diff --git a/public/images/pokemon/variant/823-gigantamax_3.png b/public/images/pokemon/variant/823-gigantamax_3.png index 0af4712fdf7..69e03b9c086 100644 Binary files a/public/images/pokemon/variant/823-gigantamax_3.png and b/public/images/pokemon/variant/823-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/836_2.png b/public/images/pokemon/variant/836_2.png index 303975e7e58..0238b5154f3 100644 Binary files a/public/images/pokemon/variant/836_2.png and b/public/images/pokemon/variant/836_2.png differ diff --git a/public/images/pokemon/variant/836_3.png b/public/images/pokemon/variant/836_3.png index 95ae2990ed2..85a79f76e85 100644 Binary files a/public/images/pokemon/variant/836_3.png and b/public/images/pokemon/variant/836_3.png differ diff --git a/public/images/pokemon/variant/83_2.png b/public/images/pokemon/variant/83_2.png index 759cf1be346..ca01b255967 100644 Binary files a/public/images/pokemon/variant/83_2.png and b/public/images/pokemon/variant/83_2.png differ diff --git a/public/images/pokemon/variant/83_3.png b/public/images/pokemon/variant/83_3.png index eb6604c6299..43104f99ac1 100644 Binary files a/public/images/pokemon/variant/83_3.png and b/public/images/pokemon/variant/83_3.png differ diff --git a/public/images/pokemon/variant/857_2.png b/public/images/pokemon/variant/857_2.png index 9273ef2a097..c5fe4a27e5a 100644 Binary files a/public/images/pokemon/variant/857_2.png and b/public/images/pokemon/variant/857_2.png differ diff --git a/public/images/pokemon/variant/857_3.png b/public/images/pokemon/variant/857_3.png index dc3277bcc2c..9a630196931 100644 Binary files a/public/images/pokemon/variant/857_3.png and b/public/images/pokemon/variant/857_3.png differ diff --git a/public/images/pokemon/variant/862_2.png b/public/images/pokemon/variant/862_2.png index 4c52d8a260f..9fbf63f2b55 100644 Binary files a/public/images/pokemon/variant/862_2.png and b/public/images/pokemon/variant/862_2.png differ diff --git a/public/images/pokemon/variant/862_3.png b/public/images/pokemon/variant/862_3.png index 170ae08d72d..a3868ed93b1 100644 Binary files a/public/images/pokemon/variant/862_3.png and b/public/images/pokemon/variant/862_3.png differ diff --git a/public/images/pokemon/variant/887_1.png b/public/images/pokemon/variant/887_1.png index 505ac265740..0fb7e8d167c 100644 Binary files a/public/images/pokemon/variant/887_1.png and b/public/images/pokemon/variant/887_1.png differ diff --git a/public/images/pokemon/variant/890-eternamax_2.png b/public/images/pokemon/variant/890-eternamax_2.png index 2327900b971..2a026cdc330 100644 Binary files a/public/images/pokemon/variant/890-eternamax_2.png and b/public/images/pokemon/variant/890-eternamax_2.png differ diff --git a/public/images/pokemon/variant/890-eternamax_3.png b/public/images/pokemon/variant/890-eternamax_3.png index 140837cfbd0..b90c8f86f6e 100644 Binary files a/public/images/pokemon/variant/890-eternamax_3.png and b/public/images/pokemon/variant/890-eternamax_3.png differ diff --git a/public/images/pokemon/variant/890_2.png b/public/images/pokemon/variant/890_2.png index 936f13cb6b2..d7881ef440d 100644 Binary files a/public/images/pokemon/variant/890_2.png and b/public/images/pokemon/variant/890_2.png differ diff --git a/public/images/pokemon/variant/890_3.png b/public/images/pokemon/variant/890_3.png index 683658d9b86..104bac2aa2e 100644 Binary files a/public/images/pokemon/variant/890_3.png and b/public/images/pokemon/variant/890_3.png differ diff --git a/public/images/pokemon/variant/892-gigantamax-rapid_2.png b/public/images/pokemon/variant/892-gigantamax-rapid_2.png index a5d7c0917cd..aa25fc84ea4 100644 Binary files a/public/images/pokemon/variant/892-gigantamax-rapid_2.png and b/public/images/pokemon/variant/892-gigantamax-rapid_2.png differ diff --git a/public/images/pokemon/variant/892-gigantamax-rapid_3.png b/public/images/pokemon/variant/892-gigantamax-rapid_3.png index f4069ad8b8a..376b99c5100 100644 Binary files a/public/images/pokemon/variant/892-gigantamax-rapid_3.png and b/public/images/pokemon/variant/892-gigantamax-rapid_3.png differ diff --git a/public/images/pokemon/variant/892-gigantamax-single_2.png b/public/images/pokemon/variant/892-gigantamax-single_2.png index 215bbeaf4dd..032eda9ab0d 100644 Binary files a/public/images/pokemon/variant/892-gigantamax-single_2.png and b/public/images/pokemon/variant/892-gigantamax-single_2.png differ diff --git a/public/images/pokemon/variant/892-gigantamax-single_3.png b/public/images/pokemon/variant/892-gigantamax-single_3.png index 442466c2153..7fe9c8a4ae5 100644 Binary files a/public/images/pokemon/variant/892-gigantamax-single_3.png and b/public/images/pokemon/variant/892-gigantamax-single_3.png differ diff --git a/public/images/pokemon/variant/897_1.png b/public/images/pokemon/variant/897_1.png index 9519aadd702..87f4fcb97d8 100644 Binary files a/public/images/pokemon/variant/897_1.png and b/public/images/pokemon/variant/897_1.png differ diff --git a/public/images/pokemon/variant/8_2.png b/public/images/pokemon/variant/8_2.png index 06067c8e4f2..06a3c8702ec 100644 Binary files a/public/images/pokemon/variant/8_2.png and b/public/images/pokemon/variant/8_2.png differ diff --git a/public/images/pokemon/variant/8_3.png b/public/images/pokemon/variant/8_3.png index 5c32863d7df..95780663631 100644 Binary files a/public/images/pokemon/variant/8_3.png and b/public/images/pokemon/variant/8_3.png differ diff --git a/public/images/pokemon/variant/9-gigantamax_3.png b/public/images/pokemon/variant/9-gigantamax_3.png index 54819b05e7e..73714ff2113 100644 Binary files a/public/images/pokemon/variant/9-gigantamax_3.png and b/public/images/pokemon/variant/9-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/9-mega_2.png b/public/images/pokemon/variant/9-mega_2.png index 0a56f1a3a68..02849001acf 100644 Binary files a/public/images/pokemon/variant/9-mega_2.png and b/public/images/pokemon/variant/9-mega_2.png differ diff --git a/public/images/pokemon/variant/9-mega_3.png b/public/images/pokemon/variant/9-mega_3.png index 606f18d6337..4556f93b5f9 100644 Binary files a/public/images/pokemon/variant/9-mega_3.png and b/public/images/pokemon/variant/9-mega_3.png differ diff --git a/public/images/pokemon/variant/901_3.png b/public/images/pokemon/variant/901_3.png index 9e7dd3d815f..89a441a12ac 100644 Binary files a/public/images/pokemon/variant/901_3.png and b/public/images/pokemon/variant/901_3.png differ diff --git a/public/images/pokemon/variant/909_2.png b/public/images/pokemon/variant/909_2.png index 142d46abb95..b0160e85b7c 100644 Binary files a/public/images/pokemon/variant/909_2.png and b/public/images/pokemon/variant/909_2.png differ diff --git a/public/images/pokemon/variant/909_3.png b/public/images/pokemon/variant/909_3.png index ec49f615edf..715684c32aa 100644 Binary files a/public/images/pokemon/variant/909_3.png and b/public/images/pokemon/variant/909_3.png differ diff --git a/public/images/pokemon/variant/910_2.png b/public/images/pokemon/variant/910_2.png index 14fcf13f9a9..5b737ba1c77 100644 Binary files a/public/images/pokemon/variant/910_2.png and b/public/images/pokemon/variant/910_2.png differ diff --git a/public/images/pokemon/variant/910_3.png b/public/images/pokemon/variant/910_3.png index 8a9dfa4f8b0..1d1f9146489 100644 Binary files a/public/images/pokemon/variant/910_3.png and b/public/images/pokemon/variant/910_3.png differ diff --git a/public/images/pokemon/variant/913_2.png b/public/images/pokemon/variant/913_2.png index ab5e42c3b73..2e09889ee87 100644 Binary files a/public/images/pokemon/variant/913_2.png and b/public/images/pokemon/variant/913_2.png differ diff --git a/public/images/pokemon/variant/913_3.png b/public/images/pokemon/variant/913_3.png index 3c29e2b8f91..9c55683419e 100644 Binary files a/public/images/pokemon/variant/913_3.png and b/public/images/pokemon/variant/913_3.png differ diff --git a/public/images/pokemon/variant/914_2.png b/public/images/pokemon/variant/914_2.png index d1db92c1e8a..50537c855a3 100644 Binary files a/public/images/pokemon/variant/914_2.png and b/public/images/pokemon/variant/914_2.png differ diff --git a/public/images/pokemon/variant/920_1.png b/public/images/pokemon/variant/920_1.png index a0fcd5b4a7f..aed3a7ae245 100644 Binary files a/public/images/pokemon/variant/920_1.png and b/public/images/pokemon/variant/920_1.png differ diff --git a/public/images/pokemon/variant/920_2.png b/public/images/pokemon/variant/920_2.png index 71b9a3b7651..cbf105db1aa 100644 Binary files a/public/images/pokemon/variant/920_2.png and b/public/images/pokemon/variant/920_2.png differ diff --git a/public/images/pokemon/variant/920_3.png b/public/images/pokemon/variant/920_3.png index 0db8dad3cd9..a918eaae790 100644 Binary files a/public/images/pokemon/variant/920_3.png and b/public/images/pokemon/variant/920_3.png differ diff --git a/public/images/pokemon/variant/92_1.png b/public/images/pokemon/variant/92_1.png index 23f4da8ef6a..bdd2a952398 100644 Binary files a/public/images/pokemon/variant/92_1.png and b/public/images/pokemon/variant/92_1.png differ diff --git a/public/images/pokemon/variant/92_2.png b/public/images/pokemon/variant/92_2.png index 383151d9a72..366bfdbced7 100644 Binary files a/public/images/pokemon/variant/92_2.png and b/public/images/pokemon/variant/92_2.png differ diff --git a/public/images/pokemon/variant/92_3.png b/public/images/pokemon/variant/92_3.png index 38684540b9f..07655980532 100644 Binary files a/public/images/pokemon/variant/92_3.png and b/public/images/pokemon/variant/92_3.png differ diff --git a/public/images/pokemon/variant/932_3.png b/public/images/pokemon/variant/932_3.png index 84fdb55aff4..3f684ead6c5 100644 Binary files a/public/images/pokemon/variant/932_3.png and b/public/images/pokemon/variant/932_3.png differ diff --git a/public/images/pokemon/variant/935_1.png b/public/images/pokemon/variant/935_1.png index a00535047a2..ef2298c8739 100644 Binary files a/public/images/pokemon/variant/935_1.png and b/public/images/pokemon/variant/935_1.png differ diff --git a/public/images/pokemon/variant/935_2.png b/public/images/pokemon/variant/935_2.png index d97e26df37f..a61291d9a2f 100644 Binary files a/public/images/pokemon/variant/935_2.png and b/public/images/pokemon/variant/935_2.png differ diff --git a/public/images/pokemon/variant/935_3.png b/public/images/pokemon/variant/935_3.png index b24c1fafbbc..76541622e10 100644 Binary files a/public/images/pokemon/variant/935_3.png and b/public/images/pokemon/variant/935_3.png differ diff --git a/public/images/pokemon/variant/936_1.png b/public/images/pokemon/variant/936_1.png index 404fb29a5d7..85157d72f6b 100644 Binary files a/public/images/pokemon/variant/936_1.png and b/public/images/pokemon/variant/936_1.png differ diff --git a/public/images/pokemon/variant/936_2.png b/public/images/pokemon/variant/936_2.png index c54398e858e..751a2681702 100644 Binary files a/public/images/pokemon/variant/936_2.png and b/public/images/pokemon/variant/936_2.png differ diff --git a/public/images/pokemon/variant/936_3.png b/public/images/pokemon/variant/936_3.png index 145318edc68..e537f3de285 100644 Binary files a/public/images/pokemon/variant/936_3.png and b/public/images/pokemon/variant/936_3.png differ diff --git a/public/images/pokemon/variant/937_1.png b/public/images/pokemon/variant/937_1.png index 688aaca491d..e1c0328483f 100644 Binary files a/public/images/pokemon/variant/937_1.png and b/public/images/pokemon/variant/937_1.png differ diff --git a/public/images/pokemon/variant/937_2.png b/public/images/pokemon/variant/937_2.png index 589777fe489..78756e21fc2 100644 Binary files a/public/images/pokemon/variant/937_2.png and b/public/images/pokemon/variant/937_2.png differ diff --git a/public/images/pokemon/variant/937_3.png b/public/images/pokemon/variant/937_3.png index c3d0b01a401..bb5a1920748 100644 Binary files a/public/images/pokemon/variant/937_3.png and b/public/images/pokemon/variant/937_3.png differ diff --git a/public/images/pokemon/variant/94-gigantamax_2.png b/public/images/pokemon/variant/94-gigantamax_2.png index f47846e421d..e10a6551a09 100644 Binary files a/public/images/pokemon/variant/94-gigantamax_2.png and b/public/images/pokemon/variant/94-gigantamax_2.png differ diff --git a/public/images/pokemon/variant/94-gigantamax_3.png b/public/images/pokemon/variant/94-gigantamax_3.png index bd571698edc..abf7fff1259 100644 Binary files a/public/images/pokemon/variant/94-gigantamax_3.png and b/public/images/pokemon/variant/94-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/94-mega_1.png b/public/images/pokemon/variant/94-mega_1.png index c1b560477ac..732867bf8de 100644 Binary files a/public/images/pokemon/variant/94-mega_1.png and b/public/images/pokemon/variant/94-mega_1.png differ diff --git a/public/images/pokemon/variant/94-mega_2.png b/public/images/pokemon/variant/94-mega_2.png index 79329baa6e9..52a81e5a87c 100644 Binary files a/public/images/pokemon/variant/94-mega_2.png and b/public/images/pokemon/variant/94-mega_2.png differ diff --git a/public/images/pokemon/variant/94-mega_3.png b/public/images/pokemon/variant/94-mega_3.png index 0df495494b4..3370d25a00f 100644 Binary files a/public/images/pokemon/variant/94-mega_3.png and b/public/images/pokemon/variant/94-mega_3.png differ diff --git a/public/images/pokemon/variant/957_2.png b/public/images/pokemon/variant/957_2.png index a923b6aa290..697cda66bd8 100644 Binary files a/public/images/pokemon/variant/957_2.png and b/public/images/pokemon/variant/957_2.png differ diff --git a/public/images/pokemon/variant/957_3.png b/public/images/pokemon/variant/957_3.png index bcf92f7de24..ad872412602 100644 Binary files a/public/images/pokemon/variant/957_3.png and b/public/images/pokemon/variant/957_3.png differ diff --git a/public/images/pokemon/variant/958_1.png b/public/images/pokemon/variant/958_1.png index 33e4947e2d7..1c6995902b3 100644 Binary files a/public/images/pokemon/variant/958_1.png and b/public/images/pokemon/variant/958_1.png differ diff --git a/public/images/pokemon/variant/958_2.png b/public/images/pokemon/variant/958_2.png index fac9d47f4f4..69c4c2a97a1 100644 Binary files a/public/images/pokemon/variant/958_2.png and b/public/images/pokemon/variant/958_2.png differ diff --git a/public/images/pokemon/variant/959_1.png b/public/images/pokemon/variant/959_1.png index d616fbce46d..b50e73c04a1 100644 Binary files a/public/images/pokemon/variant/959_1.png and b/public/images/pokemon/variant/959_1.png differ diff --git a/public/images/pokemon/variant/959_2.png b/public/images/pokemon/variant/959_2.png index 3270c46c645..89f6f30f3ef 100644 Binary files a/public/images/pokemon/variant/959_2.png and b/public/images/pokemon/variant/959_2.png differ diff --git a/public/images/pokemon/variant/959_3.png b/public/images/pokemon/variant/959_3.png index 3882790c15b..77dd63feb21 100644 Binary files a/public/images/pokemon/variant/959_3.png and b/public/images/pokemon/variant/959_3.png differ diff --git a/public/images/pokemon/variant/968_2.png b/public/images/pokemon/variant/968_2.png index 45c8f6b260a..fb79ac5bfec 100644 Binary files a/public/images/pokemon/variant/968_2.png and b/public/images/pokemon/variant/968_2.png differ diff --git a/public/images/pokemon/variant/968_3.png b/public/images/pokemon/variant/968_3.png index 73c87fbe249..6d270d52b11 100644 Binary files a/public/images/pokemon/variant/968_3.png and b/public/images/pokemon/variant/968_3.png differ diff --git a/public/images/pokemon/variant/973_1.png b/public/images/pokemon/variant/973_1.png index bbf65d9d7fa..6a65a319c3a 100644 Binary files a/public/images/pokemon/variant/973_1.png and b/public/images/pokemon/variant/973_1.png differ diff --git a/public/images/pokemon/variant/973_2.png b/public/images/pokemon/variant/973_2.png index bbebe06afb0..e85bb461aa0 100644 Binary files a/public/images/pokemon/variant/973_2.png and b/public/images/pokemon/variant/973_2.png differ diff --git a/public/images/pokemon/variant/973_3.png b/public/images/pokemon/variant/973_3.png index 2f90e0cdbee..d7d04846408 100644 Binary files a/public/images/pokemon/variant/973_3.png and b/public/images/pokemon/variant/973_3.png differ diff --git a/public/images/pokemon/variant/975_2.png b/public/images/pokemon/variant/975_2.png index bc174f1c824..93256fcbb2f 100644 Binary files a/public/images/pokemon/variant/975_2.png and b/public/images/pokemon/variant/975_2.png differ diff --git a/public/images/pokemon/variant/975_3.png b/public/images/pokemon/variant/975_3.png index 218ad884dde..badf2f128ec 100644 Binary files a/public/images/pokemon/variant/975_3.png and b/public/images/pokemon/variant/975_3.png differ diff --git a/public/images/pokemon/variant/978-curly_2.png b/public/images/pokemon/variant/978-curly_2.png index d29314bd6ea..6fb0a349154 100644 Binary files a/public/images/pokemon/variant/978-curly_2.png and b/public/images/pokemon/variant/978-curly_2.png differ diff --git a/public/images/pokemon/variant/978-curly_3.png b/public/images/pokemon/variant/978-curly_3.png index 5e811b4ae7d..d34f2a5e3b3 100644 Binary files a/public/images/pokemon/variant/978-curly_3.png and b/public/images/pokemon/variant/978-curly_3.png differ diff --git a/public/images/pokemon/variant/978-droopy_2.png b/public/images/pokemon/variant/978-droopy_2.png index cd7759606a4..f6a42f11235 100644 Binary files a/public/images/pokemon/variant/978-droopy_2.png and b/public/images/pokemon/variant/978-droopy_2.png differ diff --git a/public/images/pokemon/variant/978-droopy_3.png b/public/images/pokemon/variant/978-droopy_3.png index d9cf0f0800d..a046ad43bd6 100644 Binary files a/public/images/pokemon/variant/978-droopy_3.png and b/public/images/pokemon/variant/978-droopy_3.png differ diff --git a/public/images/pokemon/variant/978-stretchy_2.png b/public/images/pokemon/variant/978-stretchy_2.png index 07f9b62e2e7..4cd1ead97a5 100644 Binary files a/public/images/pokemon/variant/978-stretchy_2.png and b/public/images/pokemon/variant/978-stretchy_2.png differ diff --git a/public/images/pokemon/variant/978-stretchy_3.png b/public/images/pokemon/variant/978-stretchy_3.png index d1686831e1d..cfbfcbaec42 100644 Binary files a/public/images/pokemon/variant/978-stretchy_3.png and b/public/images/pokemon/variant/978-stretchy_3.png differ diff --git a/public/images/pokemon/variant/979_1.png b/public/images/pokemon/variant/979_1.png index 352783875e4..6b23c28e8d4 100644 Binary files a/public/images/pokemon/variant/979_1.png and b/public/images/pokemon/variant/979_1.png differ diff --git a/public/images/pokemon/variant/979_2.png b/public/images/pokemon/variant/979_2.png index b7111102ed9..84c43891655 100644 Binary files a/public/images/pokemon/variant/979_2.png and b/public/images/pokemon/variant/979_2.png differ diff --git a/public/images/pokemon/variant/979_3.png b/public/images/pokemon/variant/979_3.png index 2b187754cea..f4be4afa81b 100644 Binary files a/public/images/pokemon/variant/979_3.png and b/public/images/pokemon/variant/979_3.png differ diff --git a/public/images/pokemon/variant/988_3.png b/public/images/pokemon/variant/988_3.png index 76f2cd3a44f..102ec6e18a5 100644 Binary files a/public/images/pokemon/variant/988_3.png and b/public/images/pokemon/variant/988_3.png differ diff --git a/public/images/pokemon/variant/9_2.png b/public/images/pokemon/variant/9_2.png index a31ea1e073e..28a1866dfdc 100644 Binary files a/public/images/pokemon/variant/9_2.png and b/public/images/pokemon/variant/9_2.png differ diff --git a/public/images/pokemon/variant/9_3.png b/public/images/pokemon/variant/9_3.png index 5ef7a8d739e..711b03dc7e3 100644 Binary files a/public/images/pokemon/variant/9_3.png and b/public/images/pokemon/variant/9_3.png differ diff --git a/public/images/pokemon/variant/_exp_masterlist.json b/public/images/pokemon/variant/_exp_masterlist.json index 4bcbd3df1e8..e2fe24007ff 100644 --- a/public/images/pokemon/variant/_exp_masterlist.json +++ b/public/images/pokemon/variant/_exp_masterlist.json @@ -80,7 +80,6 @@ "671-yellow": [0, 1, 1], "671-white": [0, 1, 2], "671-orange": [0, 1, 2], - "672": [0, 1, 1], "673": [0, 1, 1], "676": [0, 1, 1], "677": [0, 1, 1], @@ -94,8 +93,6 @@ "689": [0, 1, 1], "690": [0, 1, 1], "691": [0, 1, 1], - "692": [0, 1, 1], - "693": [0, 1, 1], "696": [0, 1, 1], "697": [0, 1, 1], "699": [0, 1, 1], @@ -128,8 +125,6 @@ "748": [0, 1, 1], "751": [0, 1, 1], "752": [0, 1, 1], - "753": [0, 1, 1], - "754": [0, 2, 2], "755": [0, 1, 1], "756": [0, 1, 1], "761": [0, 1, 1], @@ -430,7 +425,6 @@ "671-yellow": [0, 1, 1], "671-white": [0, 1, 1], "671-orange": [0, 1, 1], - "672": [0, 1, 1], "673": [0, 1, 1], "676": [0, 1, 1], "677": [0, 1, 1], @@ -444,8 +438,6 @@ "689": [0, 1, 1], "690": [0, 1, 1], "691": [0, 1, 1], - "692": [0, 1, 1], - "693": [0, 1, 1], "696": [0, 1, 1], "697": [0, 1, 1], "699": [0, 2, 2], @@ -478,8 +470,6 @@ "748": [0, 1, 1], "751": [0, 1, 1], "752": [0, 1, 1], - "753": [0, 1, 1], - "754": [0, 2, 2], "755": [0, 1, 1], "756": [0, 1, 1], "761": [0, 1, 1], diff --git a/public/images/pokemon/variant/_masterlist.json b/public/images/pokemon/variant/_masterlist.json index ccb9228aa2c..8069cd354ef 100644 --- a/public/images/pokemon/variant/_masterlist.json +++ b/public/images/pokemon/variant/_masterlist.json @@ -621,7 +621,7 @@ "671-yellow": [0, 1, 2], "671-white": [0, 1, 2], "671-orange": [0, 1, 1], - "672": [0, 1, 2], + "672": [0, 1, 1], "673": [0, 1, 1], "676": [0, 1, 1], "676-dandy": [0, 1, 1], @@ -1689,7 +1689,7 @@ "751": [0, 1, 1], "752": [0, 1, 1], "753": [0, 1, 1], - "754": [0, 2, 2], + "754": [0, 1, 1], "755": [0, 1, 1], "756": [0, 1, 1], "761": [0, 1, 1], diff --git a/public/images/pokemon/variant/back/1006_2.png b/public/images/pokemon/variant/back/1006_2.png index d9e3df3a6de..8f1205f5b26 100644 Binary files a/public/images/pokemon/variant/back/1006_2.png and b/public/images/pokemon/variant/back/1006_2.png differ diff --git a/public/images/pokemon/variant/back/1007-apex-build_2.png b/public/images/pokemon/variant/back/1007-apex-build_2.png index 1ce4a8b2011..fbcb8c3c874 100644 Binary files a/public/images/pokemon/variant/back/1007-apex-build_2.png and b/public/images/pokemon/variant/back/1007-apex-build_2.png differ diff --git a/public/images/pokemon/variant/back/1007-apex-build_3.png b/public/images/pokemon/variant/back/1007-apex-build_3.png index ee755269548..0cbd262a5e2 100644 Binary files a/public/images/pokemon/variant/back/1007-apex-build_3.png and b/public/images/pokemon/variant/back/1007-apex-build_3.png differ diff --git a/public/images/pokemon/variant/back/1022_2.png b/public/images/pokemon/variant/back/1022_2.png index cdd94da0af6..cd950ab0184 100644 Binary files a/public/images/pokemon/variant/back/1022_2.png and b/public/images/pokemon/variant/back/1022_2.png differ diff --git a/public/images/pokemon/variant/back/1022_3.png b/public/images/pokemon/variant/back/1022_3.png index 2d5df98da9d..b20f389ce02 100644 Binary files a/public/images/pokemon/variant/back/1022_3.png and b/public/images/pokemon/variant/back/1022_3.png differ diff --git a/public/images/pokemon/variant/back/125_3.png b/public/images/pokemon/variant/back/125_3.png index 68e9503d1cb..7575d37e387 100644 Binary files a/public/images/pokemon/variant/back/125_3.png and b/public/images/pokemon/variant/back/125_3.png differ diff --git a/public/images/pokemon/variant/back/126_2.png b/public/images/pokemon/variant/back/126_2.png index 016cb367db3..3b86e351af1 100644 Binary files a/public/images/pokemon/variant/back/126_2.png and b/public/images/pokemon/variant/back/126_2.png differ diff --git a/public/images/pokemon/variant/back/172-spiky_2.png b/public/images/pokemon/variant/back/172-spiky_2.png index 9e9994d6b19..447f9da7310 100644 Binary files a/public/images/pokemon/variant/back/172-spiky_2.png and b/public/images/pokemon/variant/back/172-spiky_2.png differ diff --git a/public/images/pokemon/variant/back/172-spiky_3.png b/public/images/pokemon/variant/back/172-spiky_3.png index 260de86af53..710bc1fd619 100644 Binary files a/public/images/pokemon/variant/back/172-spiky_3.png and b/public/images/pokemon/variant/back/172-spiky_3.png differ diff --git a/public/images/pokemon/variant/back/172_2.png b/public/images/pokemon/variant/back/172_2.png index 84a35b18ead..2df10192cf1 100644 Binary files a/public/images/pokemon/variant/back/172_2.png and b/public/images/pokemon/variant/back/172_2.png differ diff --git a/public/images/pokemon/variant/back/172_3.png b/public/images/pokemon/variant/back/172_3.png index b94789940f5..2ae2e6cb287 100644 Binary files a/public/images/pokemon/variant/back/172_3.png and b/public/images/pokemon/variant/back/172_3.png differ diff --git a/public/images/pokemon/variant/back/177_2.png b/public/images/pokemon/variant/back/177_2.png index 1c775f2ef3f..f918a7563a2 100644 Binary files a/public/images/pokemon/variant/back/177_2.png and b/public/images/pokemon/variant/back/177_2.png differ diff --git a/public/images/pokemon/variant/back/177_3.png b/public/images/pokemon/variant/back/177_3.png index 04ec33986cd..c98c7b07415 100644 Binary files a/public/images/pokemon/variant/back/177_3.png and b/public/images/pokemon/variant/back/177_3.png differ diff --git a/public/images/pokemon/variant/back/178_2.png b/public/images/pokemon/variant/back/178_2.png index f65577f26bd..af0c6c21e71 100644 Binary files a/public/images/pokemon/variant/back/178_2.png and b/public/images/pokemon/variant/back/178_2.png differ diff --git a/public/images/pokemon/variant/back/178_3.png b/public/images/pokemon/variant/back/178_3.png index fe003a6c5a1..165c2cdad77 100644 Binary files a/public/images/pokemon/variant/back/178_3.png and b/public/images/pokemon/variant/back/178_3.png differ diff --git a/public/images/pokemon/variant/back/180_3.png b/public/images/pokemon/variant/back/180_3.png index 0cf0357f3c0..aec9a8e8dd9 100644 Binary files a/public/images/pokemon/variant/back/180_3.png and b/public/images/pokemon/variant/back/180_3.png differ diff --git a/public/images/pokemon/variant/back/181-mega_3.png b/public/images/pokemon/variant/back/181-mega_3.png index 17832724081..053528f482b 100644 Binary files a/public/images/pokemon/variant/back/181-mega_3.png and b/public/images/pokemon/variant/back/181-mega_3.png differ diff --git a/public/images/pokemon/variant/back/199_1.png b/public/images/pokemon/variant/back/199_1.png index 66d6fa0a4d7..6dea2201c1e 100644 Binary files a/public/images/pokemon/variant/back/199_1.png and b/public/images/pokemon/variant/back/199_1.png differ diff --git a/public/images/pokemon/variant/back/200_2.png b/public/images/pokemon/variant/back/200_2.png index ef296028bb0..4b4da386171 100644 Binary files a/public/images/pokemon/variant/back/200_2.png and b/public/images/pokemon/variant/back/200_2.png differ diff --git a/public/images/pokemon/variant/back/200_3.png b/public/images/pokemon/variant/back/200_3.png index f707e04ea86..2b0ee938f23 100644 Binary files a/public/images/pokemon/variant/back/200_3.png and b/public/images/pokemon/variant/back/200_3.png differ diff --git a/public/images/pokemon/variant/back/212-mega_2.png b/public/images/pokemon/variant/back/212-mega_2.png index d066510353d..5512e387dec 100644 Binary files a/public/images/pokemon/variant/back/212-mega_2.png and b/public/images/pokemon/variant/back/212-mega_2.png differ diff --git a/public/images/pokemon/variant/back/212-mega_3.png b/public/images/pokemon/variant/back/212-mega_3.png index f3c4e5bd110..51b43a55002 100644 Binary files a/public/images/pokemon/variant/back/212-mega_3.png and b/public/images/pokemon/variant/back/212-mega_3.png differ diff --git a/public/images/pokemon/variant/back/212_2.png b/public/images/pokemon/variant/back/212_2.png index 7a24be11f16..6e760bf5631 100644 Binary files a/public/images/pokemon/variant/back/212_2.png and b/public/images/pokemon/variant/back/212_2.png differ diff --git a/public/images/pokemon/variant/back/212_3.png b/public/images/pokemon/variant/back/212_3.png index a22f1a9d38e..dd27ab0e201 100644 Binary files a/public/images/pokemon/variant/back/212_3.png and b/public/images/pokemon/variant/back/212_3.png differ diff --git a/public/images/pokemon/variant/back/239_3.png b/public/images/pokemon/variant/back/239_3.png index b5ce88685a7..773cd5a137a 100644 Binary files a/public/images/pokemon/variant/back/239_3.png and b/public/images/pokemon/variant/back/239_3.png differ diff --git a/public/images/pokemon/variant/back/244_2.png b/public/images/pokemon/variant/back/244_2.png index 968b5c325bd..d5ec6fc555a 100644 Binary files a/public/images/pokemon/variant/back/244_2.png and b/public/images/pokemon/variant/back/244_2.png differ diff --git a/public/images/pokemon/variant/back/244_3.png b/public/images/pokemon/variant/back/244_3.png index 323b9a6b337..c1c8c82f6f1 100644 Binary files a/public/images/pokemon/variant/back/244_3.png and b/public/images/pokemon/variant/back/244_3.png differ diff --git a/public/images/pokemon/variant/back/280_2.png b/public/images/pokemon/variant/back/280_2.png index ef334d3e002..bdf3d445d42 100644 Binary files a/public/images/pokemon/variant/back/280_2.png and b/public/images/pokemon/variant/back/280_2.png differ diff --git a/public/images/pokemon/variant/back/280_3.png b/public/images/pokemon/variant/back/280_3.png index 8a1b586d9a9..a6d5aea0ade 100644 Binary files a/public/images/pokemon/variant/back/280_3.png and b/public/images/pokemon/variant/back/280_3.png differ diff --git a/public/images/pokemon/variant/back/281_2.png b/public/images/pokemon/variant/back/281_2.png index 68fa5a14532..59c8fb4646b 100644 Binary files a/public/images/pokemon/variant/back/281_2.png and b/public/images/pokemon/variant/back/281_2.png differ diff --git a/public/images/pokemon/variant/back/281_3.png b/public/images/pokemon/variant/back/281_3.png index afa24decdba..699800da967 100644 Binary files a/public/images/pokemon/variant/back/281_3.png and b/public/images/pokemon/variant/back/281_3.png differ diff --git a/public/images/pokemon/variant/back/282-mega_2.png b/public/images/pokemon/variant/back/282-mega_2.png index 56cd3805918..f7c2505db1b 100644 Binary files a/public/images/pokemon/variant/back/282-mega_2.png and b/public/images/pokemon/variant/back/282-mega_2.png differ diff --git a/public/images/pokemon/variant/back/282-mega_3.png b/public/images/pokemon/variant/back/282-mega_3.png index 0ab20d5a7b4..e9066a7adb1 100644 Binary files a/public/images/pokemon/variant/back/282-mega_3.png and b/public/images/pokemon/variant/back/282-mega_3.png differ diff --git a/public/images/pokemon/variant/back/282_2.png b/public/images/pokemon/variant/back/282_2.png index ba94124ab49..a3e35ff5d26 100644 Binary files a/public/images/pokemon/variant/back/282_2.png and b/public/images/pokemon/variant/back/282_2.png differ diff --git a/public/images/pokemon/variant/back/282_3.png b/public/images/pokemon/variant/back/282_3.png index 9decafe23b8..4c9e5b7aaa0 100644 Binary files a/public/images/pokemon/variant/back/282_3.png and b/public/images/pokemon/variant/back/282_3.png differ diff --git a/public/images/pokemon/variant/back/291_1.png b/public/images/pokemon/variant/back/291_1.png index a465af75920..84816542fc9 100644 Binary files a/public/images/pokemon/variant/back/291_1.png and b/public/images/pokemon/variant/back/291_1.png differ diff --git a/public/images/pokemon/variant/back/291_2.png b/public/images/pokemon/variant/back/291_2.png index 6eafa03d9d5..7cfa948a143 100644 Binary files a/public/images/pokemon/variant/back/291_2.png and b/public/images/pokemon/variant/back/291_2.png differ diff --git a/public/images/pokemon/variant/back/291_3.png b/public/images/pokemon/variant/back/291_3.png index 98c0d6c6b63..9a8493c3e59 100644 Binary files a/public/images/pokemon/variant/back/291_3.png and b/public/images/pokemon/variant/back/291_3.png differ diff --git a/public/images/pokemon/variant/back/292_1.png b/public/images/pokemon/variant/back/292_1.png index 4625db861b3..a8ac8dc2e97 100644 Binary files a/public/images/pokemon/variant/back/292_1.png and b/public/images/pokemon/variant/back/292_1.png differ diff --git a/public/images/pokemon/variant/back/292_2.png b/public/images/pokemon/variant/back/292_2.png index c773f10b69d..fec957a4f1c 100644 Binary files a/public/images/pokemon/variant/back/292_2.png and b/public/images/pokemon/variant/back/292_2.png differ diff --git a/public/images/pokemon/variant/back/292_3.png b/public/images/pokemon/variant/back/292_3.png index 164d583eb43..46a23e5e43b 100644 Binary files a/public/images/pokemon/variant/back/292_3.png and b/public/images/pokemon/variant/back/292_3.png differ diff --git a/public/images/pokemon/variant/back/3-mega_2.png b/public/images/pokemon/variant/back/3-mega_2.png index 90eeb6d84f2..b511d149a76 100644 Binary files a/public/images/pokemon/variant/back/3-mega_2.png and b/public/images/pokemon/variant/back/3-mega_2.png differ diff --git a/public/images/pokemon/variant/back/3-mega_3.png b/public/images/pokemon/variant/back/3-mega_3.png index 77d6c7f12fa..1b3e52ecefe 100644 Binary files a/public/images/pokemon/variant/back/3-mega_3.png and b/public/images/pokemon/variant/back/3-mega_3.png differ diff --git a/public/images/pokemon/variant/back/335_2.png b/public/images/pokemon/variant/back/335_2.png index 5e23f357767..f271b29db5e 100644 Binary files a/public/images/pokemon/variant/back/335_2.png and b/public/images/pokemon/variant/back/335_2.png differ diff --git a/public/images/pokemon/variant/back/335_3.png b/public/images/pokemon/variant/back/335_3.png index 407413dca23..62414b67a9e 100644 Binary files a/public/images/pokemon/variant/back/335_3.png and b/public/images/pokemon/variant/back/335_3.png differ diff --git a/public/images/pokemon/variant/back/339_2.png b/public/images/pokemon/variant/back/339_2.png index ceed75f36f6..dbb26b00581 100644 Binary files a/public/images/pokemon/variant/back/339_2.png and b/public/images/pokemon/variant/back/339_2.png differ diff --git a/public/images/pokemon/variant/back/340_3.png b/public/images/pokemon/variant/back/340_3.png index 771b424564b..abbd56f3173 100644 Binary files a/public/images/pokemon/variant/back/340_3.png and b/public/images/pokemon/variant/back/340_3.png differ diff --git a/public/images/pokemon/variant/back/342_2.png b/public/images/pokemon/variant/back/342_2.png index d5138c51fcf..1b318661b1c 100644 Binary files a/public/images/pokemon/variant/back/342_2.png and b/public/images/pokemon/variant/back/342_2.png differ diff --git a/public/images/pokemon/variant/back/342_3.png b/public/images/pokemon/variant/back/342_3.png index af788f45bfa..0dedfe6bcd9 100644 Binary files a/public/images/pokemon/variant/back/342_3.png and b/public/images/pokemon/variant/back/342_3.png differ diff --git a/public/images/pokemon/variant/back/351-sunny_3.png b/public/images/pokemon/variant/back/351-sunny_3.png index 059b85417e1..60e103e8ba4 100644 Binary files a/public/images/pokemon/variant/back/351-sunny_3.png and b/public/images/pokemon/variant/back/351-sunny_3.png differ diff --git a/public/images/pokemon/variant/back/369_2.png b/public/images/pokemon/variant/back/369_2.png index 62b37b70738..bfbb649da4d 100644 Binary files a/public/images/pokemon/variant/back/369_2.png and b/public/images/pokemon/variant/back/369_2.png differ diff --git a/public/images/pokemon/variant/back/369_3.png b/public/images/pokemon/variant/back/369_3.png index 69cedd6571c..7782d86cc90 100644 Binary files a/public/images/pokemon/variant/back/369_3.png and b/public/images/pokemon/variant/back/369_3.png differ diff --git a/public/images/pokemon/variant/back/36_2.png b/public/images/pokemon/variant/back/36_2.png index f30397b482f..42996a70d29 100644 Binary files a/public/images/pokemon/variant/back/36_2.png and b/public/images/pokemon/variant/back/36_2.png differ diff --git a/public/images/pokemon/variant/back/370_2.png b/public/images/pokemon/variant/back/370_2.png index 32d49cd89a3..ac854e0670c 100644 Binary files a/public/images/pokemon/variant/back/370_2.png and b/public/images/pokemon/variant/back/370_2.png differ diff --git a/public/images/pokemon/variant/back/370_3.png b/public/images/pokemon/variant/back/370_3.png index f20b119f333..53327e1259a 100644 Binary files a/public/images/pokemon/variant/back/370_3.png and b/public/images/pokemon/variant/back/370_3.png differ diff --git a/public/images/pokemon/variant/back/383_2.png b/public/images/pokemon/variant/back/383_2.png index 9c280b56dd7..7ebd732025c 100644 Binary files a/public/images/pokemon/variant/back/383_2.png and b/public/images/pokemon/variant/back/383_2.png differ diff --git a/public/images/pokemon/variant/back/383_3.png b/public/images/pokemon/variant/back/383_3.png index b754d969e4a..78d2a760b69 100644 Binary files a/public/images/pokemon/variant/back/383_3.png and b/public/images/pokemon/variant/back/383_3.png differ diff --git a/public/images/pokemon/variant/back/387_2.png b/public/images/pokemon/variant/back/387_2.png index 00c947db821..6ccdd1cd706 100644 Binary files a/public/images/pokemon/variant/back/387_2.png and b/public/images/pokemon/variant/back/387_2.png differ diff --git a/public/images/pokemon/variant/back/399_2.png b/public/images/pokemon/variant/back/399_2.png index b71497f9ccf..5ffbf18b4b9 100644 Binary files a/public/images/pokemon/variant/back/399_2.png and b/public/images/pokemon/variant/back/399_2.png differ diff --git a/public/images/pokemon/variant/back/4080_1.png b/public/images/pokemon/variant/back/4080_1.png index 885cd8b2c54..10bcb7937eb 100644 Binary files a/public/images/pokemon/variant/back/4080_1.png and b/public/images/pokemon/variant/back/4080_1.png differ diff --git a/public/images/pokemon/variant/back/412-sandy_1.png b/public/images/pokemon/variant/back/412-sandy_1.png index a8988e8ab22..5e12cf15517 100644 Binary files a/public/images/pokemon/variant/back/412-sandy_1.png and b/public/images/pokemon/variant/back/412-sandy_1.png differ diff --git a/public/images/pokemon/variant/back/412-sandy_2.png b/public/images/pokemon/variant/back/412-sandy_2.png index 730e0896c92..180e6cd114a 100644 Binary files a/public/images/pokemon/variant/back/412-sandy_2.png and b/public/images/pokemon/variant/back/412-sandy_2.png differ diff --git a/public/images/pokemon/variant/back/412-sandy_3.png b/public/images/pokemon/variant/back/412-sandy_3.png index bf2f2f0b94a..44e86d6fa63 100644 Binary files a/public/images/pokemon/variant/back/412-sandy_3.png and b/public/images/pokemon/variant/back/412-sandy_3.png differ diff --git a/public/images/pokemon/variant/back/4144_2.png b/public/images/pokemon/variant/back/4144_2.png index 12232202dfd..309ba4d2c80 100644 Binary files a/public/images/pokemon/variant/back/4144_2.png and b/public/images/pokemon/variant/back/4144_2.png differ diff --git a/public/images/pokemon/variant/back/4144_3.png b/public/images/pokemon/variant/back/4144_3.png index 31e8ec54f42..e10c4114284 100644 Binary files a/public/images/pokemon/variant/back/4144_3.png and b/public/images/pokemon/variant/back/4144_3.png differ diff --git a/public/images/pokemon/variant/back/4145_2.png b/public/images/pokemon/variant/back/4145_2.png index 78af235b8ec..23d2aac3d7d 100644 Binary files a/public/images/pokemon/variant/back/4145_2.png and b/public/images/pokemon/variant/back/4145_2.png differ diff --git a/public/images/pokemon/variant/back/4145_3.png b/public/images/pokemon/variant/back/4145_3.png index d97d93b7a22..dfafa78f142 100644 Binary files a/public/images/pokemon/variant/back/4145_3.png and b/public/images/pokemon/variant/back/4145_3.png differ diff --git a/public/images/pokemon/variant/back/4146_2.png b/public/images/pokemon/variant/back/4146_2.png index 37eec77a76c..08b224c152f 100644 Binary files a/public/images/pokemon/variant/back/4146_2.png and b/public/images/pokemon/variant/back/4146_2.png differ diff --git a/public/images/pokemon/variant/back/4146_3.png b/public/images/pokemon/variant/back/4146_3.png index bf82c240925..614318cf082 100644 Binary files a/public/images/pokemon/variant/back/4146_3.png and b/public/images/pokemon/variant/back/4146_3.png differ diff --git a/public/images/pokemon/variant/back/4199_1.png b/public/images/pokemon/variant/back/4199_1.png index 45b81fb3413..81f75d9f603 100644 Binary files a/public/images/pokemon/variant/back/4199_1.png and b/public/images/pokemon/variant/back/4199_1.png differ diff --git a/public/images/pokemon/variant/back/441_3.png b/public/images/pokemon/variant/back/441_3.png index 3cfa821a8f9..7efb8f33578 100644 Binary files a/public/images/pokemon/variant/back/441_3.png and b/public/images/pokemon/variant/back/441_3.png differ diff --git a/public/images/pokemon/variant/back/457_2.png b/public/images/pokemon/variant/back/457_2.png index f41fb311b01..b70aec166d6 100644 Binary files a/public/images/pokemon/variant/back/457_2.png and b/public/images/pokemon/variant/back/457_2.png differ diff --git a/public/images/pokemon/variant/back/458_2.png b/public/images/pokemon/variant/back/458_2.png index d593fd73842..18e52c4b388 100644 Binary files a/public/images/pokemon/variant/back/458_2.png and b/public/images/pokemon/variant/back/458_2.png differ diff --git a/public/images/pokemon/variant/back/458_3.png b/public/images/pokemon/variant/back/458_3.png index 605d0dac846..6a2241f81e6 100644 Binary files a/public/images/pokemon/variant/back/458_3.png and b/public/images/pokemon/variant/back/458_3.png differ diff --git a/public/images/pokemon/variant/back/466_1.png b/public/images/pokemon/variant/back/466_1.png index eab00428a23..c003d39b930 100644 Binary files a/public/images/pokemon/variant/back/466_1.png and b/public/images/pokemon/variant/back/466_1.png differ diff --git a/public/images/pokemon/variant/back/469_2.png b/public/images/pokemon/variant/back/469_2.png index b83cf418a57..e09c0c03a58 100644 Binary files a/public/images/pokemon/variant/back/469_2.png and b/public/images/pokemon/variant/back/469_2.png differ diff --git a/public/images/pokemon/variant/back/470_1.png b/public/images/pokemon/variant/back/470_1.png index 7e64d672b38..a60b07bf14d 100644 Binary files a/public/images/pokemon/variant/back/470_1.png and b/public/images/pokemon/variant/back/470_1.png differ diff --git a/public/images/pokemon/variant/back/470_2.png b/public/images/pokemon/variant/back/470_2.png index f062750b14f..f8a009f17a0 100644 Binary files a/public/images/pokemon/variant/back/470_2.png and b/public/images/pokemon/variant/back/470_2.png differ diff --git a/public/images/pokemon/variant/back/472_3.png b/public/images/pokemon/variant/back/472_3.png index a6e22d85113..c9eff18ce0a 100644 Binary files a/public/images/pokemon/variant/back/472_3.png and b/public/images/pokemon/variant/back/472_3.png differ diff --git a/public/images/pokemon/variant/back/475-mega_2.png b/public/images/pokemon/variant/back/475-mega_2.png index 49e9e83929e..159bb8acaa6 100644 Binary files a/public/images/pokemon/variant/back/475-mega_2.png and b/public/images/pokemon/variant/back/475-mega_2.png differ diff --git a/public/images/pokemon/variant/back/475-mega_3.png b/public/images/pokemon/variant/back/475-mega_3.png index 9ad3c9d53dc..861dc7bde69 100644 Binary files a/public/images/pokemon/variant/back/475-mega_3.png and b/public/images/pokemon/variant/back/475-mega_3.png differ diff --git a/public/images/pokemon/variant/back/475_2.png b/public/images/pokemon/variant/back/475_2.png index 5b2dd404dce..38842a5499d 100644 Binary files a/public/images/pokemon/variant/back/475_2.png and b/public/images/pokemon/variant/back/475_2.png differ diff --git a/public/images/pokemon/variant/back/475_3.png b/public/images/pokemon/variant/back/475_3.png index 58a981d8979..31ff1c9d160 100644 Binary files a/public/images/pokemon/variant/back/475_3.png and b/public/images/pokemon/variant/back/475_3.png differ diff --git a/public/images/pokemon/variant/back/478_2.png b/public/images/pokemon/variant/back/478_2.png index 979bfc9fd11..de0b86b1be2 100644 Binary files a/public/images/pokemon/variant/back/478_2.png and b/public/images/pokemon/variant/back/478_2.png differ diff --git a/public/images/pokemon/variant/back/529_2.png b/public/images/pokemon/variant/back/529_2.png index 22d3d5958ba..aba02a803b5 100644 Binary files a/public/images/pokemon/variant/back/529_2.png and b/public/images/pokemon/variant/back/529_2.png differ diff --git a/public/images/pokemon/variant/back/529_3.png b/public/images/pokemon/variant/back/529_3.png index 8458afd7642..8a4ef1de0ed 100644 Binary files a/public/images/pokemon/variant/back/529_3.png and b/public/images/pokemon/variant/back/529_3.png differ diff --git a/public/images/pokemon/variant/back/530_3.png b/public/images/pokemon/variant/back/530_3.png index ec2a1e7cd77..1997eab0c02 100644 Binary files a/public/images/pokemon/variant/back/530_3.png and b/public/images/pokemon/variant/back/530_3.png differ diff --git a/public/images/pokemon/variant/back/539_2.png b/public/images/pokemon/variant/back/539_2.png index 01956ca440c..fd89d2f53cc 100644 Binary files a/public/images/pokemon/variant/back/539_2.png and b/public/images/pokemon/variant/back/539_2.png differ diff --git a/public/images/pokemon/variant/back/539_3.png b/public/images/pokemon/variant/back/539_3.png index b4126047a5c..767540ba5b6 100644 Binary files a/public/images/pokemon/variant/back/539_3.png and b/public/images/pokemon/variant/back/539_3.png differ diff --git a/public/images/pokemon/variant/back/585-autumn_1.png b/public/images/pokemon/variant/back/585-autumn_1.png index 147e14fc5fa..49579e9b3f8 100644 Binary files a/public/images/pokemon/variant/back/585-autumn_1.png and b/public/images/pokemon/variant/back/585-autumn_1.png differ diff --git a/public/images/pokemon/variant/back/585-spring_1.png b/public/images/pokemon/variant/back/585-spring_1.png index e715844e976..26c9d9cd408 100644 Binary files a/public/images/pokemon/variant/back/585-spring_1.png and b/public/images/pokemon/variant/back/585-spring_1.png differ diff --git a/public/images/pokemon/variant/back/585-winter_1.png b/public/images/pokemon/variant/back/585-winter_1.png index 24d991327f7..89421e43303 100644 Binary files a/public/images/pokemon/variant/back/585-winter_1.png and b/public/images/pokemon/variant/back/585-winter_1.png differ diff --git a/public/images/pokemon/variant/back/592_3.png b/public/images/pokemon/variant/back/592_3.png index f7469e36ec6..f0af63c4a0b 100644 Binary files a/public/images/pokemon/variant/back/592_3.png and b/public/images/pokemon/variant/back/592_3.png differ diff --git a/public/images/pokemon/variant/back/594_3.png b/public/images/pokemon/variant/back/594_3.png index 4f1c28d8335..c6554cc8af4 100644 Binary files a/public/images/pokemon/variant/back/594_3.png and b/public/images/pokemon/variant/back/594_3.png differ diff --git a/public/images/pokemon/variant/back/6-gigantamax_3.png b/public/images/pokemon/variant/back/6-gigantamax_3.png index e7927826cea..4e304399339 100644 Binary files a/public/images/pokemon/variant/back/6-gigantamax_3.png and b/public/images/pokemon/variant/back/6-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/back/6-mega-x_3.png b/public/images/pokemon/variant/back/6-mega-x_3.png index 4ec1aca85b5..97a7df76076 100644 Binary files a/public/images/pokemon/variant/back/6-mega-x_3.png and b/public/images/pokemon/variant/back/6-mega-x_3.png differ diff --git a/public/images/pokemon/variant/back/6-mega-y_3.png b/public/images/pokemon/variant/back/6-mega-y_3.png index 7e00f6200c7..c53e57f1bc8 100644 Binary files a/public/images/pokemon/variant/back/6-mega-y_3.png and b/public/images/pokemon/variant/back/6-mega-y_3.png differ diff --git a/public/images/pokemon/variant/back/631_2.png b/public/images/pokemon/variant/back/631_2.png index b3cee0d8baa..602a179a660 100644 Binary files a/public/images/pokemon/variant/back/631_2.png and b/public/images/pokemon/variant/back/631_2.png differ diff --git a/public/images/pokemon/variant/back/631_3.png b/public/images/pokemon/variant/back/631_3.png index a052b6ea4b1..cf659d58a66 100644 Binary files a/public/images/pokemon/variant/back/631_3.png and b/public/images/pokemon/variant/back/631_3.png differ diff --git a/public/images/pokemon/variant/back/696_3.png b/public/images/pokemon/variant/back/696_3.png index 76bced189af..6fab92e5b16 100644 Binary files a/public/images/pokemon/variant/back/696_3.png and b/public/images/pokemon/variant/back/696_3.png differ diff --git a/public/images/pokemon/variant/back/697_3.png b/public/images/pokemon/variant/back/697_3.png index cea5cfb6830..231f42d457d 100644 Binary files a/public/images/pokemon/variant/back/697_3.png and b/public/images/pokemon/variant/back/697_3.png differ diff --git a/public/images/pokemon/variant/back/6_2.png b/public/images/pokemon/variant/back/6_2.png index c7d5a8140f9..2b9bbc8aff3 100644 Binary files a/public/images/pokemon/variant/back/6_2.png and b/public/images/pokemon/variant/back/6_2.png differ diff --git a/public/images/pokemon/variant/back/6_3.png b/public/images/pokemon/variant/back/6_3.png index f2a14a5feb9..2db1c28015d 100644 Binary files a/public/images/pokemon/variant/back/6_3.png and b/public/images/pokemon/variant/back/6_3.png differ diff --git a/public/images/pokemon/variant/back/715_2.png b/public/images/pokemon/variant/back/715_2.png index d9e04847334..a7a644c32ae 100644 Binary files a/public/images/pokemon/variant/back/715_2.png and b/public/images/pokemon/variant/back/715_2.png differ diff --git a/public/images/pokemon/variant/back/715_3.png b/public/images/pokemon/variant/back/715_3.png index 11069652972..6389c152726 100644 Binary files a/public/images/pokemon/variant/back/715_3.png and b/public/images/pokemon/variant/back/715_3.png differ diff --git a/public/images/pokemon/variant/back/742_2.png b/public/images/pokemon/variant/back/742_2.png index cfcc6c31f20..49304def85e 100644 Binary files a/public/images/pokemon/variant/back/742_2.png and b/public/images/pokemon/variant/back/742_2.png differ diff --git a/public/images/pokemon/variant/back/742_3.png b/public/images/pokemon/variant/back/742_3.png index a8157351738..9f2aa9712e6 100644 Binary files a/public/images/pokemon/variant/back/742_3.png and b/public/images/pokemon/variant/back/742_3.png differ diff --git a/public/images/pokemon/variant/back/743_2.png b/public/images/pokemon/variant/back/743_2.png index 3e90381dcc1..ccecf5394a2 100644 Binary files a/public/images/pokemon/variant/back/743_2.png and b/public/images/pokemon/variant/back/743_2.png differ diff --git a/public/images/pokemon/variant/back/743_3.png b/public/images/pokemon/variant/back/743_3.png index 03d5b2719ff..7b75f1da47f 100644 Binary files a/public/images/pokemon/variant/back/743_3.png and b/public/images/pokemon/variant/back/743_3.png differ diff --git a/public/images/pokemon/variant/back/753.json b/public/images/pokemon/variant/back/753.json index 670cdc102c3..4dc68eb5923 100644 --- a/public/images/pokemon/variant/back/753.json +++ b/public/images/pokemon/variant/back/753.json @@ -1,24 +1,34 @@ { "1": { "234028": "2e1643", - "5ba668": "4e2c62", "468050": "3e2253", - "549977": "1b3822", + "5ba668": "4e2c62", "315945": "0e2616", "69bf94": "27452c", - "d98d9a": "a55c36", + "549977": "1b3822", + "98d9b8": "48644d", + "803340": "682c16", "ffbfca": "b47145", - "803340": "682c16" + "d98d9a": "a55c36", + "ff667f": "ffb862", + "bfbfbf": "c9d6b7", + "f8f8f8": "eff7e2", + "cc5266": "ee9143" }, "2": { - "234028": "531034", + "234028": "812255", + "468050": "ad3a87", "5ba668": "ce54b0", - "468050": "9b2d76", - "549977": "5a215a", "315945": "441342", "69bf94": "6e3472", - "d98d9a": "263b83", + "549977": "5a215a", + "98d9b8": "a061a0", + "803340": "0b1d4e", "ffbfca": "3454a5", - "803340": "0b1d4e" + "d98d9a": "263b83", + "ff667f": "62b4f6", + "bfbfbf": "feccff", + "f8f8f8": "ffe9ff", + "cc5266": "428ee1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/754.json b/public/images/pokemon/variant/back/754.json similarity index 100% rename from public/images/pokemon/variant/exp/754.json rename to public/images/pokemon/variant/back/754.json diff --git a/public/images/pokemon/variant/back/754_2.json b/public/images/pokemon/variant/back/754_2.json deleted file mode 100644 index 450a378cef6..00000000000 --- a/public/images/pokemon/variant/back/754_2.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "textures": [ - { - "image": "754_2.png", - "format": "RGBA8888", - "size": { - "w": 68, - "h": 68 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 36, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 36, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 36, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2774f1d6c293a696177c371795e6ba38:d35951afed6391313aa94000563ae143:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/754_2.png b/public/images/pokemon/variant/back/754_2.png deleted file mode 100644 index af52b9c5f44..00000000000 Binary files a/public/images/pokemon/variant/back/754_2.png and /dev/null differ diff --git a/public/images/pokemon/variant/back/754_3.json b/public/images/pokemon/variant/back/754_3.json deleted file mode 100644 index 11e8a5a15e1..00000000000 --- a/public/images/pokemon/variant/back/754_3.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "textures": [ - { - "image": "754_3.png", - "format": "RGBA8888", - "size": { - "w": 68, - "h": 68 - }, - "scale": 1, - "frames": [ - { - "filename": "0001.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 36, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 36, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 36, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2774f1d6c293a696177c371795e6ba38:d35951afed6391313aa94000563ae143:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/754_3.png b/public/images/pokemon/variant/back/754_3.png deleted file mode 100644 index e00a2353a60..00000000000 Binary files a/public/images/pokemon/variant/back/754_3.png and /dev/null differ diff --git a/public/images/pokemon/variant/back/791_1.png b/public/images/pokemon/variant/back/791_1.png index 647884de128..73f215aedb0 100644 Binary files a/public/images/pokemon/variant/back/791_1.png and b/public/images/pokemon/variant/back/791_1.png differ diff --git a/public/images/pokemon/variant/back/7_2.png b/public/images/pokemon/variant/back/7_2.png index 1deb4d30f61..a6450d97ccd 100644 Binary files a/public/images/pokemon/variant/back/7_2.png and b/public/images/pokemon/variant/back/7_2.png differ diff --git a/public/images/pokemon/variant/back/7_3.png b/public/images/pokemon/variant/back/7_3.png index 8111d99023e..43fb03bcd1f 100644 Binary files a/public/images/pokemon/variant/back/7_3.png and b/public/images/pokemon/variant/back/7_3.png differ diff --git a/public/images/pokemon/variant/back/823-gigantamax_2.png b/public/images/pokemon/variant/back/823-gigantamax_2.png index d37529893d9..ac9f31c5528 100644 Binary files a/public/images/pokemon/variant/back/823-gigantamax_2.png and b/public/images/pokemon/variant/back/823-gigantamax_2.png differ diff --git a/public/images/pokemon/variant/back/823-gigantamax_3.png b/public/images/pokemon/variant/back/823-gigantamax_3.png index 9b329a4d6f6..9b98e01ffb5 100644 Binary files a/public/images/pokemon/variant/back/823-gigantamax_3.png and b/public/images/pokemon/variant/back/823-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/back/83_2.png b/public/images/pokemon/variant/back/83_2.png index 103155eb387..71a50200a05 100644 Binary files a/public/images/pokemon/variant/back/83_2.png and b/public/images/pokemon/variant/back/83_2.png differ diff --git a/public/images/pokemon/variant/back/83_3.png b/public/images/pokemon/variant/back/83_3.png index e06e48e577f..b0c466add9c 100644 Binary files a/public/images/pokemon/variant/back/83_3.png and b/public/images/pokemon/variant/back/83_3.png differ diff --git a/public/images/pokemon/variant/back/857_2.png b/public/images/pokemon/variant/back/857_2.png index 2481e0b825f..049af1d4f69 100644 Binary files a/public/images/pokemon/variant/back/857_2.png and b/public/images/pokemon/variant/back/857_2.png differ diff --git a/public/images/pokemon/variant/back/857_3.png b/public/images/pokemon/variant/back/857_3.png index 0b14194a26f..925a6a1b705 100644 Binary files a/public/images/pokemon/variant/back/857_3.png and b/public/images/pokemon/variant/back/857_3.png differ diff --git a/public/images/pokemon/variant/back/862_2.png b/public/images/pokemon/variant/back/862_2.png index 1a79d39d63f..248699e9497 100644 Binary files a/public/images/pokemon/variant/back/862_2.png and b/public/images/pokemon/variant/back/862_2.png differ diff --git a/public/images/pokemon/variant/back/862_3.png b/public/images/pokemon/variant/back/862_3.png index d8e6d2b5639..e20226a9d62 100644 Binary files a/public/images/pokemon/variant/back/862_3.png and b/public/images/pokemon/variant/back/862_3.png differ diff --git a/public/images/pokemon/variant/back/892-gigantamax-rapid_2.png b/public/images/pokemon/variant/back/892-gigantamax-rapid_2.png index ba25375c2cf..0946ffc3791 100644 Binary files a/public/images/pokemon/variant/back/892-gigantamax-rapid_2.png and b/public/images/pokemon/variant/back/892-gigantamax-rapid_2.png differ diff --git a/public/images/pokemon/variant/back/892-gigantamax-rapid_3.png b/public/images/pokemon/variant/back/892-gigantamax-rapid_3.png index d04035bcefa..766a9035099 100644 Binary files a/public/images/pokemon/variant/back/892-gigantamax-rapid_3.png and b/public/images/pokemon/variant/back/892-gigantamax-rapid_3.png differ diff --git a/public/images/pokemon/variant/back/892-gigantamax-single_2.png b/public/images/pokemon/variant/back/892-gigantamax-single_2.png index 31e873b67e0..db36f90c87f 100644 Binary files a/public/images/pokemon/variant/back/892-gigantamax-single_2.png and b/public/images/pokemon/variant/back/892-gigantamax-single_2.png differ diff --git a/public/images/pokemon/variant/back/892-gigantamax-single_3.png b/public/images/pokemon/variant/back/892-gigantamax-single_3.png index 6eb91683d24..dfcc80285b9 100644 Binary files a/public/images/pokemon/variant/back/892-gigantamax-single_3.png and b/public/images/pokemon/variant/back/892-gigantamax-single_3.png differ diff --git a/public/images/pokemon/variant/back/8_2.png b/public/images/pokemon/variant/back/8_2.png index 8c3605eb75b..7652940aff1 100644 Binary files a/public/images/pokemon/variant/back/8_2.png and b/public/images/pokemon/variant/back/8_2.png differ diff --git a/public/images/pokemon/variant/back/8_3.png b/public/images/pokemon/variant/back/8_3.png index c74f82777ce..19e0df11ec5 100644 Binary files a/public/images/pokemon/variant/back/8_3.png and b/public/images/pokemon/variant/back/8_3.png differ diff --git a/public/images/pokemon/variant/back/9-gigantamax_3.png b/public/images/pokemon/variant/back/9-gigantamax_3.png index 444264fa4fd..396aa33ac7b 100644 Binary files a/public/images/pokemon/variant/back/9-gigantamax_3.png and b/public/images/pokemon/variant/back/9-gigantamax_3.png differ diff --git a/public/images/pokemon/variant/back/9-mega_2.png b/public/images/pokemon/variant/back/9-mega_2.png index 02987564bea..c86d36e9eb4 100644 Binary files a/public/images/pokemon/variant/back/9-mega_2.png and b/public/images/pokemon/variant/back/9-mega_2.png differ diff --git a/public/images/pokemon/variant/back/9-mega_3.png b/public/images/pokemon/variant/back/9-mega_3.png index 00150d4dd46..05458e16f93 100644 Binary files a/public/images/pokemon/variant/back/9-mega_3.png and b/public/images/pokemon/variant/back/9-mega_3.png differ diff --git a/public/images/pokemon/variant/back/910_2.png b/public/images/pokemon/variant/back/910_2.png index 8c4dd643574..5e64098c9d7 100644 Binary files a/public/images/pokemon/variant/back/910_2.png and b/public/images/pokemon/variant/back/910_2.png differ diff --git a/public/images/pokemon/variant/back/910_3.png b/public/images/pokemon/variant/back/910_3.png index ad622de11a4..2ef72ce81a4 100644 Binary files a/public/images/pokemon/variant/back/910_3.png and b/public/images/pokemon/variant/back/910_3.png differ diff --git a/public/images/pokemon/variant/back/92_1.png b/public/images/pokemon/variant/back/92_1.png index 96a70ecbf7b..813b3bb941f 100644 Binary files a/public/images/pokemon/variant/back/92_1.png and b/public/images/pokemon/variant/back/92_1.png differ diff --git a/public/images/pokemon/variant/back/92_2.png b/public/images/pokemon/variant/back/92_2.png index 711ece9d98b..ee52d3b70eb 100644 Binary files a/public/images/pokemon/variant/back/92_2.png and b/public/images/pokemon/variant/back/92_2.png differ diff --git a/public/images/pokemon/variant/back/92_3.png b/public/images/pokemon/variant/back/92_3.png index 918e0ee35f8..bcb05425031 100644 Binary files a/public/images/pokemon/variant/back/92_3.png and b/public/images/pokemon/variant/back/92_3.png differ diff --git a/public/images/pokemon/variant/back/935_1.png b/public/images/pokemon/variant/back/935_1.png index 12a3414c427..786bbb05f53 100644 Binary files a/public/images/pokemon/variant/back/935_1.png and b/public/images/pokemon/variant/back/935_1.png differ diff --git a/public/images/pokemon/variant/back/935_2.png b/public/images/pokemon/variant/back/935_2.png index 20e48938759..d64e030092d 100644 Binary files a/public/images/pokemon/variant/back/935_2.png and b/public/images/pokemon/variant/back/935_2.png differ diff --git a/public/images/pokemon/variant/back/935_3.png b/public/images/pokemon/variant/back/935_3.png index 8e67039cfd7..239c2ba8f45 100644 Binary files a/public/images/pokemon/variant/back/935_3.png and b/public/images/pokemon/variant/back/935_3.png differ diff --git a/public/images/pokemon/variant/back/936_1.png b/public/images/pokemon/variant/back/936_1.png index fec1b790865..72c58fc0c2f 100644 Binary files a/public/images/pokemon/variant/back/936_1.png and b/public/images/pokemon/variant/back/936_1.png differ diff --git a/public/images/pokemon/variant/back/936_2.png b/public/images/pokemon/variant/back/936_2.png index 4d15c187714..1dea1edcf0c 100644 Binary files a/public/images/pokemon/variant/back/936_2.png and b/public/images/pokemon/variant/back/936_2.png differ diff --git a/public/images/pokemon/variant/back/936_3.png b/public/images/pokemon/variant/back/936_3.png index 52e7abf5544..815b0eafd4b 100644 Binary files a/public/images/pokemon/variant/back/936_3.png and b/public/images/pokemon/variant/back/936_3.png differ diff --git a/public/images/pokemon/variant/back/937_1.png b/public/images/pokemon/variant/back/937_1.png index f6c90b765e8..91779f8dcfd 100644 Binary files a/public/images/pokemon/variant/back/937_1.png and b/public/images/pokemon/variant/back/937_1.png differ diff --git a/public/images/pokemon/variant/back/937_2.png b/public/images/pokemon/variant/back/937_2.png index b4979bba1b2..862609cf098 100644 Binary files a/public/images/pokemon/variant/back/937_2.png and b/public/images/pokemon/variant/back/937_2.png differ diff --git a/public/images/pokemon/variant/back/937_3.png b/public/images/pokemon/variant/back/937_3.png index 7e4a399e49d..f51020228f6 100644 Binary files a/public/images/pokemon/variant/back/937_3.png and b/public/images/pokemon/variant/back/937_3.png differ diff --git a/public/images/pokemon/variant/back/970_2.png b/public/images/pokemon/variant/back/970_2.png index 4f3a7eb76ef..96677f963a6 100644 Binary files a/public/images/pokemon/variant/back/970_2.png and b/public/images/pokemon/variant/back/970_2.png differ diff --git a/public/images/pokemon/variant/back/978-curly_2.png b/public/images/pokemon/variant/back/978-curly_2.png index 70bde1acb2f..79f10b3fc4e 100644 Binary files a/public/images/pokemon/variant/back/978-curly_2.png and b/public/images/pokemon/variant/back/978-curly_2.png differ diff --git a/public/images/pokemon/variant/back/978-curly_3.png b/public/images/pokemon/variant/back/978-curly_3.png index 877dbbaee6f..2a42ee75182 100644 Binary files a/public/images/pokemon/variant/back/978-curly_3.png and b/public/images/pokemon/variant/back/978-curly_3.png differ diff --git a/public/images/pokemon/variant/back/978-droopy_2.png b/public/images/pokemon/variant/back/978-droopy_2.png index 7259f4e5635..52fbbf5593e 100644 Binary files a/public/images/pokemon/variant/back/978-droopy_2.png and b/public/images/pokemon/variant/back/978-droopy_2.png differ diff --git a/public/images/pokemon/variant/back/978-droopy_3.png b/public/images/pokemon/variant/back/978-droopy_3.png index 9ba70e6d395..209a4382adc 100644 Binary files a/public/images/pokemon/variant/back/978-droopy_3.png and b/public/images/pokemon/variant/back/978-droopy_3.png differ diff --git a/public/images/pokemon/variant/back/982-three-segment_3.png b/public/images/pokemon/variant/back/982-three-segment_3.png index ed5d835ab16..8775abb95c6 100644 Binary files a/public/images/pokemon/variant/back/982-three-segment_3.png and b/public/images/pokemon/variant/back/982-three-segment_3.png differ diff --git a/public/images/pokemon/variant/back/982_3.png b/public/images/pokemon/variant/back/982_3.png index 0c8766b59cb..43cfe820b6a 100644 Binary files a/public/images/pokemon/variant/back/982_3.png and b/public/images/pokemon/variant/back/982_3.png differ diff --git a/public/images/pokemon/variant/back/9_2.png b/public/images/pokemon/variant/back/9_2.png index 409472b2e52..2903d8940ea 100644 Binary files a/public/images/pokemon/variant/back/9_2.png and b/public/images/pokemon/variant/back/9_2.png differ diff --git a/public/images/pokemon/variant/back/9_3.png b/public/images/pokemon/variant/back/9_3.png index 2cb0b1a3917..eb2f321636c 100644 Binary files a/public/images/pokemon/variant/back/9_3.png and b/public/images/pokemon/variant/back/9_3.png differ diff --git a/public/images/pokemon/variant/back/female/178_2.png b/public/images/pokemon/variant/back/female/178_2.png index 3bf2b443719..d39be2635cc 100644 Binary files a/public/images/pokemon/variant/back/female/178_2.png and b/public/images/pokemon/variant/back/female/178_2.png differ diff --git a/public/images/pokemon/variant/back/female/178_3.png b/public/images/pokemon/variant/back/female/178_3.png index 9533621c6d6..3b6da4e2cdf 100644 Binary files a/public/images/pokemon/variant/back/female/178_3.png and b/public/images/pokemon/variant/back/female/178_3.png differ diff --git a/public/images/pokemon/variant/back/female/399_2.png b/public/images/pokemon/variant/back/female/399_2.png index b71497f9ccf..5ffbf18b4b9 100644 Binary files a/public/images/pokemon/variant/back/female/399_2.png and b/public/images/pokemon/variant/back/female/399_2.png differ diff --git a/public/images/pokemon/variant/back/female/418_2.png b/public/images/pokemon/variant/back/female/418_2.png index 03a1b2b7dd4..646174b44fd 100644 Binary files a/public/images/pokemon/variant/back/female/418_2.png and b/public/images/pokemon/variant/back/female/418_2.png differ diff --git a/public/images/pokemon/variant/back/female/418_3.png b/public/images/pokemon/variant/back/female/418_3.png index faf166b7184..c8b43c99d4d 100644 Binary files a/public/images/pokemon/variant/back/female/418_3.png and b/public/images/pokemon/variant/back/female/418_3.png differ diff --git a/public/images/pokemon/variant/back/female/41_2.png b/public/images/pokemon/variant/back/female/41_2.png index 4fdb671c61a..825e959e41c 100644 Binary files a/public/images/pokemon/variant/back/female/41_2.png and b/public/images/pokemon/variant/back/female/41_2.png differ diff --git a/public/images/pokemon/variant/back/female/41_3.png b/public/images/pokemon/variant/back/female/41_3.png index f494bd5b07e..4c16be74641 100644 Binary files a/public/images/pokemon/variant/back/female/41_3.png and b/public/images/pokemon/variant/back/female/41_3.png differ diff --git a/public/images/pokemon/variant/back/female/42_2.png b/public/images/pokemon/variant/back/female/42_2.png index 2fa196d973a..7a8e5ed696e 100644 Binary files a/public/images/pokemon/variant/back/female/42_2.png and b/public/images/pokemon/variant/back/female/42_2.png differ diff --git a/public/images/pokemon/variant/back/female/42_3.png b/public/images/pokemon/variant/back/female/42_3.png index 4e88627d6b6..84a7625a210 100644 Binary files a/public/images/pokemon/variant/back/female/42_3.png and b/public/images/pokemon/variant/back/female/42_3.png differ diff --git a/public/images/pokemon/variant/exp/1006_2.png b/public/images/pokemon/variant/exp/1006_2.png index f9316dd10d6..796fcea7d57 100644 Binary files a/public/images/pokemon/variant/exp/1006_2.png and b/public/images/pokemon/variant/exp/1006_2.png differ diff --git a/public/images/pokemon/variant/exp/1007-apex-build_2.png b/public/images/pokemon/variant/exp/1007-apex-build_2.png index 8d7298dfa16..28dedc0f04c 100644 Binary files a/public/images/pokemon/variant/exp/1007-apex-build_2.png and b/public/images/pokemon/variant/exp/1007-apex-build_2.png differ diff --git a/public/images/pokemon/variant/exp/1007-apex-build_3.png b/public/images/pokemon/variant/exp/1007-apex-build_3.png index 874d701e884..04c1ed00915 100644 Binary files a/public/images/pokemon/variant/exp/1007-apex-build_3.png and b/public/images/pokemon/variant/exp/1007-apex-build_3.png differ diff --git a/public/images/pokemon/variant/exp/181-mega_3.png b/public/images/pokemon/variant/exp/181-mega_3.png index 7172bc45244..49c809b1b42 100644 Binary files a/public/images/pokemon/variant/exp/181-mega_3.png and b/public/images/pokemon/variant/exp/181-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/212-mega_2.png b/public/images/pokemon/variant/exp/212-mega_2.png index 2665dfbc253..eb36b69b114 100644 Binary files a/public/images/pokemon/variant/exp/212-mega_2.png and b/public/images/pokemon/variant/exp/212-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/212-mega_3.png b/public/images/pokemon/variant/exp/212-mega_3.png index 75226e68010..dd32608743c 100644 Binary files a/public/images/pokemon/variant/exp/212-mega_3.png and b/public/images/pokemon/variant/exp/212-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/282-mega_2.png b/public/images/pokemon/variant/exp/282-mega_2.png index 3b9d7b6c718..d8f0d0a1c3f 100644 Binary files a/public/images/pokemon/variant/exp/282-mega_2.png and b/public/images/pokemon/variant/exp/282-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/282-mega_3.png b/public/images/pokemon/variant/exp/282-mega_3.png index 1a3de3d92d8..dd8c0d38071 100644 Binary files a/public/images/pokemon/variant/exp/282-mega_3.png and b/public/images/pokemon/variant/exp/282-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/3-mega_2.png b/public/images/pokemon/variant/exp/3-mega_2.png index b9cb20aba0a..3d9636d7a99 100644 Binary files a/public/images/pokemon/variant/exp/3-mega_2.png and b/public/images/pokemon/variant/exp/3-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/3-mega_3.png b/public/images/pokemon/variant/exp/3-mega_3.png index ddd1e998130..b407b5d290c 100644 Binary files a/public/images/pokemon/variant/exp/3-mega_3.png and b/public/images/pokemon/variant/exp/3-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/334-mega_2.png b/public/images/pokemon/variant/exp/334-mega_2.png index 9588df214d0..b3c71c72327 100644 Binary files a/public/images/pokemon/variant/exp/334-mega_2.png and b/public/images/pokemon/variant/exp/334-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/384-mega_2.png b/public/images/pokemon/variant/exp/384-mega_2.png index 57ed787e8da..188d3c1375d 100644 Binary files a/public/images/pokemon/variant/exp/384-mega_2.png and b/public/images/pokemon/variant/exp/384-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/4080_1.png b/public/images/pokemon/variant/exp/4080_1.png index aad11f1dd4a..e0a2511d43c 100644 Binary files a/public/images/pokemon/variant/exp/4080_1.png and b/public/images/pokemon/variant/exp/4080_1.png differ diff --git a/public/images/pokemon/variant/exp/4144_2.png b/public/images/pokemon/variant/exp/4144_2.png index dcce06c2d85..eaae7d290cd 100644 Binary files a/public/images/pokemon/variant/exp/4144_2.png and b/public/images/pokemon/variant/exp/4144_2.png differ diff --git a/public/images/pokemon/variant/exp/4144_3.png b/public/images/pokemon/variant/exp/4144_3.png index 6662ba42119..6b749fc7e82 100644 Binary files a/public/images/pokemon/variant/exp/4144_3.png and b/public/images/pokemon/variant/exp/4144_3.png differ diff --git a/public/images/pokemon/variant/exp/4145_2.png b/public/images/pokemon/variant/exp/4145_2.png index d2a89e1b11e..e97c4e03683 100644 Binary files a/public/images/pokemon/variant/exp/4145_2.png and b/public/images/pokemon/variant/exp/4145_2.png differ diff --git a/public/images/pokemon/variant/exp/4145_3.png b/public/images/pokemon/variant/exp/4145_3.png index b04a5307c58..2b57f3f9403 100644 Binary files a/public/images/pokemon/variant/exp/4145_3.png and b/public/images/pokemon/variant/exp/4145_3.png differ diff --git a/public/images/pokemon/variant/exp/4146_2.png b/public/images/pokemon/variant/exp/4146_2.png index c596814d273..77ae99ede34 100644 Binary files a/public/images/pokemon/variant/exp/4146_2.png and b/public/images/pokemon/variant/exp/4146_2.png differ diff --git a/public/images/pokemon/variant/exp/4146_3.png b/public/images/pokemon/variant/exp/4146_3.png index 03d1872ee45..65ba48ffa4e 100644 Binary files a/public/images/pokemon/variant/exp/4146_3.png and b/public/images/pokemon/variant/exp/4146_3.png differ diff --git a/public/images/pokemon/variant/exp/4199_1.png b/public/images/pokemon/variant/exp/4199_1.png index 0a22d90da05..d8d15857b78 100644 Binary files a/public/images/pokemon/variant/exp/4199_1.png and b/public/images/pokemon/variant/exp/4199_1.png differ diff --git a/public/images/pokemon/variant/exp/475-mega_2.png b/public/images/pokemon/variant/exp/475-mega_2.png index b1b4e9aec31..06d5e7eaa24 100644 Binary files a/public/images/pokemon/variant/exp/475-mega_2.png and b/public/images/pokemon/variant/exp/475-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/475-mega_3.png b/public/images/pokemon/variant/exp/475-mega_3.png index f15fc37a907..6d44a5a92ec 100644 Binary files a/public/images/pokemon/variant/exp/475-mega_3.png and b/public/images/pokemon/variant/exp/475-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/6-mega-x_2.png b/public/images/pokemon/variant/exp/6-mega-x_2.png index 1aafc38ba81..813eba035d7 100644 Binary files a/public/images/pokemon/variant/exp/6-mega-x_2.png and b/public/images/pokemon/variant/exp/6-mega-x_2.png differ diff --git a/public/images/pokemon/variant/exp/6-mega-x_3.png b/public/images/pokemon/variant/exp/6-mega-x_3.png index ae294a8aa47..e64ec27626d 100644 Binary files a/public/images/pokemon/variant/exp/6-mega-x_3.png and b/public/images/pokemon/variant/exp/6-mega-x_3.png differ diff --git a/public/images/pokemon/variant/exp/6-mega-y_2.png b/public/images/pokemon/variant/exp/6-mega-y_2.png index a0fa6c56d80..05e50fac10c 100644 Binary files a/public/images/pokemon/variant/exp/6-mega-y_2.png and b/public/images/pokemon/variant/exp/6-mega-y_2.png differ diff --git a/public/images/pokemon/variant/exp/6-mega-y_3.png b/public/images/pokemon/variant/exp/6-mega-y_3.png index a31753d4492..203df63bd30 100644 Binary files a/public/images/pokemon/variant/exp/6-mega-y_3.png and b/public/images/pokemon/variant/exp/6-mega-y_3.png differ diff --git a/public/images/pokemon/variant/exp/669-orange_2.png b/public/images/pokemon/variant/exp/669-orange_2.png index ebf9f30f78e..26a50a86f31 100644 Binary files a/public/images/pokemon/variant/exp/669-orange_2.png and b/public/images/pokemon/variant/exp/669-orange_2.png differ diff --git a/public/images/pokemon/variant/exp/669-orange_3.png b/public/images/pokemon/variant/exp/669-orange_3.png index 8bd4cb39e3c..3125152c04b 100644 Binary files a/public/images/pokemon/variant/exp/669-orange_3.png and b/public/images/pokemon/variant/exp/669-orange_3.png differ diff --git a/public/images/pokemon/variant/exp/669-red_2.png b/public/images/pokemon/variant/exp/669-red_2.png index 8248bedd6eb..15d1947100a 100644 Binary files a/public/images/pokemon/variant/exp/669-red_2.png and b/public/images/pokemon/variant/exp/669-red_2.png differ diff --git a/public/images/pokemon/variant/exp/669-red_3.png b/public/images/pokemon/variant/exp/669-red_3.png index cb2f32a4d21..fc0ca5e9892 100644 Binary files a/public/images/pokemon/variant/exp/669-red_3.png and b/public/images/pokemon/variant/exp/669-red_3.png differ diff --git a/public/images/pokemon/variant/exp/671-blue_3.png b/public/images/pokemon/variant/exp/671-blue_3.png index 59fc50a823d..ef100bd6f7a 100644 Binary files a/public/images/pokemon/variant/exp/671-blue_3.png and b/public/images/pokemon/variant/exp/671-blue_3.png differ diff --git a/public/images/pokemon/variant/exp/671-orange_3.png b/public/images/pokemon/variant/exp/671-orange_3.png index 37d5cbf4e9d..f9645d23c87 100644 Binary files a/public/images/pokemon/variant/exp/671-orange_3.png and b/public/images/pokemon/variant/exp/671-orange_3.png differ diff --git a/public/images/pokemon/variant/exp/671-red_3.png b/public/images/pokemon/variant/exp/671-red_3.png index 329d9591947..1a24e78f805 100644 Binary files a/public/images/pokemon/variant/exp/671-red_3.png and b/public/images/pokemon/variant/exp/671-red_3.png differ diff --git a/public/images/pokemon/variant/exp/671-white_3.png b/public/images/pokemon/variant/exp/671-white_3.png index 77d53d0afcb..0d48cf17e95 100644 Binary files a/public/images/pokemon/variant/exp/671-white_3.png and b/public/images/pokemon/variant/exp/671-white_3.png differ diff --git a/public/images/pokemon/variant/exp/672.json b/public/images/pokemon/variant/exp/672.json deleted file mode 100644 index c4e6dd98661..00000000000 --- a/public/images/pokemon/variant/exp/672.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "1": { - "3d3128": "642509", - "67615b": "9e2c3d", - "615140": "89431b", - "7e6d5a": "b3743e", - "554538": "642509", - "beb8b6": "e3a378", - "efeded": "f8e2b7", - "0e5d58": "8c6859", - "0d8374": "d2af94", - "09a77c": "f8f0e2", - "c16a3f": "321512", - "a8905c": "4b2525", - "c6b379": "552d30" - }, - "2": { - "3d3128": "161526", - "67615b": "2d2b40", - "615140": "4c7a68", - "7e6d5a": "72b692", - "554538": "305a4f", - "beb8b6": "d4b3d7", - "efeded": "ffeffe", - "0e5d58": "363e6c", - "0d8374": "6885b6", - "09a77c": "96d5e3", - "c16a3f": "612c6b", - "a8905c": "854d87", - "c6b379": "9f5f9b" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/692.json b/public/images/pokemon/variant/exp/692.json deleted file mode 100644 index 954dcffb3e9..00000000000 --- a/public/images/pokemon/variant/exp/692.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "1": { - "b3f2ff": "fada7f", - "44a2b4": "af6a37", - "2f7280": "783a1d", - "cd9d3a": "53be53", - "575757": "c85b5b", - "72561c": "20734c", - "60dbf2": "e1ac53", - "b4b4b4": "c8ba6d", - "3d3d3d": "7d182d", - "ffc549": "a9f076" - }, - "2": { - "b3f2ff": "faf8d7", - "44a2b4": "968144", - "2f7280": "5f3c23", - "cd9d3a": "7743be", - "575757": "88cd56", - "72561c": "371c72", - "60dbf2": "e1d6b6", - "b4b4b4": "68a7aa", - "3d3d3d": "1c873e", - "ffc549": "a36feb" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/693.json b/public/images/pokemon/variant/exp/693.json deleted file mode 100644 index 2e80795d2a0..00000000000 --- a/public/images/pokemon/variant/exp/693.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "1": { - "23a2c8": "c87a23", - "ffc859": "6ccd80", - "224b73": "552813", - "404040": "3c171b", - "262626": "230808", - "5f5f5f": "6e2e3b", - "cc9c3d": "1b3c17", - "61daf2": "f2bd61", - "735822": "08230e", - "3674b3": "7d3e21", - "ffc44c": "426e2e", - "4595e5": "aa6839" - }, - "2": { - "23a2c8": "beb099", - "ffc859": "f5b281", - "224b73": "5f463a", - "404040": "2a8c53", - "262626": "295a1c", - "5f5f5f": "51c85d", - "cc9c3d": "6259af", - "61daf2": "f0eadb", - "735822": "36235f", - "3674b3": "9b8265", - "ffc44c": "a39afa", - "4595e5": "c8b493" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/696_2.png b/public/images/pokemon/variant/exp/696_2.png index cfc40b59d39..acdcca35202 100644 Binary files a/public/images/pokemon/variant/exp/696_2.png and b/public/images/pokemon/variant/exp/696_2.png differ diff --git a/public/images/pokemon/variant/exp/696_3.png b/public/images/pokemon/variant/exp/696_3.png index 647aba679f6..f90752cab83 100644 Binary files a/public/images/pokemon/variant/exp/696_3.png and b/public/images/pokemon/variant/exp/696_3.png differ diff --git a/public/images/pokemon/variant/exp/697_3.png b/public/images/pokemon/variant/exp/697_3.png index b18579c9494..94ebf508b2d 100644 Binary files a/public/images/pokemon/variant/exp/697_3.png and b/public/images/pokemon/variant/exp/697_3.png differ diff --git a/public/images/pokemon/variant/exp/715_2.png b/public/images/pokemon/variant/exp/715_2.png index 22fb386440a..a2c901e5cb6 100644 Binary files a/public/images/pokemon/variant/exp/715_2.png and b/public/images/pokemon/variant/exp/715_2.png differ diff --git a/public/images/pokemon/variant/exp/717_2.png b/public/images/pokemon/variant/exp/717_2.png index 3e11dfa8837..723158970b7 100644 Binary files a/public/images/pokemon/variant/exp/717_2.png and b/public/images/pokemon/variant/exp/717_2.png differ diff --git a/public/images/pokemon/variant/exp/717_3.png b/public/images/pokemon/variant/exp/717_3.png index e39ddfc55d0..5c47fb19dfe 100644 Binary files a/public/images/pokemon/variant/exp/717_3.png and b/public/images/pokemon/variant/exp/717_3.png differ diff --git a/public/images/pokemon/variant/exp/742_2.png b/public/images/pokemon/variant/exp/742_2.png index d4495c7b805..a03d4a25416 100644 Binary files a/public/images/pokemon/variant/exp/742_2.png and b/public/images/pokemon/variant/exp/742_2.png differ diff --git a/public/images/pokemon/variant/exp/742_3.png b/public/images/pokemon/variant/exp/742_3.png index 8d55c3263b0..e6ba3a959a7 100644 Binary files a/public/images/pokemon/variant/exp/742_3.png and b/public/images/pokemon/variant/exp/742_3.png differ diff --git a/public/images/pokemon/variant/exp/743_2.png b/public/images/pokemon/variant/exp/743_2.png index 6236408f2ca..75aa1623d0a 100644 Binary files a/public/images/pokemon/variant/exp/743_2.png and b/public/images/pokemon/variant/exp/743_2.png differ diff --git a/public/images/pokemon/variant/exp/743_3.png b/public/images/pokemon/variant/exp/743_3.png index 2759946a0fd..145e6ec727f 100644 Binary files a/public/images/pokemon/variant/exp/743_3.png and b/public/images/pokemon/variant/exp/743_3.png differ diff --git a/public/images/pokemon/variant/exp/747_2.png b/public/images/pokemon/variant/exp/747_2.png index 5afb5dbe45e..3f102db96ff 100644 Binary files a/public/images/pokemon/variant/exp/747_2.png and b/public/images/pokemon/variant/exp/747_2.png differ diff --git a/public/images/pokemon/variant/exp/747_3.png b/public/images/pokemon/variant/exp/747_3.png index ceb750efe0c..dc79d47127b 100644 Binary files a/public/images/pokemon/variant/exp/747_3.png and b/public/images/pokemon/variant/exp/747_3.png differ diff --git a/public/images/pokemon/variant/exp/753.json b/public/images/pokemon/variant/exp/753.json deleted file mode 100644 index d6ffc97c2da..00000000000 --- a/public/images/pokemon/variant/exp/753.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "1": { - "234028": "2e1643", - "468050": "3e2253", - "5ba668": "4e2c62", - "315945": "0e2616", - "69bf94": "27452c", - "549977": "1b3822", - "98d9b8": "48644d", - "803340": "682c16", - "ffbfca": "b47145", - "d98d9a": "a55c36", - "ff667f": "ffb862", - "f8f8f8": "eff7e2", - "cc5266": "ee9143" - }, - "2": { - "234028": "812255", - "468050": "ad3a87", - "5ba668": "ce54b0", - "315945": "441342", - "69bf94": "6e3472", - "549977": "5a215a", - "98d9b8": "a061a0", - "803340": "0b1d4e", - "ffbfca": "3454a5", - "d98d9a": "263b83", - "ff667f": "62b4f6", - "f8f8f8": "ffe9ff", - "cc5266": "428ee1" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/754_2.json b/public/images/pokemon/variant/exp/754_2.json deleted file mode 100644 index 5fcde58d92d..00000000000 --- a/public/images/pokemon/variant/exp/754_2.json +++ /dev/null @@ -1,1133 +0,0 @@ -{ - "textures": [ - { - "image": "754_2.png", - "format": "RGBA8888", - "size": { - "w": 234, - "h": 234 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f79fcee4451cea6aad915f561b31bf78:95fdb55190edb6ce0d5847a4e46b4d5c:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/754_2.png b/public/images/pokemon/variant/exp/754_2.png deleted file mode 100644 index c1c55966656..00000000000 Binary files a/public/images/pokemon/variant/exp/754_2.png and /dev/null differ diff --git a/public/images/pokemon/variant/exp/754_3.json b/public/images/pokemon/variant/exp/754_3.json deleted file mode 100644 index ce40f9a8231..00000000000 --- a/public/images/pokemon/variant/exp/754_3.json +++ /dev/null @@ -1,1133 +0,0 @@ -{ - "textures": [ - { - "image": "754_3.png", - "format": "RGBA8888", - "size": { - "w": 234, - "h": 234 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 0, - "w": 93, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 0, - "w": 48, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 93, - "h": 68 - }, - "frame": { - "x": 93, - "y": 68, - "w": 93, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 186, - "y": 68, - "w": 48, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 85, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 85, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 85, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 133, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 93, - "h": 68 - }, - "spriteSourceSize": { - "x": 23, - "y": 0, - "w": 48, - "h": 68 - }, - "frame": { - "x": 181, - "y": 136, - "w": 48, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f79fcee4451cea6aad915f561b31bf78:95fdb55190edb6ce0d5847a4e46b4d5c:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/754_3.png b/public/images/pokemon/variant/exp/754_3.png deleted file mode 100644 index dca99a4eb83..00000000000 Binary files a/public/images/pokemon/variant/exp/754_3.png and /dev/null differ diff --git a/public/images/pokemon/variant/exp/771_2.png b/public/images/pokemon/variant/exp/771_2.png index f2059e6a8eb..8fd1bad2dd9 100644 Binary files a/public/images/pokemon/variant/exp/771_2.png and b/public/images/pokemon/variant/exp/771_2.png differ diff --git a/public/images/pokemon/variant/exp/771_3.png b/public/images/pokemon/variant/exp/771_3.png index 9016079d1cb..eb4765b399e 100644 Binary files a/public/images/pokemon/variant/exp/771_3.png and b/public/images/pokemon/variant/exp/771_3.png differ diff --git a/public/images/pokemon/variant/exp/791_1.png b/public/images/pokemon/variant/exp/791_1.png index 4d5f210ec9f..15372486ff2 100644 Binary files a/public/images/pokemon/variant/exp/791_1.png and b/public/images/pokemon/variant/exp/791_1.png differ diff --git a/public/images/pokemon/variant/exp/793_2.png b/public/images/pokemon/variant/exp/793_2.png index 13f22cffdda..64243f647d8 100644 Binary files a/public/images/pokemon/variant/exp/793_2.png and b/public/images/pokemon/variant/exp/793_2.png differ diff --git a/public/images/pokemon/variant/exp/793_3.png b/public/images/pokemon/variant/exp/793_3.png index 137cdd97d6d..edf5106115d 100644 Binary files a/public/images/pokemon/variant/exp/793_3.png and b/public/images/pokemon/variant/exp/793_3.png differ diff --git a/public/images/pokemon/variant/exp/821_2.png b/public/images/pokemon/variant/exp/821_2.png index 84bb53c19ff..cfcac3717f4 100644 Binary files a/public/images/pokemon/variant/exp/821_2.png and b/public/images/pokemon/variant/exp/821_2.png differ diff --git a/public/images/pokemon/variant/exp/821_3.png b/public/images/pokemon/variant/exp/821_3.png index eab0bca889f..2269253c72d 100644 Binary files a/public/images/pokemon/variant/exp/821_3.png and b/public/images/pokemon/variant/exp/821_3.png differ diff --git a/public/images/pokemon/variant/exp/836_2.png b/public/images/pokemon/variant/exp/836_2.png index 2961e1015a9..fb44e5705e0 100644 Binary files a/public/images/pokemon/variant/exp/836_2.png and b/public/images/pokemon/variant/exp/836_2.png differ diff --git a/public/images/pokemon/variant/exp/836_3.png b/public/images/pokemon/variant/exp/836_3.png index a48d218ed98..5ef85a12ce4 100644 Binary files a/public/images/pokemon/variant/exp/836_3.png and b/public/images/pokemon/variant/exp/836_3.png differ diff --git a/public/images/pokemon/variant/exp/857_2.png b/public/images/pokemon/variant/exp/857_2.png index c98f602a8e5..bd2586cb25c 100644 Binary files a/public/images/pokemon/variant/exp/857_2.png and b/public/images/pokemon/variant/exp/857_2.png differ diff --git a/public/images/pokemon/variant/exp/857_3.png b/public/images/pokemon/variant/exp/857_3.png index 1b5f73c35de..36865b37901 100644 Binary files a/public/images/pokemon/variant/exp/857_3.png and b/public/images/pokemon/variant/exp/857_3.png differ diff --git a/public/images/pokemon/variant/exp/862_2.png b/public/images/pokemon/variant/exp/862_2.png index d97613e5e89..f3232190cd3 100644 Binary files a/public/images/pokemon/variant/exp/862_2.png and b/public/images/pokemon/variant/exp/862_2.png differ diff --git a/public/images/pokemon/variant/exp/862_3.png b/public/images/pokemon/variant/exp/862_3.png index 9f6857d961a..90c239da10a 100644 Binary files a/public/images/pokemon/variant/exp/862_3.png and b/public/images/pokemon/variant/exp/862_3.png differ diff --git a/public/images/pokemon/variant/exp/882_2.png b/public/images/pokemon/variant/exp/882_2.png index fa0c3825cc1..9881699aa29 100644 Binary files a/public/images/pokemon/variant/exp/882_2.png and b/public/images/pokemon/variant/exp/882_2.png differ diff --git a/public/images/pokemon/variant/exp/890-eternamax_2.png b/public/images/pokemon/variant/exp/890-eternamax_2.png index 2327900b971..2a026cdc330 100644 Binary files a/public/images/pokemon/variant/exp/890-eternamax_2.png and b/public/images/pokemon/variant/exp/890-eternamax_2.png differ diff --git a/public/images/pokemon/variant/exp/890-eternamax_3.png b/public/images/pokemon/variant/exp/890-eternamax_3.png index 140837cfbd0..b90c8f86f6e 100644 Binary files a/public/images/pokemon/variant/exp/890-eternamax_3.png and b/public/images/pokemon/variant/exp/890-eternamax_3.png differ diff --git a/public/images/pokemon/variant/exp/890_2.png b/public/images/pokemon/variant/exp/890_2.png index 2412e5f95d9..f17e055c17f 100644 Binary files a/public/images/pokemon/variant/exp/890_2.png and b/public/images/pokemon/variant/exp/890_2.png differ diff --git a/public/images/pokemon/variant/exp/890_3.png b/public/images/pokemon/variant/exp/890_3.png index 855b646e514..c9de7a07e90 100644 Binary files a/public/images/pokemon/variant/exp/890_3.png and b/public/images/pokemon/variant/exp/890_3.png differ diff --git a/public/images/pokemon/variant/exp/9-mega_2.png b/public/images/pokemon/variant/exp/9-mega_2.png index 0a56f1a3a68..02849001acf 100644 Binary files a/public/images/pokemon/variant/exp/9-mega_2.png and b/public/images/pokemon/variant/exp/9-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/9-mega_3.png b/public/images/pokemon/variant/exp/9-mega_3.png index 606f18d6337..4556f93b5f9 100644 Binary files a/public/images/pokemon/variant/exp/9-mega_3.png and b/public/images/pokemon/variant/exp/9-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/910_2.png b/public/images/pokemon/variant/exp/910_2.png index 751585f5b0b..4acfb50e6e2 100644 Binary files a/public/images/pokemon/variant/exp/910_2.png and b/public/images/pokemon/variant/exp/910_2.png differ diff --git a/public/images/pokemon/variant/exp/910_3.png b/public/images/pokemon/variant/exp/910_3.png index 39b728c4350..74856ae6aaf 100644 Binary files a/public/images/pokemon/variant/exp/910_3.png and b/public/images/pokemon/variant/exp/910_3.png differ diff --git a/public/images/pokemon/variant/exp/911_2.png b/public/images/pokemon/variant/exp/911_2.png index af9f0237ccf..983f9f7cbfe 100644 Binary files a/public/images/pokemon/variant/exp/911_2.png and b/public/images/pokemon/variant/exp/911_2.png differ diff --git a/public/images/pokemon/variant/exp/911_3.png b/public/images/pokemon/variant/exp/911_3.png index 4280cbdc4a3..b604fa7e20a 100644 Binary files a/public/images/pokemon/variant/exp/911_3.png and b/public/images/pokemon/variant/exp/911_3.png differ diff --git a/public/images/pokemon/variant/exp/912_3.png b/public/images/pokemon/variant/exp/912_3.png index 211af0da412..e9f80d3ba05 100644 Binary files a/public/images/pokemon/variant/exp/912_3.png and b/public/images/pokemon/variant/exp/912_3.png differ diff --git a/public/images/pokemon/variant/exp/913_3.png b/public/images/pokemon/variant/exp/913_3.png index f18a8e917eb..26efc815fb1 100644 Binary files a/public/images/pokemon/variant/exp/913_3.png and b/public/images/pokemon/variant/exp/913_3.png differ diff --git a/public/images/pokemon/variant/exp/914_2.png b/public/images/pokemon/variant/exp/914_2.png index 66aa120f002..b84759c3533 100644 Binary files a/public/images/pokemon/variant/exp/914_2.png and b/public/images/pokemon/variant/exp/914_2.png differ diff --git a/public/images/pokemon/variant/exp/925-four_2.png b/public/images/pokemon/variant/exp/925-four_2.png index 3a2f00f0606..d2174e49813 100644 Binary files a/public/images/pokemon/variant/exp/925-four_2.png and b/public/images/pokemon/variant/exp/925-four_2.png differ diff --git a/public/images/pokemon/variant/exp/925-four_3.png b/public/images/pokemon/variant/exp/925-four_3.png index 51496f55c18..ef904d251ad 100644 Binary files a/public/images/pokemon/variant/exp/925-four_3.png and b/public/images/pokemon/variant/exp/925-four_3.png differ diff --git a/public/images/pokemon/variant/exp/925-three_2.png b/public/images/pokemon/variant/exp/925-three_2.png index f571d24f033..639ab5b4b3e 100644 Binary files a/public/images/pokemon/variant/exp/925-three_2.png and b/public/images/pokemon/variant/exp/925-three_2.png differ diff --git a/public/images/pokemon/variant/exp/925-three_3.png b/public/images/pokemon/variant/exp/925-three_3.png index e6c54ceb519..f93b464a69f 100644 Binary files a/public/images/pokemon/variant/exp/925-three_3.png and b/public/images/pokemon/variant/exp/925-three_3.png differ diff --git a/public/images/pokemon/variant/exp/932_2.png b/public/images/pokemon/variant/exp/932_2.png index a2a7cf26909..eb92215dc9f 100644 Binary files a/public/images/pokemon/variant/exp/932_2.png and b/public/images/pokemon/variant/exp/932_2.png differ diff --git a/public/images/pokemon/variant/exp/932_3.png b/public/images/pokemon/variant/exp/932_3.png index 9b845de8fd5..4ad7de74185 100644 Binary files a/public/images/pokemon/variant/exp/932_3.png and b/public/images/pokemon/variant/exp/932_3.png differ diff --git a/public/images/pokemon/variant/exp/933_2.png b/public/images/pokemon/variant/exp/933_2.png index 3e115896399..e4f337df3e1 100644 Binary files a/public/images/pokemon/variant/exp/933_2.png and b/public/images/pokemon/variant/exp/933_2.png differ diff --git a/public/images/pokemon/variant/exp/933_3.png b/public/images/pokemon/variant/exp/933_3.png index cda8be4d809..77be2a0d98d 100644 Binary files a/public/images/pokemon/variant/exp/933_3.png and b/public/images/pokemon/variant/exp/933_3.png differ diff --git a/public/images/pokemon/variant/exp/94-mega_1.png b/public/images/pokemon/variant/exp/94-mega_1.png index 78787902b23..7c886b40387 100644 Binary files a/public/images/pokemon/variant/exp/94-mega_1.png and b/public/images/pokemon/variant/exp/94-mega_1.png differ diff --git a/public/images/pokemon/variant/exp/94-mega_2.png b/public/images/pokemon/variant/exp/94-mega_2.png index c4ac996ff52..5bff0995347 100644 Binary files a/public/images/pokemon/variant/exp/94-mega_2.png and b/public/images/pokemon/variant/exp/94-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/94-mega_3.png b/public/images/pokemon/variant/exp/94-mega_3.png index f63c504e903..aae24f39c11 100644 Binary files a/public/images/pokemon/variant/exp/94-mega_3.png and b/public/images/pokemon/variant/exp/94-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/957_1.png b/public/images/pokemon/variant/exp/957_1.png index 3ef21133d5b..7a3877dd2ce 100644 Binary files a/public/images/pokemon/variant/exp/957_1.png and b/public/images/pokemon/variant/exp/957_1.png differ diff --git a/public/images/pokemon/variant/exp/957_2.png b/public/images/pokemon/variant/exp/957_2.png index bcbda607c84..180ac7e4231 100644 Binary files a/public/images/pokemon/variant/exp/957_2.png and b/public/images/pokemon/variant/exp/957_2.png differ diff --git a/public/images/pokemon/variant/exp/957_3.png b/public/images/pokemon/variant/exp/957_3.png index 0fd77b6f303..e6b9bdfe86a 100644 Binary files a/public/images/pokemon/variant/exp/957_3.png and b/public/images/pokemon/variant/exp/957_3.png differ diff --git a/public/images/pokemon/variant/exp/958_1.png b/public/images/pokemon/variant/exp/958_1.png index 2844e693f49..9c2a8d8f26f 100644 Binary files a/public/images/pokemon/variant/exp/958_1.png and b/public/images/pokemon/variant/exp/958_1.png differ diff --git a/public/images/pokemon/variant/exp/958_2.png b/public/images/pokemon/variant/exp/958_2.png index b52f25ffa84..830105f07bd 100644 Binary files a/public/images/pokemon/variant/exp/958_2.png and b/public/images/pokemon/variant/exp/958_2.png differ diff --git a/public/images/pokemon/variant/exp/958_3.png b/public/images/pokemon/variant/exp/958_3.png index 96caa401b3d..940936f54c2 100644 Binary files a/public/images/pokemon/variant/exp/958_3.png and b/public/images/pokemon/variant/exp/958_3.png differ diff --git a/public/images/pokemon/variant/exp/959_1.png b/public/images/pokemon/variant/exp/959_1.png index ab9e9b8ee93..7400414402c 100644 Binary files a/public/images/pokemon/variant/exp/959_1.png and b/public/images/pokemon/variant/exp/959_1.png differ diff --git a/public/images/pokemon/variant/exp/959_2.png b/public/images/pokemon/variant/exp/959_2.png index 53c126d0746..cbfc70b0ce8 100644 Binary files a/public/images/pokemon/variant/exp/959_2.png and b/public/images/pokemon/variant/exp/959_2.png differ diff --git a/public/images/pokemon/variant/exp/959_3.png b/public/images/pokemon/variant/exp/959_3.png index c348d8224fc..3f049ff95e6 100644 Binary files a/public/images/pokemon/variant/exp/959_3.png and b/public/images/pokemon/variant/exp/959_3.png differ diff --git a/public/images/pokemon/variant/exp/970_2.png b/public/images/pokemon/variant/exp/970_2.png index e7a046c2d7f..70815e8b78f 100644 Binary files a/public/images/pokemon/variant/exp/970_2.png and b/public/images/pokemon/variant/exp/970_2.png differ diff --git a/public/images/pokemon/variant/exp/970_3.png b/public/images/pokemon/variant/exp/970_3.png index 213268b4d44..266c092076e 100644 Binary files a/public/images/pokemon/variant/exp/970_3.png and b/public/images/pokemon/variant/exp/970_3.png differ diff --git a/public/images/pokemon/variant/exp/978-curly_2.png b/public/images/pokemon/variant/exp/978-curly_2.png index 800d4b3ee48..d9f9f5969bd 100644 Binary files a/public/images/pokemon/variant/exp/978-curly_2.png and b/public/images/pokemon/variant/exp/978-curly_2.png differ diff --git a/public/images/pokemon/variant/exp/978-curly_3.png b/public/images/pokemon/variant/exp/978-curly_3.png index 0625741b052..7ea68b39ded 100644 Binary files a/public/images/pokemon/variant/exp/978-curly_3.png and b/public/images/pokemon/variant/exp/978-curly_3.png differ diff --git a/public/images/pokemon/variant/exp/978-droopy_2.png b/public/images/pokemon/variant/exp/978-droopy_2.png index 3ece2e41e47..32ca0db5b62 100644 Binary files a/public/images/pokemon/variant/exp/978-droopy_2.png and b/public/images/pokemon/variant/exp/978-droopy_2.png differ diff --git a/public/images/pokemon/variant/exp/978-droopy_3.png b/public/images/pokemon/variant/exp/978-droopy_3.png index f1134506f3b..8ef862e42c9 100644 Binary files a/public/images/pokemon/variant/exp/978-droopy_3.png and b/public/images/pokemon/variant/exp/978-droopy_3.png differ diff --git a/public/images/pokemon/variant/exp/978-stretchy_2.png b/public/images/pokemon/variant/exp/978-stretchy_2.png index 62d37a3e66a..8ce9b778d54 100644 Binary files a/public/images/pokemon/variant/exp/978-stretchy_2.png and b/public/images/pokemon/variant/exp/978-stretchy_2.png differ diff --git a/public/images/pokemon/variant/exp/978-stretchy_3.png b/public/images/pokemon/variant/exp/978-stretchy_3.png index 608ec2697cc..7399c823789 100644 Binary files a/public/images/pokemon/variant/exp/978-stretchy_3.png and b/public/images/pokemon/variant/exp/978-stretchy_3.png differ diff --git a/public/images/pokemon/variant/exp/979_1.png b/public/images/pokemon/variant/exp/979_1.png index 89c3a37d4aa..9516e6b566a 100644 Binary files a/public/images/pokemon/variant/exp/979_1.png and b/public/images/pokemon/variant/exp/979_1.png differ diff --git a/public/images/pokemon/variant/exp/979_2.png b/public/images/pokemon/variant/exp/979_2.png index 788de4b089d..fbae9eaa11a 100644 Binary files a/public/images/pokemon/variant/exp/979_2.png and b/public/images/pokemon/variant/exp/979_2.png differ diff --git a/public/images/pokemon/variant/exp/979_3.png b/public/images/pokemon/variant/exp/979_3.png index b0e6826c6c1..381df3f9de9 100644 Binary files a/public/images/pokemon/variant/exp/979_3.png and b/public/images/pokemon/variant/exp/979_3.png differ diff --git a/public/images/pokemon/variant/exp/988_3.png b/public/images/pokemon/variant/exp/988_3.png index 71d8d6c72eb..05eb4e6279c 100644 Binary files a/public/images/pokemon/variant/exp/988_3.png and b/public/images/pokemon/variant/exp/988_3.png differ diff --git a/public/images/pokemon/variant/exp/994_3.png b/public/images/pokemon/variant/exp/994_3.png index abd17460bc7..d328c086c15 100644 Binary files a/public/images/pokemon/variant/exp/994_3.png and b/public/images/pokemon/variant/exp/994_3.png differ diff --git a/public/images/pokemon/variant/exp/997_2.png b/public/images/pokemon/variant/exp/997_2.png index 6c61c142d9a..730051209f5 100644 Binary files a/public/images/pokemon/variant/exp/997_2.png and b/public/images/pokemon/variant/exp/997_2.png differ diff --git a/public/images/pokemon/variant/exp/997_3.png b/public/images/pokemon/variant/exp/997_3.png index c25719e15c7..46940074547 100644 Binary files a/public/images/pokemon/variant/exp/997_3.png and b/public/images/pokemon/variant/exp/997_3.png differ diff --git a/public/images/pokemon/variant/exp/998_2.png b/public/images/pokemon/variant/exp/998_2.png index ec371e4d986..e0f1858c583 100644 Binary files a/public/images/pokemon/variant/exp/998_2.png and b/public/images/pokemon/variant/exp/998_2.png differ diff --git a/public/images/pokemon/variant/exp/998_3.png b/public/images/pokemon/variant/exp/998_3.png index 92db876caad..c9fe2d20bc4 100644 Binary files a/public/images/pokemon/variant/exp/998_3.png and b/public/images/pokemon/variant/exp/998_3.png differ diff --git a/public/images/pokemon/variant/exp/999_1.png b/public/images/pokemon/variant/exp/999_1.png index df33c59f607..3cfea43f627 100644 Binary files a/public/images/pokemon/variant/exp/999_1.png and b/public/images/pokemon/variant/exp/999_1.png differ diff --git a/public/images/pokemon/variant/exp/back/1006_2.png b/public/images/pokemon/variant/exp/back/1006_2.png index 814e1460081..638ec93d7d6 100644 Binary files a/public/images/pokemon/variant/exp/back/1006_2.png and b/public/images/pokemon/variant/exp/back/1006_2.png differ diff --git a/public/images/pokemon/variant/exp/back/1006_3.png b/public/images/pokemon/variant/exp/back/1006_3.png index c5bb5104666..1c8edf6e911 100644 Binary files a/public/images/pokemon/variant/exp/back/1006_3.png and b/public/images/pokemon/variant/exp/back/1006_3.png differ diff --git a/public/images/pokemon/variant/exp/back/1007-apex-build_2.png b/public/images/pokemon/variant/exp/back/1007-apex-build_2.png index 62ba839d0dd..26863e4fe90 100644 Binary files a/public/images/pokemon/variant/exp/back/1007-apex-build_2.png and b/public/images/pokemon/variant/exp/back/1007-apex-build_2.png differ diff --git a/public/images/pokemon/variant/exp/back/1007-apex-build_3.png b/public/images/pokemon/variant/exp/back/1007-apex-build_3.png index 8f0095e08ba..655f6521fc1 100644 Binary files a/public/images/pokemon/variant/exp/back/1007-apex-build_3.png and b/public/images/pokemon/variant/exp/back/1007-apex-build_3.png differ diff --git a/public/images/pokemon/variant/exp/back/181-mega_3.png b/public/images/pokemon/variant/exp/back/181-mega_3.png index 771ce25a0da..0f60d6786b3 100644 Binary files a/public/images/pokemon/variant/exp/back/181-mega_3.png and b/public/images/pokemon/variant/exp/back/181-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/back/212-mega_2.png b/public/images/pokemon/variant/exp/back/212-mega_2.png index 877ede02ad4..91855e7fbcb 100644 Binary files a/public/images/pokemon/variant/exp/back/212-mega_2.png and b/public/images/pokemon/variant/exp/back/212-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/back/212-mega_3.png b/public/images/pokemon/variant/exp/back/212-mega_3.png index 68db47ab830..d526b5d1e41 100644 Binary files a/public/images/pokemon/variant/exp/back/212-mega_3.png and b/public/images/pokemon/variant/exp/back/212-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/back/282-mega_2.png b/public/images/pokemon/variant/exp/back/282-mega_2.png index 93a94a341b4..4c816857237 100644 Binary files a/public/images/pokemon/variant/exp/back/282-mega_2.png and b/public/images/pokemon/variant/exp/back/282-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/back/282-mega_3.png b/public/images/pokemon/variant/exp/back/282-mega_3.png index 1fdb242d937..ab9ef4871f6 100644 Binary files a/public/images/pokemon/variant/exp/back/282-mega_3.png and b/public/images/pokemon/variant/exp/back/282-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/back/3-mega_2.png b/public/images/pokemon/variant/exp/back/3-mega_2.png index 777f4d0bca5..256a0e995b8 100644 Binary files a/public/images/pokemon/variant/exp/back/3-mega_2.png and b/public/images/pokemon/variant/exp/back/3-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/back/3-mega_3.png b/public/images/pokemon/variant/exp/back/3-mega_3.png index 4684c989e3d..db797133022 100644 Binary files a/public/images/pokemon/variant/exp/back/3-mega_3.png and b/public/images/pokemon/variant/exp/back/3-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/back/4080_1.png b/public/images/pokemon/variant/exp/back/4080_1.png index 2bed3a5b4c1..75ee818c573 100644 Binary files a/public/images/pokemon/variant/exp/back/4080_1.png and b/public/images/pokemon/variant/exp/back/4080_1.png differ diff --git a/public/images/pokemon/variant/exp/back/4080_2.png b/public/images/pokemon/variant/exp/back/4080_2.png index e0fa30094cf..c967d74141a 100644 Binary files a/public/images/pokemon/variant/exp/back/4080_2.png and b/public/images/pokemon/variant/exp/back/4080_2.png differ diff --git a/public/images/pokemon/variant/exp/back/4080_3.png b/public/images/pokemon/variant/exp/back/4080_3.png index ed11f7ab90c..61e97387987 100644 Binary files a/public/images/pokemon/variant/exp/back/4080_3.png and b/public/images/pokemon/variant/exp/back/4080_3.png differ diff --git a/public/images/pokemon/variant/exp/back/4199_1.png b/public/images/pokemon/variant/exp/back/4199_1.png index eb658cc2171..a3eb9e9bb15 100644 Binary files a/public/images/pokemon/variant/exp/back/4199_1.png and b/public/images/pokemon/variant/exp/back/4199_1.png differ diff --git a/public/images/pokemon/variant/exp/back/475-mega_2.png b/public/images/pokemon/variant/exp/back/475-mega_2.png index 2dd2c6c25bf..f5c979d05e0 100644 Binary files a/public/images/pokemon/variant/exp/back/475-mega_2.png and b/public/images/pokemon/variant/exp/back/475-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/back/475-mega_3.png b/public/images/pokemon/variant/exp/back/475-mega_3.png index 2992c010d0b..8b4cc00ed5c 100644 Binary files a/public/images/pokemon/variant/exp/back/475-mega_3.png and b/public/images/pokemon/variant/exp/back/475-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/back/6-mega-x_2.png b/public/images/pokemon/variant/exp/back/6-mega-x_2.png index 2ce28df44c3..3a0face4864 100644 Binary files a/public/images/pokemon/variant/exp/back/6-mega-x_2.png and b/public/images/pokemon/variant/exp/back/6-mega-x_2.png differ diff --git a/public/images/pokemon/variant/exp/back/6-mega-x_3.png b/public/images/pokemon/variant/exp/back/6-mega-x_3.png index 480e3deed3f..7398537b709 100644 Binary files a/public/images/pokemon/variant/exp/back/6-mega-x_3.png and b/public/images/pokemon/variant/exp/back/6-mega-x_3.png differ diff --git a/public/images/pokemon/variant/exp/back/6-mega-y_3.png b/public/images/pokemon/variant/exp/back/6-mega-y_3.png index c78835fa2be..d2e17077b41 100644 Binary files a/public/images/pokemon/variant/exp/back/6-mega-y_3.png and b/public/images/pokemon/variant/exp/back/6-mega-y_3.png differ diff --git a/public/images/pokemon/variant/exp/back/665_2.png b/public/images/pokemon/variant/exp/back/665_2.png index 83762b9392c..eaa5495bb79 100644 Binary files a/public/images/pokemon/variant/exp/back/665_2.png and b/public/images/pokemon/variant/exp/back/665_2.png differ diff --git a/public/images/pokemon/variant/exp/back/669-blue_2.png b/public/images/pokemon/variant/exp/back/669-blue_2.png index 303e7005e86..22358b82c27 100644 Binary files a/public/images/pokemon/variant/exp/back/669-blue_2.png and b/public/images/pokemon/variant/exp/back/669-blue_2.png differ diff --git a/public/images/pokemon/variant/exp/back/669-blue_3.png b/public/images/pokemon/variant/exp/back/669-blue_3.png index fd0bc4299e9..8382007addc 100644 Binary files a/public/images/pokemon/variant/exp/back/669-blue_3.png and b/public/images/pokemon/variant/exp/back/669-blue_3.png differ diff --git a/public/images/pokemon/variant/exp/back/669-orange_2.png b/public/images/pokemon/variant/exp/back/669-orange_2.png index bc2fecc2169..e2dc9068664 100644 Binary files a/public/images/pokemon/variant/exp/back/669-orange_2.png and b/public/images/pokemon/variant/exp/back/669-orange_2.png differ diff --git a/public/images/pokemon/variant/exp/back/669-orange_3.png b/public/images/pokemon/variant/exp/back/669-orange_3.png index 0e47ec26347..397faab6642 100644 Binary files a/public/images/pokemon/variant/exp/back/669-orange_3.png and b/public/images/pokemon/variant/exp/back/669-orange_3.png differ diff --git a/public/images/pokemon/variant/exp/back/669-red_2.png b/public/images/pokemon/variant/exp/back/669-red_2.png index 32e67fc83b1..1edac44ef0c 100644 Binary files a/public/images/pokemon/variant/exp/back/669-red_2.png and b/public/images/pokemon/variant/exp/back/669-red_2.png differ diff --git a/public/images/pokemon/variant/exp/back/669-red_3.png b/public/images/pokemon/variant/exp/back/669-red_3.png index 964365c2d64..ad7d48d38a8 100644 Binary files a/public/images/pokemon/variant/exp/back/669-red_3.png and b/public/images/pokemon/variant/exp/back/669-red_3.png differ diff --git a/public/images/pokemon/variant/exp/back/669-white_2.png b/public/images/pokemon/variant/exp/back/669-white_2.png index 1adb148eaa4..815fc96a772 100644 Binary files a/public/images/pokemon/variant/exp/back/669-white_2.png and b/public/images/pokemon/variant/exp/back/669-white_2.png differ diff --git a/public/images/pokemon/variant/exp/back/669-white_3.png b/public/images/pokemon/variant/exp/back/669-white_3.png index dfe0a2c8441..cceb5249bfa 100644 Binary files a/public/images/pokemon/variant/exp/back/669-white_3.png and b/public/images/pokemon/variant/exp/back/669-white_3.png differ diff --git a/public/images/pokemon/variant/exp/back/669-yellow_2.png b/public/images/pokemon/variant/exp/back/669-yellow_2.png index aab9fbd4e81..94163759996 100644 Binary files a/public/images/pokemon/variant/exp/back/669-yellow_2.png and b/public/images/pokemon/variant/exp/back/669-yellow_2.png differ diff --git a/public/images/pokemon/variant/exp/back/669-yellow_3.png b/public/images/pokemon/variant/exp/back/669-yellow_3.png index d5ae155327f..7edfa5db82b 100644 Binary files a/public/images/pokemon/variant/exp/back/669-yellow_3.png and b/public/images/pokemon/variant/exp/back/669-yellow_3.png differ diff --git a/public/images/pokemon/variant/exp/back/670-blue_2.png b/public/images/pokemon/variant/exp/back/670-blue_2.png index c26ec8469e2..227b42b8ae9 100644 Binary files a/public/images/pokemon/variant/exp/back/670-blue_2.png and b/public/images/pokemon/variant/exp/back/670-blue_2.png differ diff --git a/public/images/pokemon/variant/exp/back/670-blue_3.png b/public/images/pokemon/variant/exp/back/670-blue_3.png index f725df5f1ab..9f1d2e6da35 100644 Binary files a/public/images/pokemon/variant/exp/back/670-blue_3.png and b/public/images/pokemon/variant/exp/back/670-blue_3.png differ diff --git a/public/images/pokemon/variant/exp/back/672.json b/public/images/pokemon/variant/exp/back/672.json deleted file mode 100644 index c118d603d57..00000000000 --- a/public/images/pokemon/variant/exp/back/672.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "1": { - "3d3128": "69112a", - "67615b": "9e2c3d", - "615140": "89431b", - "7e6d5a": "b3743e", - "554538": "642509", - "efeded": "f8e2b7", - "beb8b6": "e3a378", - "0e5d58": "8c6859", - "09a77c": "f8f0e2", - "0d8374": "d2af94", - "c16a3f": "321512", - "c6b379": "552d30", - "a8905c": "4b2525" - }, - "2": { - "3d3128": "161526", - "67615b": "2d2b40", - "615140": "4c7a68", - "7e6d5a": "72b692", - "554538": "305a4f", - "efeded": "ffeffe", - "beb8b6": "d4b3d7", - "0e5d58": "363e6c", - "09a77c": "96d5e3", - "0d8374": "6885b6", - "c16a3f": "612c6b", - "c6b379": "9f5f9b", - "a8905c": "854d87" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/692.json b/public/images/pokemon/variant/exp/back/692.json deleted file mode 100644 index d4c85f37c9d..00000000000 --- a/public/images/pokemon/variant/exp/back/692.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "1": { - "337380": "783a1d", - "b3b3b3": "c8ba6d", - "595959": "c85b5b", - "61daf2": "e1ac53", - "cc9c3d": "53be53", - "404040": "7d182d", - "ffc44c": "a9f076", - "b2f2ff": "fada7f", - "47a1b3": "af6a37", - "101010": "070707", - "735822": "20734c" - }, - "2": { - "337380": "5f3c23", - "b3b3b3": "68a7aa", - "595959": "88cd56", - "61daf2": "e1d6b6", - "cc9c3d": "7743be", - "404040": "1c873e", - "ffc44c": "a36feb", - "b2f2ff": "faf8d7", - "47a1b3": "968144", - "101010": "070707", - "735822": "371c72" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/693.json b/public/images/pokemon/variant/exp/back/693.json deleted file mode 100644 index 3187a81e0c0..00000000000 --- a/public/images/pokemon/variant/exp/back/693.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "1": { - "224b73": "552813", - "4595e5": "aa6839", - "23a2c8": "c87a23", - "262626": "230808", - "cc9c3d": "1b3c17", - "404040": "3c171b", - "5f5f5f": "6e2e3b", - "61daf2": "f2bd61", - "3674b3": "7d3e21", - "ffc44c": "426e2e", - "735822": "08230e" - }, - "2": { - "224b73": "5f463a", - "4595e5": "c8b493", - "23a2c8": "beb099", - "262626": "295a1c", - "cc9c3d": "6259af", - "404040": "2a8c53", - "5f5f5f": "51c85d", - "61daf2": "f0eadb", - "3674b3": "9b8265", - "ffc44c": "a39afa", - "735822": "36235f" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/696_1.png b/public/images/pokemon/variant/exp/back/696_1.png index 5e68ab9c167..3d99350fc4c 100644 Binary files a/public/images/pokemon/variant/exp/back/696_1.png and b/public/images/pokemon/variant/exp/back/696_1.png differ diff --git a/public/images/pokemon/variant/exp/back/696_2.png b/public/images/pokemon/variant/exp/back/696_2.png index 17e53dcd881..98f0e6185ad 100644 Binary files a/public/images/pokemon/variant/exp/back/696_2.png and b/public/images/pokemon/variant/exp/back/696_2.png differ diff --git a/public/images/pokemon/variant/exp/back/696_3.png b/public/images/pokemon/variant/exp/back/696_3.png index b6cecfa1c8d..0c124354635 100644 Binary files a/public/images/pokemon/variant/exp/back/696_3.png and b/public/images/pokemon/variant/exp/back/696_3.png differ diff --git a/public/images/pokemon/variant/exp/back/697_3.png b/public/images/pokemon/variant/exp/back/697_3.png index 4c916ab0d82..7848eaa90ff 100644 Binary files a/public/images/pokemon/variant/exp/back/697_3.png and b/public/images/pokemon/variant/exp/back/697_3.png differ diff --git a/public/images/pokemon/variant/exp/back/699_2.png b/public/images/pokemon/variant/exp/back/699_2.png index ea3da153124..a4e6693d775 100644 Binary files a/public/images/pokemon/variant/exp/back/699_2.png and b/public/images/pokemon/variant/exp/back/699_2.png differ diff --git a/public/images/pokemon/variant/exp/back/699_3.png b/public/images/pokemon/variant/exp/back/699_3.png index 4fd35302b43..cff00c6762e 100644 Binary files a/public/images/pokemon/variant/exp/back/699_3.png and b/public/images/pokemon/variant/exp/back/699_3.png differ diff --git a/public/images/pokemon/variant/exp/back/742_2.png b/public/images/pokemon/variant/exp/back/742_2.png index 805fe7a4431..cc3d25dd710 100644 Binary files a/public/images/pokemon/variant/exp/back/742_2.png and b/public/images/pokemon/variant/exp/back/742_2.png differ diff --git a/public/images/pokemon/variant/exp/back/742_3.png b/public/images/pokemon/variant/exp/back/742_3.png index ddb72c1836a..69d124bd123 100644 Binary files a/public/images/pokemon/variant/exp/back/742_3.png and b/public/images/pokemon/variant/exp/back/742_3.png differ diff --git a/public/images/pokemon/variant/exp/back/743_2.png b/public/images/pokemon/variant/exp/back/743_2.png index e8b6ac6c82b..8d8516011f2 100644 Binary files a/public/images/pokemon/variant/exp/back/743_2.png and b/public/images/pokemon/variant/exp/back/743_2.png differ diff --git a/public/images/pokemon/variant/exp/back/743_3.png b/public/images/pokemon/variant/exp/back/743_3.png index 4a55750114d..b74aef85cc8 100644 Binary files a/public/images/pokemon/variant/exp/back/743_3.png and b/public/images/pokemon/variant/exp/back/743_3.png differ diff --git a/public/images/pokemon/variant/exp/back/747_2.png b/public/images/pokemon/variant/exp/back/747_2.png index f0df54539eb..aec18c1ca2e 100644 Binary files a/public/images/pokemon/variant/exp/back/747_2.png and b/public/images/pokemon/variant/exp/back/747_2.png differ diff --git a/public/images/pokemon/variant/exp/back/747_3.png b/public/images/pokemon/variant/exp/back/747_3.png index 7d887899e74..14109c24dc1 100644 Binary files a/public/images/pokemon/variant/exp/back/747_3.png and b/public/images/pokemon/variant/exp/back/747_3.png differ diff --git a/public/images/pokemon/variant/exp/back/753.json b/public/images/pokemon/variant/exp/back/753.json deleted file mode 100644 index 26e48f43509..00000000000 --- a/public/images/pokemon/variant/exp/back/753.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "1": { - "234028": "2e1643", - "5ba668": "4e2c62", - "468050": "3e2253", - "315945": "0e2616", - "549977": "1b3822", - "69bf94": "27452c", - "d98d9a": "a55c36", - "ffbfca": "b47145", - "803340": "682c16", - "cc5266": "a55c36" - }, - "2": { - "234028": "531034", - "5ba668": "ce54b0", - "468050": "9b2d76", - "315945": "441342", - "549977": "5a215a", - "69bf94": "6e3472", - "d98d9a": "263b83", - "ffbfca": "3454a5", - "803340": "0b1d4e", - "cc5266": "263b83" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/754.json b/public/images/pokemon/variant/exp/back/754.json deleted file mode 100644 index 5fb99ea57c9..00000000000 --- a/public/images/pokemon/variant/exp/back/754.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "1": { - "803340": "82180e", - "ff667f": "c95623", - "cc5266": "ac351f", - "ffbfca": "f48b49", - "d98d9a": "c95623", - "315945": "122a1a", - "69bf94": "314e36", - "bfbfbf": "c9d6b7", - "737373": "859970", - "f8f8f8": "eff7e2" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/754_2.json b/public/images/pokemon/variant/exp/back/754_2.json deleted file mode 100644 index f32f0133f99..00000000000 --- a/public/images/pokemon/variant/exp/back/754_2.json +++ /dev/null @@ -1,1112 +0,0 @@ -{ - "textures": [ - { - "image": "754_2.png", - "format": "RGBA8888", - "size": { - "w": 222, - "h": 222 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:3adad944aac48ad53efa41f8c9916d1c:ea15b954875ad08814f50cbbf849c1b3:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/754_2.png b/public/images/pokemon/variant/exp/back/754_2.png deleted file mode 100644 index 057d90eb009..00000000000 Binary files a/public/images/pokemon/variant/exp/back/754_2.png and /dev/null differ diff --git a/public/images/pokemon/variant/exp/back/754_3.json b/public/images/pokemon/variant/exp/back/754_3.json deleted file mode 100644 index 6ab4d1dad64..00000000000 --- a/public/images/pokemon/variant/exp/back/754_3.json +++ /dev/null @@ -1,1112 +0,0 @@ -{ - "textures": [ - { - "image": "754_3.png", - "format": "RGBA8888", - "size": { - "w": 222, - "h": 222 - }, - "scale": 1, - "frames": [ - { - "filename": "0036.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 92, - "y": 0, - "w": 92, - "h": 68 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 184, - "y": 0, - "w": 38, - "h": 68 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 68, - "w": 92, - "h": 68 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 92, - "h": 68 - }, - "frame": { - "x": 0, - "y": 136, - "w": 92, - "h": 68 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 88, - "h": 68 - }, - "frame": { - "x": 92, - "y": 68, - "w": 88, - "h": 68 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 40, - "h": 68 - }, - "frame": { - "x": 180, - "y": 68, - "w": 40, - "h": 68 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 39, - "h": 68 - }, - "frame": { - "x": 92, - "y": 136, - "w": 39, - "h": 68 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 131, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 92, - "h": 68 - }, - "spriteSourceSize": { - "x": 25, - "y": 0, - "w": 38, - "h": 68 - }, - "frame": { - "x": 169, - "y": 136, - "w": 38, - "h": 68 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:3adad944aac48ad53efa41f8c9916d1c:ea15b954875ad08814f50cbbf849c1b3:f7cb0e9bb3adbe899317e6e2e306035d$" - } -} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/754_3.png b/public/images/pokemon/variant/exp/back/754_3.png deleted file mode 100644 index 3a3c01f7095..00000000000 Binary files a/public/images/pokemon/variant/exp/back/754_3.png and /dev/null differ diff --git a/public/images/pokemon/variant/exp/back/776_2.png b/public/images/pokemon/variant/exp/back/776_2.png index 84393b04c56..911fcbd40c3 100644 Binary files a/public/images/pokemon/variant/exp/back/776_2.png and b/public/images/pokemon/variant/exp/back/776_2.png differ diff --git a/public/images/pokemon/variant/exp/back/776_3.png b/public/images/pokemon/variant/exp/back/776_3.png index 600b00f8636..3cde4bb5db6 100644 Binary files a/public/images/pokemon/variant/exp/back/776_3.png and b/public/images/pokemon/variant/exp/back/776_3.png differ diff --git a/public/images/pokemon/variant/exp/back/857_2.png b/public/images/pokemon/variant/exp/back/857_2.png index b51428bbec2..2984c082c71 100644 Binary files a/public/images/pokemon/variant/exp/back/857_2.png and b/public/images/pokemon/variant/exp/back/857_2.png differ diff --git a/public/images/pokemon/variant/exp/back/857_3.png b/public/images/pokemon/variant/exp/back/857_3.png index 4dc21c5492d..01dd83b5417 100644 Binary files a/public/images/pokemon/variant/exp/back/857_3.png and b/public/images/pokemon/variant/exp/back/857_3.png differ diff --git a/public/images/pokemon/variant/exp/back/862_2.png b/public/images/pokemon/variant/exp/back/862_2.png index 55fee69723b..0acabc3398f 100644 Binary files a/public/images/pokemon/variant/exp/back/862_2.png and b/public/images/pokemon/variant/exp/back/862_2.png differ diff --git a/public/images/pokemon/variant/exp/back/862_3.png b/public/images/pokemon/variant/exp/back/862_3.png index b3c9cc656b5..01ee62df8cb 100644 Binary files a/public/images/pokemon/variant/exp/back/862_3.png and b/public/images/pokemon/variant/exp/back/862_3.png differ diff --git a/public/images/pokemon/variant/exp/back/9-mega_2.png b/public/images/pokemon/variant/exp/back/9-mega_2.png index 02987564bea..c86d36e9eb4 100644 Binary files a/public/images/pokemon/variant/exp/back/9-mega_2.png and b/public/images/pokemon/variant/exp/back/9-mega_2.png differ diff --git a/public/images/pokemon/variant/exp/back/9-mega_3.png b/public/images/pokemon/variant/exp/back/9-mega_3.png index 00150d4dd46..05458e16f93 100644 Binary files a/public/images/pokemon/variant/exp/back/9-mega_3.png and b/public/images/pokemon/variant/exp/back/9-mega_3.png differ diff --git a/public/images/pokemon/variant/exp/back/910_2.png b/public/images/pokemon/variant/exp/back/910_2.png index 2fa214c4e35..43662ff96a7 100644 Binary files a/public/images/pokemon/variant/exp/back/910_2.png and b/public/images/pokemon/variant/exp/back/910_2.png differ diff --git a/public/images/pokemon/variant/exp/back/910_3.png b/public/images/pokemon/variant/exp/back/910_3.png index 1027adef03f..860a0475f64 100644 Binary files a/public/images/pokemon/variant/exp/back/910_3.png and b/public/images/pokemon/variant/exp/back/910_3.png differ diff --git a/public/images/pokemon/variant/exp/back/914_2.png b/public/images/pokemon/variant/exp/back/914_2.png index 12bdc769c53..c883177b0ed 100644 Binary files a/public/images/pokemon/variant/exp/back/914_2.png and b/public/images/pokemon/variant/exp/back/914_2.png differ diff --git a/public/images/pokemon/variant/exp/back/914_3.png b/public/images/pokemon/variant/exp/back/914_3.png index 5304b52d91a..5fc54e733cc 100644 Binary files a/public/images/pokemon/variant/exp/back/914_3.png and b/public/images/pokemon/variant/exp/back/914_3.png differ diff --git a/public/images/pokemon/variant/exp/back/925-four_2.png b/public/images/pokemon/variant/exp/back/925-four_2.png index 9dd508f1cdb..90e5e23f5ee 100644 Binary files a/public/images/pokemon/variant/exp/back/925-four_2.png and b/public/images/pokemon/variant/exp/back/925-four_2.png differ diff --git a/public/images/pokemon/variant/exp/back/925-four_3.png b/public/images/pokemon/variant/exp/back/925-four_3.png index 74bb7d3385c..bfecaebc5ea 100644 Binary files a/public/images/pokemon/variant/exp/back/925-four_3.png and b/public/images/pokemon/variant/exp/back/925-four_3.png differ diff --git a/public/images/pokemon/variant/exp/back/925-three_2.png b/public/images/pokemon/variant/exp/back/925-three_2.png index e2303d720b9..04020e8b08a 100644 Binary files a/public/images/pokemon/variant/exp/back/925-three_2.png and b/public/images/pokemon/variant/exp/back/925-three_2.png differ diff --git a/public/images/pokemon/variant/exp/back/925-three_3.png b/public/images/pokemon/variant/exp/back/925-three_3.png index 8d568cce517..e2b6016ffbb 100644 Binary files a/public/images/pokemon/variant/exp/back/925-three_3.png and b/public/images/pokemon/variant/exp/back/925-three_3.png differ diff --git a/public/images/pokemon/variant/exp/back/952_2.png b/public/images/pokemon/variant/exp/back/952_2.png index 403030f2e3d..823589d2a69 100644 Binary files a/public/images/pokemon/variant/exp/back/952_2.png and b/public/images/pokemon/variant/exp/back/952_2.png differ diff --git a/public/images/pokemon/variant/exp/back/968_2.png b/public/images/pokemon/variant/exp/back/968_2.png index 726c305140e..b9a820d33a4 100644 Binary files a/public/images/pokemon/variant/exp/back/968_2.png and b/public/images/pokemon/variant/exp/back/968_2.png differ diff --git a/public/images/pokemon/variant/exp/back/968_3.png b/public/images/pokemon/variant/exp/back/968_3.png index 541c3cf2d84..3970c06ec01 100644 Binary files a/public/images/pokemon/variant/exp/back/968_3.png and b/public/images/pokemon/variant/exp/back/968_3.png differ diff --git a/public/images/pokemon/variant/exp/back/970_2.png b/public/images/pokemon/variant/exp/back/970_2.png index 5c7d2650363..93b2f1df61a 100644 Binary files a/public/images/pokemon/variant/exp/back/970_2.png and b/public/images/pokemon/variant/exp/back/970_2.png differ diff --git a/public/images/pokemon/variant/exp/back/970_3.png b/public/images/pokemon/variant/exp/back/970_3.png index 592c1f21961..e537a86c2bc 100644 Binary files a/public/images/pokemon/variant/exp/back/970_3.png and b/public/images/pokemon/variant/exp/back/970_3.png differ diff --git a/public/images/pokemon/variant/exp/back/978-curly_2.png b/public/images/pokemon/variant/exp/back/978-curly_2.png index 1ed3505ceee..af56bba567e 100644 Binary files a/public/images/pokemon/variant/exp/back/978-curly_2.png and b/public/images/pokemon/variant/exp/back/978-curly_2.png differ diff --git a/public/images/pokemon/variant/exp/back/978-curly_3.png b/public/images/pokemon/variant/exp/back/978-curly_3.png index dcc2129f72b..fa8dc110a50 100644 Binary files a/public/images/pokemon/variant/exp/back/978-curly_3.png and b/public/images/pokemon/variant/exp/back/978-curly_3.png differ diff --git a/public/images/pokemon/variant/exp/back/978-droopy_2.png b/public/images/pokemon/variant/exp/back/978-droopy_2.png index ed0999c43ca..b088f38074f 100644 Binary files a/public/images/pokemon/variant/exp/back/978-droopy_2.png and b/public/images/pokemon/variant/exp/back/978-droopy_2.png differ diff --git a/public/images/pokemon/variant/exp/back/978-droopy_3.png b/public/images/pokemon/variant/exp/back/978-droopy_3.png index 22416861830..c6ba77f4477 100644 Binary files a/public/images/pokemon/variant/exp/back/978-droopy_3.png and b/public/images/pokemon/variant/exp/back/978-droopy_3.png differ diff --git a/public/images/pokemon/variant/female/178_2.png b/public/images/pokemon/variant/female/178_2.png index 1c0fe8c9153..b1bf53ee6a7 100644 Binary files a/public/images/pokemon/variant/female/178_2.png and b/public/images/pokemon/variant/female/178_2.png differ diff --git a/public/images/pokemon/variant/female/178_3.png b/public/images/pokemon/variant/female/178_3.png index 0ca5fe14c72..13af35657b3 100644 Binary files a/public/images/pokemon/variant/female/178_3.png and b/public/images/pokemon/variant/female/178_3.png differ diff --git a/public/images/pokemon/variant/female/402_2.png b/public/images/pokemon/variant/female/402_2.png index b9fd36890a3..e6495407f90 100644 Binary files a/public/images/pokemon/variant/female/402_2.png and b/public/images/pokemon/variant/female/402_2.png differ diff --git a/public/images/pokemon/variant/female/402_3.png b/public/images/pokemon/variant/female/402_3.png index 5e43029bfdb..dbddcbd1031 100644 Binary files a/public/images/pokemon/variant/female/402_3.png and b/public/images/pokemon/variant/female/402_3.png differ diff --git a/public/images/pokemon/variant/female/419_2.png b/public/images/pokemon/variant/female/419_2.png index ca9ea1d6f72..75fcd940ebd 100644 Binary files a/public/images/pokemon/variant/female/419_2.png and b/public/images/pokemon/variant/female/419_2.png differ diff --git a/public/images/statuses_tl.json b/public/images/statuses_tl.json new file mode 100644 index 00000000000..094b0188d69 --- /dev/null +++ b/public/images/statuses_tl.json @@ -0,0 +1,188 @@ +{ + "textures": [ + { + "image": "statuses_tl.png", + "format": "RGBA8888", + "size": { + "w": 22, + "h": 64 + }, + "scale": 1, + "frames": [ + { + "filename": "pokerus", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 22, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 22, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 22, + "h": 8 + } + }, + { + "filename": "burn", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 8, + "w": 20, + "h": 8 + } + }, + { + "filename": "faint", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 16, + "w": 20, + "h": 8 + } + }, + { + "filename": "freeze", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 24, + "w": 20, + "h": 8 + } + }, + { + "filename": "paralysis", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 32, + "w": 20, + "h": 8 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 40, + "w": 20, + "h": 8 + } + }, + { + "filename": "sleep", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 48, + "w": 20, + "h": 8 + } + }, + { + "filename": "toxic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 56, + "w": 20, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$" + } +} diff --git a/public/images/statuses_tl.png b/public/images/statuses_tl.png new file mode 100644 index 00000000000..9f24c6a0810 Binary files /dev/null and b/public/images/statuses_tl.png differ diff --git a/public/images/types_tl.json b/public/images/types_tl.json new file mode 100644 index 00000000000..2706c6f49f3 --- /dev/null +++ b/public/images/types_tl.json @@ -0,0 +1,440 @@ +{ + "textures": [ + { + "image": "types_tl.png", + "format": "RGBA8888", + "size": { + "w": 32, + "h": 280 + }, + "scale": 1, + "frames": [ + { + "filename": "unknown", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + } + }, + { + "filename": "bug", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 14, + "w": 32, + "h": 14 + } + }, + { + "filename": "dark", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 28, + "w": 32, + "h": 14 + } + }, + { + "filename": "dragon", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 42, + "w": 32, + "h": 14 + } + }, + { + "filename": "electric", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 56, + "w": 32, + "h": 14 + } + }, + { + "filename": "fairy", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 70, + "w": 32, + "h": 14 + } + }, + { + "filename": "fighting", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 84, + "w": 32, + "h": 14 + } + }, + { + "filename": "fire", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 98, + "w": 32, + "h": 14 + } + }, + { + "filename": "flying", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 112, + "w": 32, + "h": 14 + } + }, + { + "filename": "ghost", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 126, + "w": 32, + "h": 14 + } + }, + { + "filename": "grass", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 140, + "w": 32, + "h": 14 + } + }, + { + "filename": "ground", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 154, + "w": 32, + "h": 14 + } + }, + { + "filename": "ice", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 168, + "w": 32, + "h": 14 + } + }, + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 182, + "w": 32, + "h": 14 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 196, + "w": 32, + "h": 14 + } + }, + { + "filename": "psychic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 210, + "w": 32, + "h": 14 + } + }, + { + "filename": "rock", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 224, + "w": 32, + "h": 14 + } + }, + { + "filename": "steel", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 238, + "w": 32, + "h": 14 + } + }, + { + "filename": "water", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 252, + "w": 32, + "h": 14 + } + }, + { + "filename": "stellar", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 266, + "w": 32, + "h": 14 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$" + } +} diff --git a/public/images/types_tl.png b/public/images/types_tl.png new file mode 100644 index 00000000000..b9fdceba7da Binary files /dev/null and b/public/images/types_tl.png differ diff --git a/public/images/ui/legacy/party_bg_double_manage.png b/public/images/ui/legacy/party_bg_double_manage.png new file mode 100644 index 00000000000..2bf2d63c315 Binary files /dev/null and b/public/images/ui/legacy/party_bg_double_manage.png differ diff --git a/public/images/ui/legacy/party_discard.json b/public/images/ui/legacy/party_discard.json new file mode 100644 index 00000000000..4aa563fcd77 --- /dev/null +++ b/public/images/ui/legacy/party_discard.json @@ -0,0 +1,62 @@ +{ + "textures": [ + { + "image": "party_discard.png", + "format": "RGBA8888", + "size": { + "w": 75, + "h": 50 + }, + "scale": 1, + "frames": [ + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + } + }, + { + "filename": "selected", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 75, + "h": 25 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:17219773dfffd6b1204d988fea3f9462:1127ad21d64bc7ebb9df4fc28f3d2d39:7ad46e8fb4648c3d3d84a746ecb371ea$" + } +} diff --git a/public/images/ui/legacy/party_discard.png b/public/images/ui/legacy/party_discard.png new file mode 100644 index 00000000000..d95ba696015 Binary files /dev/null and b/public/images/ui/legacy/party_discard.png differ diff --git a/public/images/ui/legacy/party_transfer.json b/public/images/ui/legacy/party_transfer.json new file mode 100644 index 00000000000..7cfcf5ccc30 --- /dev/null +++ b/public/images/ui/legacy/party_transfer.json @@ -0,0 +1,62 @@ +{ + "textures": [ + { + "image": "party_transfer.png", + "format": "RGBA8888", + "size": { + "w": 75, + "h": 50 + }, + "scale": 1, + "frames": [ + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + } + }, + { + "filename": "selected", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 75, + "h": 25 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:17219773dfffd6b1204d988fea3f9462:1127ad21d64bc7ebb9df4fc28f3d2d39:7ad46e8fb4648c3d3d84a746ecb371ea$" + } +} diff --git a/public/images/ui/legacy/party_transfer.png b/public/images/ui/legacy/party_transfer.png new file mode 100644 index 00000000000..36879547676 Binary files /dev/null and b/public/images/ui/legacy/party_transfer.png differ diff --git a/public/images/ui/party_bg_double_manage.png b/public/images/ui/party_bg_double_manage.png new file mode 100644 index 00000000000..e85413b5fb5 Binary files /dev/null and b/public/images/ui/party_bg_double_manage.png differ diff --git a/public/images/ui/party_discard.json b/public/images/ui/party_discard.json new file mode 100644 index 00000000000..4aa563fcd77 --- /dev/null +++ b/public/images/ui/party_discard.json @@ -0,0 +1,62 @@ +{ + "textures": [ + { + "image": "party_discard.png", + "format": "RGBA8888", + "size": { + "w": 75, + "h": 50 + }, + "scale": 1, + "frames": [ + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + } + }, + { + "filename": "selected", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 75, + "h": 25 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:17219773dfffd6b1204d988fea3f9462:1127ad21d64bc7ebb9df4fc28f3d2d39:7ad46e8fb4648c3d3d84a746ecb371ea$" + } +} diff --git a/public/images/ui/party_discard.png b/public/images/ui/party_discard.png new file mode 100644 index 00000000000..e56c845eadc Binary files /dev/null and b/public/images/ui/party_discard.png differ diff --git a/public/images/ui/party_transfer.json b/public/images/ui/party_transfer.json new file mode 100644 index 00000000000..7cfcf5ccc30 --- /dev/null +++ b/public/images/ui/party_transfer.json @@ -0,0 +1,62 @@ +{ + "textures": [ + { + "image": "party_transfer.png", + "format": "RGBA8888", + "size": { + "w": 75, + "h": 50 + }, + "scale": 1, + "frames": [ + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + } + }, + { + "filename": "selected", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 75, + "h": 25 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 75, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 75, + "h": 25 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:17219773dfffd6b1204d988fea3f9462:1127ad21d64bc7ebb9df4fc28f3d2d39:7ad46e8fb4648c3d3d84a746ecb371ea$" + } +} diff --git a/public/images/ui/party_transfer.png b/public/images/ui/party_transfer.png new file mode 100644 index 00000000000..45815a156b5 Binary files /dev/null and b/public/images/ui/party_transfer.png differ diff --git a/public/locales b/public/locales index 362b2c4fcc2..7898c0018a7 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 362b2c4fcc20b31a7be6c2dab537055fbaeb247f +Subproject commit 7898c0018a70601a6ead76c9dd497ff966cc2e2a diff --git a/scripts/create-test/test-boilerplate.ts b/scripts/create-test/boilerplates/default.ts similarity index 94% rename from scripts/create-test/test-boilerplate.ts rename to scripts/create-test/boilerplates/default.ts index 759f3afaec0..fa914b150c2 100644 --- a/scripts/create-test/test-boilerplate.ts +++ b/scripts/create-test/boilerplates/default.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/scripts/create-test/create-test.js b/scripts/create-test/create-test.js index f24aac548fc..765993959d1 100644 --- a/scripts/create-test/create-test.js +++ b/scripts/create-test/create-test.js @@ -17,15 +17,20 @@ const version = "2.0.1"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const projectRoot = path.join(__dirname, "..", ".."); -const boilerplateFilePath = path.join(__dirname, "test-boilerplate.ts"); -const choices = [ - { label: "Move", dir: "moves" }, - { label: "Ability", dir: "abilities" }, - { label: "Item", dir: "items" }, - { label: "Mystery Encounter", dir: "mystery-encounter/encounters" }, - { label: "Utils", dir: "utils" }, - { label: "UI", dir: "ui" }, -]; + +const choices = /** @type {const} */ (["Move", "Ability", "Item", "Reward", "Mystery Encounter", "Utils", "UI"]); +/** @typedef {choices[number]} choiceType */ + +/** @satisfies {{[k in choiceType]: string}} */ +const choicesToDirs = /** @type {const} */ ({ + Move: "moves", + Ability: "abilities", + Item: "items", + Reward: "rewards", + "Mystery Encounter": "mystery-encounter/encounters", + Utils: "utils", + UI: "ui", +}); //#endregion //#region Functions @@ -41,46 +46,47 @@ function getTestFolderPath(...folders) { /** * Prompts the user to select a type via list. - * @returns {Promise<{selectedOption: {label: string, dir: string}}>} the selected type + * @returns {Promise} the selected type */ async function promptTestType() { - const typeAnswer = await inquirer.prompt([ - { - type: "list", - name: "selectedOption", - message: "What type of test would you like to create?", - choices: [...choices.map(choice => ({ name: choice.label, value: choice })), "EXIT"], - }, - ]); + /** @type {choiceType | "EXIT"} */ + const choice = await inquirer + .prompt([ + { + type: "list", + name: "selectedOption", + message: "What type of test would you like to create?", + choices: [...choices, "EXIT"], + }, + ]) + .then(ta => ta.selectedOption); - if (typeAnswer.selectedOption === "EXIT") { + if (choice === "EXIT") { console.log("Exiting..."); - return process.exit(); - } - if (!choices.some(choice => choice.dir === typeAnswer.selectedOption.dir)) { - console.error(`Please provide a valid type: (${choices.map(choice => choice.label).join(", ")})!`); - return await promptTestType(); + return process.exit(0); } - return typeAnswer; + return choice; } /** * Prompts the user to provide a file name. - * @param {string} selectedType - * @returns {Promise<{userInput: string}>} the selected file name + * @param {choiceType} selectedType The chosen string (used to display console logs) + * @returns {Promise} the selected file name */ async function promptFileName(selectedType) { - /** @type {{userInput: string}} */ - const fileNameAnswer = await inquirer.prompt([ - { - type: "input", - name: "userInput", - message: `Please provide the name of the ${selectedType}:`, - }, - ]); + /** @type {string} */ + const fileNameAnswer = await inquirer + .prompt([ + { + type: "input", + name: "userInput", + message: `Please provide the name of the ${selectedType}.`, + }, + ]) + .then(fa => fa.userInput); - if (!fileNameAnswer.userInput || fileNameAnswer.userInput.trim().length === 0) { + if (fileNameAnswer.trim().length === 0) { console.error("Please provide a valid file name!"); return await promptFileName(selectedType); } @@ -88,51 +94,66 @@ async function promptFileName(selectedType) { return fileNameAnswer; } +/** + * Obtain the path to the boilerplate file based on the current option. + * @param {choiceType} choiceType The choice selected + * @returns {string} The path to the boilerplate file + */ +function getBoilerplatePath(choiceType) { + switch (choiceType) { + // case "Reward": + // return path.join(__dirname, "boilerplates/reward.ts"); + default: + return path.join(__dirname, "boilerplates/default.ts"); + } +} + /** * Runs the interactive test:create "CLI" * @returns {Promise} */ async function runInteractive() { - console.group(chalk.grey(`Create Test - v${version}\n`)); + console.group(chalk.grey(`🧪 Create Test - v${version}\n`)); try { - const typeAnswer = await promptTestType(); - const fileNameAnswer = await promptFileName(typeAnswer.selectedOption.label); + const choice = await promptTestType(); + const fileNameAnswer = await promptFileName(choice); - const type = typeAnswer.selectedOption; // Convert fileName from snake_case or camelCase to kebab-case - const fileName = fileNameAnswer.userInput + const fileName = fileNameAnswer .replace(/_+/g, "-") // Convert snake_case (underscore) to kebab-case (dashes) .replace(/([a-z])([A-Z])/g, "$1-$2") // Convert camelCase to kebab-case .replace(/\s+/g, "-") // Replace spaces with dashes .toLowerCase(); // Ensure all lowercase - // Format the description for the test case + // Format the description for the test case in Title Case const formattedName = fileName.replace(/-/g, " ").replace(/\b\w/g, char => char.toUpperCase()); + const description = `${choice} - ${formattedName}`; + // Determine the directory based on the type - const dir = getTestFolderPath(type.dir); - const description = `${type.label} - ${formattedName}`; + const localDir = choicesToDirs[choice]; + const absoluteDir = getTestFolderPath(localDir); // Define the content template - const content = fs.readFileSync(boilerplateFilePath, "utf8").replace("{{description}}", description); + const content = fs.readFileSync(getBoilerplatePath(choice), "utf8").replace("{{description}}", description); // Ensure the directory exists - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir, { recursive: true }); + if (!fs.existsSync(absoluteDir)) { + fs.mkdirSync(absoluteDir, { recursive: true }); } // Create the file with the given name - const filePath = path.join(dir, `${fileName}.test.ts`); + const filePath = path.join(absoluteDir, `${fileName}.test.ts`); if (fs.existsSync(filePath)) { - console.error(chalk.red.bold(`\n✗ File "${fileName}.test.ts" already exists!\n`)); + console.error(chalk.red.bold(`✗ File "${fileName}.test.ts" already exists!\n`)); process.exit(1); } // Write the template content to the file fs.writeFileSync(filePath, content, "utf8"); - console.log(chalk.green.bold(`\n✔ File created at: test/${type.dir}/${fileName}.test.ts\n`)); + console.log(chalk.green.bold(`✔ File created at: test/${localDir}/${fileName}.test.ts\n`)); console.groupEnd(); } catch (err) { console.error(chalk.red("✗ Error: ", err.message)); diff --git a/scripts/decrypt-save.js b/scripts/decrypt-save.js index 219cdb47bed..e50f152f159 100644 --- a/scripts/decrypt-save.js +++ b/scripts/decrypt-save.js @@ -2,7 +2,9 @@ // biome-ignore lint/performance/noNamespaceImport: This is how you import fs from node import * as fs from "node:fs"; -import { AES, enc } from "crypto-js"; +import crypto_js from "crypto-js"; + +const { AES, enc } = crypto_js; const SAVE_KEY = "x0i2O7WRiANTqPmZ"; @@ -144,7 +146,7 @@ function main() { process.exit(0); } - writeToFile(destPath, decrypt); + writeToFile(args[1], decrypt); } main(); diff --git a/update_exp_sprites.ps1 b/scripts/update-exp-sprites.ps1 similarity index 100% rename from update_exp_sprites.ps1 rename to scripts/update-exp-sprites.ps1 diff --git a/public/update-source-comments.py b/scripts/update_source_comments.py similarity index 85% rename from public/update-source-comments.py rename to scripts/update_source_comments.py index 410d1a42566..465285fd4ac 100644 --- a/public/update-source-comments.py +++ b/scripts/update_source_comments.py @@ -2,13 +2,13 @@ import re filenames = [['src/enums/moves.ts', 'move'], ['src/enums/abilities.ts', 'ability'], ['src/enums/species.ts', 'Pokémon']] -commentBlockStart = re.compile('\/\*[^\*].*') # Regex for the start of a comment block -commentBlockEnd = re.compile('.*,\*\/') # Regex for the end of a comment block +commentBlockStart = re.compile(r'\/\*[^\*].*') # Regex for the start of a comment block +commentBlockEnd = re.compile(r'.*,\*\/') # Regex for the end of a comment block -commentExp = re.compile('(?:\/\*\*.*\*\/)') # Regex for a url comment that already existed in the file +commentExp = re.compile(r'(?:\/\*\*.*\*\/)') # Regex for a url comment that already existed in the file enumExp = re.compile('.*,') # Regex for a regular enum line -numberExp = re.compile(' +\= +\d+,') +numberExp = re.compile(r' +\= +\d+,') replaceList = ['ALOLA', 'ETERNAL', 'GALAR', 'HISUI', 'PALDEA', 'BLOODMOON'] diff --git a/src/@types/PokerogueAccountApi.ts b/src/@types/api/pokerogue-account-api.ts similarity index 85% rename from src/@types/PokerogueAccountApi.ts rename to src/@types/api/pokerogue-account-api.ts index 3b3e74ba41d..7bcdc766664 100644 --- a/src/@types/PokerogueAccountApi.ts +++ b/src/@types/api/pokerogue-account-api.ts @@ -1,4 +1,4 @@ -import type { UserInfo } from "#types/UserInfo"; +import type { UserInfo } from "#types/user-info"; export interface AccountInfoResponse extends UserInfo {} diff --git a/src/@types/PokerogueAdminApi.ts b/src/@types/api/pokerogue-admin-api.ts similarity index 100% rename from src/@types/PokerogueAdminApi.ts rename to src/@types/api/pokerogue-admin-api.ts diff --git a/src/@types/PokerogueApi.ts b/src/@types/api/pokerogue-api-types.ts similarity index 100% rename from src/@types/PokerogueApi.ts rename to src/@types/api/pokerogue-api-types.ts diff --git a/src/@types/PokerogueDailyApi.ts b/src/@types/api/pokerogue-daily-api.ts similarity index 100% rename from src/@types/PokerogueDailyApi.ts rename to src/@types/api/pokerogue-daily-api.ts diff --git a/src/@types/PokerogueSavedataApi.ts b/src/@types/api/pokerogue-save-data-api.ts similarity index 100% rename from src/@types/PokerogueSavedataApi.ts rename to src/@types/api/pokerogue-save-data-api.ts diff --git a/src/@types/PokerogueSessionSavedataApi.ts b/src/@types/api/pokerogue-session-save-data-api.ts similarity index 95% rename from src/@types/PokerogueSessionSavedataApi.ts rename to src/@types/api/pokerogue-session-save-data-api.ts index c4650611c4f..bd606ef7e9c 100644 --- a/src/@types/PokerogueSessionSavedataApi.ts +++ b/src/@types/api/pokerogue-session-save-data-api.ts @@ -1,4 +1,4 @@ -export class UpdateSessionSavedataRequest { +export interface UpdateSessionSavedataRequest { slot: number; trainerId: number; secretId: number; diff --git a/src/@types/PokerogueSystemSavedataApi.ts b/src/@types/api/pokerogue-system-save-data-api.ts similarity index 88% rename from src/@types/PokerogueSystemSavedataApi.ts rename to src/@types/api/pokerogue-system-save-data-api.ts index ded22c4c58c..133f9cda506 100644 --- a/src/@types/PokerogueSystemSavedataApi.ts +++ b/src/@types/api/pokerogue-system-save-data-api.ts @@ -4,7 +4,7 @@ export interface GetSystemSavedataRequest { clientSessionId: string; } -export class UpdateSystemSavedataRequest { +export interface UpdateSystemSavedataRequest { clientSessionId: string; trainerId?: number; secretId?: number; diff --git a/src/@types/arena-tags.ts b/src/@types/arena-tags.ts index ab4339b2fef..afcc8a0f924 100644 --- a/src/@types/arena-tags.ts +++ b/src/@types/arena-tags.ts @@ -1,6 +1,5 @@ import type { ArenaTagTypeMap } from "#data/arena-tag"; import type { ArenaTagType } from "#enums/arena-tag-type"; -import type { NonFunctionProperties } from "./type-helpers"; /** Subset of {@linkcode ArenaTagType}s that apply some negative effect to pokemon that switch in ({@link https://bulbapedia.bulbagarden.net/wiki/List_of_moves_that_cause_entry_hazards#List_of_traps | entry hazards} and Imprison. */ export type ArenaTrapTagType = @@ -10,9 +9,6 @@ export type ArenaTrapTagType = | ArenaTagType.STEALTH_ROCK | ArenaTagType.IMPRISON; -/** Subset of {@linkcode ArenaTagType}s that are considered delayed attacks */ -export type ArenaDelayedAttackTagType = ArenaTagType.FUTURE_SIGHT | ArenaTagType.DOOM_DESIRE; - /** Subset of {@linkcode ArenaTagType}s that create {@link https://bulbapedia.bulbagarden.net/wiki/Category:Screen-creating_moves | screens}. */ export type ArenaScreenTagType = ArenaTagType.REFLECT | ArenaTagType.LIGHT_SCREEN | ArenaTagType.AURORA_VEIL; @@ -30,13 +26,13 @@ export type NonSerializableArenaTagType = ArenaTagType.NONE | TurnProtectArenaTa export type SerializableArenaTagType = Exclude; /** - * Type-safe representation of the serializable data of an ArenaTag + * Type-safe representation of an arbitrary, serialized Arena Tag */ -export type ArenaTagTypeData = NonFunctionProperties< +export type ArenaTagTypeData = Parameters< ArenaTagTypeMap[keyof { [K in keyof ArenaTagTypeMap as K extends SerializableArenaTagType ? K : never]: ArenaTagTypeMap[K]; - }] ->; + }]["loadTag"] +>[0]; /** Dummy, typescript-only declaration to ensure that * {@linkcode ArenaTagTypeMap} has a map for all ArenaTagTypes. diff --git a/src/@types/battler-tags.ts b/src/@types/battler-tags.ts new file mode 100644 index 00000000000..211eb25113d --- /dev/null +++ b/src/@types/battler-tags.ts @@ -0,0 +1,137 @@ +// biome-ignore-start lint/correctness/noUnusedImports: Used in a TSDoc comment +import type { AbilityBattlerTag, BattlerTagTypeMap, SerializableBattlerTag, TypeBoostTag } from "#data/battler-tags"; +import type { AbilityId } from "#enums/ability-id"; +// biome-ignore-end lint/correctness/noUnusedImports: end +import type { BattlerTagType } from "#enums/battler-tag-type"; + +/** + * Subset of {@linkcode BattlerTagType}s that restrict the use of moves. + */ +export type MoveRestrictionBattlerTagType = + | BattlerTagType.THROAT_CHOPPED + | BattlerTagType.TORMENT + | BattlerTagType.TAUNT + | BattlerTagType.IMPRISON + | BattlerTagType.HEAL_BLOCK + | BattlerTagType.ENCORE + | BattlerTagType.DISABLED + | BattlerTagType.GORILLA_TACTICS; + +/** + * Subset of {@linkcode BattlerTagType}s that block damage from moves. + */ +export type FormBlockDamageBattlerTagType = BattlerTagType.ICE_FACE | BattlerTagType.DISGUISE; + +/** + * Subset of {@linkcode BattlerTagType}s that are related to trapping effects. + */ +export type TrappingBattlerTagType = + | BattlerTagType.BIND + | BattlerTagType.WRAP + | BattlerTagType.FIRE_SPIN + | BattlerTagType.WHIRLPOOL + | BattlerTagType.CLAMP + | BattlerTagType.SAND_TOMB + | BattlerTagType.MAGMA_STORM + | BattlerTagType.SNAP_TRAP + | BattlerTagType.THUNDER_CAGE + | BattlerTagType.INFESTATION + | BattlerTagType.INGRAIN + | BattlerTagType.OCTOLOCK + | BattlerTagType.NO_RETREAT; + +/** + * Subset of {@linkcode BattlerTagType}s that are related to protection effects. + */ +export type ProtectionBattlerTagType = BattlerTagType.PROTECTED | BattlerTagType.SPIKY_SHIELD | DamageProtectedTagType; +/** + * Subset of {@linkcode BattlerTagType}s related to protection effects that block damage but not status moves. + */ +export type DamageProtectedTagType = ContactSetStatusProtectedTagType | ContactStatStageChangeProtectedTagType; + +/** + * Subset of {@linkcode BattlerTagType}s related to protection effects that set a status effect on the attacker. + */ +export type ContactSetStatusProtectedTagType = BattlerTagType.BANEFUL_BUNKER | BattlerTagType.BURNING_BULWARK; + +/** + * Subset of {@linkcode BattlerTagType}s related to protection effects that change stat stages of the attacker. + */ +export type ContactStatStageChangeProtectedTagType = + | BattlerTagType.KINGS_SHIELD + | BattlerTagType.SILK_TRAP + | BattlerTagType.OBSTRUCT; + +/** Subset of {@linkcode BattlerTagType}s that provide the Endure effect */ +export type EndureTagType = BattlerTagType.ENDURE_TOKEN | BattlerTagType.ENDURING; + +/** + * Subset of {@linkcode BattlerTagType}s that are related to semi-invulnerable states. + */ +export type SemiInvulnerableTagType = + | BattlerTagType.FLYING + | BattlerTagType.UNDERGROUND + | BattlerTagType.UNDERWATER + | BattlerTagType.HIDDEN; + +/** + * Subset of {@linkcode BattlerTagType}s corresponding to {@linkcode AbilityBattlerTag}s + * + * @remarks + * ⚠️ {@linkcode AbilityId.FLASH_FIRE | Flash Fire}'s {@linkcode BattlerTagType.FIRE_BOOST} is not included as it + * subclasses {@linkcode TypeBoostTag} and not `AbilityBattlerTag`. + */ +export type AbilityBattlerTagType = + | BattlerTagType.PROTOSYNTHESIS + | BattlerTagType.QUARK_DRIVE + | BattlerTagType.UNBURDEN + | BattlerTagType.SLOW_START + | BattlerTagType.TRUANT; + +/** Subset of {@linkcode BattlerTagType}s that provide type boosts */ +export type TypeBoostTagType = BattlerTagType.FIRE_BOOST | BattlerTagType.CHARGED; + +/** Subset of {@linkcode BattlerTagType}s that boost the user's critical stage */ +export type CritStageBoostTagType = BattlerTagType.CRIT_BOOST | BattlerTagType.DRAGON_CHEER; + +/** Subset of {@linkcode BattlerTagType}s that remove one of the users' types */ +export type RemovedTypeTagType = BattlerTagType.DOUBLE_SHOCKED | BattlerTagType.BURNED_UP; + +/** + * Subset of {@linkcode BattlerTagType}s related to abilities that boost the highest stat. + */ +export type HighestStatBoostTagType = + | BattlerTagType.QUARK_DRIVE // formatting + | BattlerTagType.PROTOSYNTHESIS; +/** + * Subset of {@linkcode BattlerTagType}s that are able to persist between turns and should therefore be serialized + */ +export type SerializableBattlerTagType = keyof { + [K in keyof BattlerTagTypeMap as BattlerTagTypeMap[K] extends SerializableBattlerTag + ? K + : never]: BattlerTagTypeMap[K]; +}; + +/** + * Subset of {@linkcode BattlerTagType}s that are not able to persist across waves and should therefore not be serialized + */ +export type NonSerializableBattlerTagType = Exclude; + +/** + * Type-safe representation of an arbitrary, serialized Battler Tag + */ +export type BattlerTagTypeData = Parameters< + BattlerTagTypeMap[keyof { + [K in keyof BattlerTagTypeMap as K extends SerializableBattlerTagType ? K : never]: BattlerTagTypeMap[K]; + }]["loadTag"] +>[0]; + +/** + * Dummy, typescript-only declaration to ensure that + * {@linkcode BattlerTagTypeMap} has an entry for all `BattlerTagType`s. + * + * If a battler tag is missing from the map, Typescript will throw an error on this statement. + * + * ⚠️ Does not actually exist at runtime, so it must not be used! + */ +declare const EnsureAllBattlerTagTypesAreMapped: BattlerTagTypeMap[BattlerTagType] & never; diff --git a/src/@types/enum-types.ts b/src/@types/helpers/enum-types.ts similarity index 68% rename from src/@types/enum-types.ts rename to src/@types/helpers/enum-types.ts index 84df0a96505..2461f900c6b 100644 --- a/src/@types/enum-types.ts +++ b/src/@types/helpers/enum-types.ts @@ -1,18 +1,14 @@ +import type { ObjectValues } from "#types/type-helpers"; + /** Union type accepting any TS Enum or `const object`, with or without reverse mapping. */ export type EnumOrObject = Record; -/** - * Utility type to extract the enum values from a `const object`, - * or convert an `enum` interface produced by `typeof Enum` into the union type representing its values. - */ -export type EnumValues = E[keyof E]; - /** * Generic type constraint representing a TS numeric enum with reverse mappings. * @example * TSNumericEnum */ -export type TSNumericEnum = number extends EnumValues ? T : never; +export type TSNumericEnum = number extends ObjectValues ? T : never; /** Generic type constraint representing a non reverse-mapped TS enum or `const object`. */ export type NormalEnum = Exclude>; diff --git a/src/@types/type-helpers.ts b/src/@types/helpers/type-helpers.ts similarity index 61% rename from src/@types/type-helpers.ts rename to src/@types/helpers/type-helpers.ts index 3a5c88e3f15..7ad20b88956 100644 --- a/src/@types/type-helpers.ts +++ b/src/@types/helpers/type-helpers.ts @@ -6,8 +6,6 @@ import type { AbAttr } from "#abilities/ability"; // biome-ignore-end lint/correctness/noUnusedImports: Used in a tsdoc comment -import type { EnumValues } from "#types/enum-types"; - /** * Exactly matches the type of the argument, preventing adding additional properties. * @@ -37,16 +35,25 @@ export type Mutable = { }; /** - * Type helper to obtain the keys associated with a given value inside a `const object`. + * Type helper to obtain the keys associated with a given value inside an object. * @typeParam O - The type of the object * @typeParam V - The type of one of O's values */ -export type InferKeys, V extends EnumValues> = { +export type InferKeys> = { [K in keyof O]: O[K] extends V ? K : never; }[keyof O]; /** - * Type helper that matches any `Function` type. Equivalent to `Function`, but will not raise a warning from Biome. + * Utility type to obtain the values of a given object. \ + * Functions similar to `keyof E`, except producing the values instead of the keys. + * @remarks + * This can be used to convert an `enum` interface produced by `typeof Enum` into the union type representing its members. + */ +export type ObjectValues = E[keyof E]; + +/** + * Type helper that matches any `Function` type. + * Equivalent to `Function`, but will not raise a warning from Biome. */ export type AnyFn = (...args: any[]) => any; @@ -65,6 +72,7 @@ export type NonFunctionProperties = { /** * Type helper to extract out non-function properties from a type, recursively applying to nested properties. + * This can be used to mimic the effects of JSON serialization and de-serialization on a given type. */ export type NonFunctionPropertiesRecursive = { [K in keyof Class as Class[K] extends AnyFn ? never : K]: Class[K] extends Array @@ -75,3 +83,23 @@ export type NonFunctionPropertiesRecursive = { }; export type AbstractConstructor = abstract new (...args: any[]) => T; + +/** + * Type helper that iterates through the fields of the type and coerces any `null` properties to `undefined` (including in union types). + * + * @remarks + * This is primarily useful when an object with nullable properties wants to be serialized and have its `null` + * properties coerced to `undefined`. + */ +export type CoerceNullPropertiesToUndefined = { + [K in keyof T]: null extends T[K] ? Exclude | undefined : T[K]; +}; + +/** + * Type helper to mark all properties in `T` as optional, while still mandating that at least 1 + * of its properties be present. + * + * Distinct from {@linkcode Partial} as this requires at least 1 property to _not_ be undefined. + * @typeParam T - The type to render partial + */ +export type AtLeastOne = Partial & ObjectValues<{ [K in keyof T]: Pick, K> }>; diff --git a/src/@types/illusion-data.ts b/src/@types/illusion-data.ts index 854c98c8cc9..5bf86d23ac2 100644 --- a/src/@types/illusion-data.ts +++ b/src/@types/illusion-data.ts @@ -8,20 +8,14 @@ import type { Variant } from "#sprites/variant"; * Data pertaining to a Pokemon's Illusion. */ export interface IllusionData { - basePokemon: { - /** The actual name of the Pokemon */ - name: string; - /** The actual nickname of the Pokemon */ - nickname: string; - /** Whether the base pokemon is shiny or not */ - shiny: boolean; - /** The shiny variant of the base pokemon */ - variant: Variant; - /** Whether the fusion species of the base pokemon is shiny or not */ - fusionShiny: boolean; - /** The variant of the fusion species of the base pokemon */ - fusionVariant: Variant; - }; + /** The name of pokemon featured in the illusion */ + name: string; + /** The nickname of the pokemon featured in the illusion */ + nickname?: string; + /** Whether the pokemon featured in the illusion is shiny or not */ + shiny: boolean; + /** The variant of the pokemon featured in the illusion */ + variant: Variant; /** The species of the illusion */ species: SpeciesId; /** The formIndex of the illusion */ @@ -34,6 +28,10 @@ export interface IllusionData { fusionSpecies?: PokemonSpecies; /** The fusionFormIndex of the illusion */ fusionFormIndex?: number; + /** Whether the fusion species of the pokemon featured in the illusion is shiny or not */ + fusionShiny?: boolean; + /** The variant of the fusion species of the pokemon featured in the illusion */ + fusionVariant?: Variant; /** The fusionGender of the illusion if it's a fusion */ fusionGender?: Gender; /** The level of the illusion (not used currently) */ diff --git a/src/@types/modifier-types.ts b/src/@types/modifier-types.ts index 28b39d1a151..13a84a984e2 100644 --- a/src/@types/modifier-types.ts +++ b/src/@types/modifier-types.ts @@ -3,6 +3,7 @@ import type { Pokemon } from "#field/pokemon"; import type { ModifierConstructorMap } from "#modifiers/modifier"; import type { ModifierType, WeightedModifierType } from "#modifiers/modifier-type"; +import type { ObjectValues } from "#types/type-helpers"; export type ModifierTypeFunc = () => ModifierType; export type WeightedModifierTypeWeightFunc = (party: Pokemon[], rerollCount?: number) => number; @@ -19,7 +20,7 @@ export type ModifierInstanceMap = { /** * Union type of all modifier constructors. */ -export type ModifierClass = ModifierConstructorMap[keyof ModifierConstructorMap]; +export type ModifierClass = ObjectValues; /** * Union type of all modifier names as strings. diff --git a/src/@types/phase-types.ts b/src/@types/phase-types.ts index 1d68c7921dd..91673053747 100644 --- a/src/@types/phase-types.ts +++ b/src/@types/phase-types.ts @@ -1,4 +1,5 @@ import type { PhaseConstructorMap } from "#app/phase-manager"; +import type { ObjectValues } from "#types/type-helpers"; // Intentionally export the types of everything in phase-manager, as this file is meant to be // the centralized place for type definitions for the phase system. @@ -17,7 +18,7 @@ export type PhaseMap = { /** * Union type of all phase constructors. */ -export type PhaseClass = PhaseConstructorMap[keyof PhaseConstructorMap]; +export type PhaseClass = ObjectValues; /** * Union type of all phase names as strings. diff --git a/src/@types/SessionSaveMigrator.ts b/src/@types/session-save-migrator.ts similarity index 100% rename from src/@types/SessionSaveMigrator.ts rename to src/@types/session-save-migrator.ts diff --git a/src/@types/SettingsSaveMigrator.ts b/src/@types/settings-save-migrator.ts similarity index 100% rename from src/@types/SettingsSaveMigrator.ts rename to src/@types/settings-save-migrator.ts diff --git a/src/@types/SystemSaveMigrator.ts b/src/@types/system-save-migrator.ts similarity index 100% rename from src/@types/SystemSaveMigrator.ts rename to src/@types/system-save-migrator.ts diff --git a/src/@types/ui.ts b/src/@types/ui.ts new file mode 100644 index 00000000000..10dab01c616 --- /dev/null +++ b/src/@types/ui.ts @@ -0,0 +1,10 @@ +import type Phaser from "phaser"; +import type InputText from "phaser3-rex-plugins/plugins/gameobjects/dom/inputtext/InputText"; + +export interface TextStyleOptions { + scale: number; + styleOptions: Phaser.Types.GameObjects.Text.TextStyle | InputText.IConfig; + shadowColor: string; + shadowXpos: number; + shadowYpos: number; +} diff --git a/src/@types/UserInfo.ts b/src/@types/user-info.ts similarity index 100% rename from src/@types/UserInfo.ts rename to src/@types/user-info.ts diff --git a/src/account.ts b/src/account.ts index 1bfb756b284..b01691ce940 100644 --- a/src/account.ts +++ b/src/account.ts @@ -1,6 +1,6 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { bypassLogin } from "#app/global-vars/bypass-login"; -import type { UserInfo } from "#types/UserInfo"; +import type { UserInfo } from "#types/user-info"; import { randomString } from "#utils/common"; export let loggedInUser: UserInfo | null = null; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index bb28fb0d5b6..8c8906be2b0 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -67,6 +67,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { ShopCursorTarget } from "#enums/shop-cursor-target"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; +import { TextStyle } from "#enums/text-style"; import type { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; import { TrainerVariant } from "#enums/trainer-variant"; @@ -132,7 +133,7 @@ import { CharSprite } from "#ui/char-sprite"; import { PartyExpBar } from "#ui/party-exp-bar"; import { PokeballTray } from "#ui/pokeball-tray"; import { PokemonInfoContainer } from "#ui/pokemon-info-container"; -import { addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addTextObject, getTextColor } from "#ui/text"; import { UI } from "#ui/ui"; import { addUiThemeOverrides } from "#ui/ui-theme"; import { @@ -236,6 +237,7 @@ export class BattleScene extends SceneBase { public enableTouchControls = false; public enableVibration = false; public showBgmBar = true; + public hideUsername = false; /** Determines the selected battle style. */ public battleStyle: BattleStyle = BattleStyle.SWITCH; /** @@ -378,9 +380,21 @@ export class BattleScene extends SceneBase { }; } - populateAnims(); + /** + * These moves serve as fallback animations for other moves without loaded animations, and + * must be loaded prior to game start. + */ + const defaultMoves = [MoveId.TACKLE, MoveId.TAIL_WHIP, MoveId.FOCUS_ENERGY, MoveId.STRUGGLE]; - await this.initVariantData(); + await Promise.all([ + populateAnims(), + this.initVariantData(), + initCommonAnims().then(() => loadCommonAnimAssets(true)), + Promise.all(defaultMoves.map(m => initMoveAnim(m))).then(() => loadMoveAnimAssets(defaultMoves, true)), + this.initStarterColors(), + ]).catch(reason => { + throw new Error(`Unexpected error during BattleScene preLoad!\nReason: ${reason}`); + }); } create() { @@ -582,8 +596,6 @@ export class BattleScene extends SceneBase { this.party = []; - const loadPokemonAssets = []; - this.arenaPlayer = new ArenaBase(true); this.arenaPlayer.setName("arena-player"); this.arenaPlayerTransition = new ArenaBase(true); @@ -638,28 +650,14 @@ export class BattleScene extends SceneBase { this.reset(false, false, true); + // Initialize UI-related aspects and then start the login phase. const ui = new UI(); this.uiContainer.add(ui); - this.ui = ui; - ui.setup(); - const defaultMoves = [MoveId.TACKLE, MoveId.TAIL_WHIP, MoveId.FOCUS_ENERGY, MoveId.STRUGGLE]; - - Promise.all([ - Promise.all(loadPokemonAssets), - initCommonAnims().then(() => loadCommonAnimAssets(true)), - Promise.all( - [MoveId.TACKLE, MoveId.TAIL_WHIP, MoveId.FOCUS_ENERGY, MoveId.STRUGGLE].map(m => initMoveAnim(m)), - ).then(() => loadMoveAnimAssets(defaultMoves, true)), - this.initStarterColors(), - ]).then(() => { - this.phaseManager.pushNew("LoginPhase"); - this.phaseManager.pushNew("TitlePhase"); - - this.phaseManager.shiftPhase(); - }); + this.phaseManager.toTitleScreen(true); + this.phaseManager.shiftPhase(); } initSession(): void { @@ -699,16 +697,16 @@ export class BattleScene extends SceneBase { if (expSpriteKeys.size > 0) { return; } - this.cachedFetch("./exp-sprites.json") - .then(res => res.json()) - .then(keys => { - if (Array.isArray(keys)) { - for (const key of keys) { - expSpriteKeys.add(key); - } - } - Promise.resolve(); - }); + const res = await this.cachedFetch("./exp-sprites.json"); + const keys = await res.json(); + if (!Array.isArray(keys)) { + throw new Error("EXP Sprites were not array when fetched!"); + } + + // TODO: Optimize this + for (const k of keys) { + expSpriteKeys.add(k); + } } /** @@ -1267,13 +1265,12 @@ export class BattleScene extends SceneBase { duration: 250, ease: "Sine.easeInOut", onComplete: () => { - this.phaseManager.clearPhaseQueue(); - this.ui.freeUIData(); this.uiContainer.remove(this.ui, true); this.uiContainer.destroy(); this.children.removeAll(true); this.game.domContainer.innerHTML = ""; + // TODO: `launchBattle` calls `reset(false, false, true)` this.launchBattle(); }, }); @@ -1669,6 +1666,11 @@ export class BattleScene extends SceneBase { case SpeciesId.MAUSHOLD: case SpeciesId.DUDUNSPARCE: return !randSeedInt(4) ? 1 : 0; + case SpeciesId.SINISTEA: + case SpeciesId.POLTEAGEIST: + case SpeciesId.POLTCHAGEIST: + case SpeciesId.SINISTCHA: + return !randSeedInt(16) ? 1 : 0; case SpeciesId.PIKACHU: if (this.currentBattle?.battleType === BattleType.TRAINER && this.currentBattle?.waveIndex < 30) { return 0; // Ban Cosplay and Partner Pika from Trainers before wave 30 @@ -2841,6 +2843,23 @@ export class BattleScene extends SceneBase { } return false; } + /** + * Attempt to discard one or more copies of a held item. + * @param itemModifier - The {@linkcode PokemonHeldItemModifier} being discarded + * @param discardQuantity - The number of copies to remove (up to the amount currently held); default `1` + * @returns Whether the item was successfully discarded. + * Removing fewer items than requested is still considered a success. + */ + tryDiscardHeldItemModifier(itemModifier: PokemonHeldItemModifier, discardQuantity = 1): boolean { + const countTaken = Math.min(discardQuantity, itemModifier.stackCount); + itemModifier.stackCount -= countTaken; + + if (itemModifier.stackCount > 0) { + return true; + } + + return this.removeModifier(itemModifier); + } canTransferHeldItemModifier(itemModifier: PokemonHeldItemModifier, target: Pokemon, transferQuantity = 1): boolean { const mod = itemModifier.clone() as PokemonHeldItemModifier; @@ -3509,6 +3528,7 @@ export class BattleScene extends SceneBase { this.gameMode.hasMysteryEncounters && battleType === BattleType.WILD && !this.gameMode.isBoss(waveIndex) && + waveIndex % 10 !== 1 && waveIndex < highestMysteryEncounterWave && waveIndex > lowestMysteryEncounterWave ); diff --git a/src/configs/inputs/cfg_keyboard_qwerty.ts b/src/configs/inputs/cfg-keyboard-qwerty.ts similarity index 100% rename from src/configs/inputs/cfg_keyboard_qwerty.ts rename to src/configs/inputs/cfg-keyboard-qwerty.ts diff --git a/src/configs/inputs/configHandler.ts b/src/configs/inputs/config-handler.ts similarity index 100% rename from src/configs/inputs/configHandler.ts rename to src/configs/inputs/config-handler.ts diff --git a/src/configs/inputs/pad_dualshock.ts b/src/configs/inputs/pad-dualshock.ts similarity index 100% rename from src/configs/inputs/pad_dualshock.ts rename to src/configs/inputs/pad-dualshock.ts diff --git a/src/configs/inputs/pad_generic.ts b/src/configs/inputs/pad-generic.ts similarity index 100% rename from src/configs/inputs/pad_generic.ts rename to src/configs/inputs/pad-generic.ts diff --git a/src/configs/inputs/pad_procon.ts b/src/configs/inputs/pad-procon.ts similarity index 100% rename from src/configs/inputs/pad_procon.ts rename to src/configs/inputs/pad-procon.ts diff --git a/src/configs/inputs/pad_unlicensedSNES.ts b/src/configs/inputs/pad-unlicensed-snes.ts similarity index 100% rename from src/configs/inputs/pad_unlicensedSNES.ts rename to src/configs/inputs/pad-unlicensed-snes.ts diff --git a/src/configs/inputs/pad_xbox360.ts b/src/configs/inputs/pad-xbox360.ts similarity index 100% rename from src/configs/inputs/pad_xbox360.ts rename to src/configs/inputs/pad-xbox360.ts diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 30f6f6fb8b2..2f57df4a551 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -15,6 +15,7 @@ import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeWeatherTrigger } from import { Gender } from "#data/gender"; import { getPokeballName } from "#data/pokeball"; import { pokemonFormChanges } from "#data/pokemon-forms"; +import type { PokemonSpecies } from "#data/pokemon-species"; import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#data/status-effect"; import { TerrainType } from "#data/terrain"; import type { Weather } from "#data/weather"; @@ -28,12 +29,12 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import type { BerryType } from "#enums/berry-type"; import { Command } from "#enums/command"; import { HitResult } from "#enums/hit-result"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveTarget } from "#enums/MoveTarget"; import { CommonAnim } from "#enums/move-anims-common"; +import { MoveCategory } from "#enums/move-category"; +import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; +import { MoveTarget } from "#enums/move-target"; import { MoveUseMode } from "#enums/move-use-mode"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { PokemonType } from "#enums/pokemon-type"; @@ -1767,7 +1768,7 @@ export interface AddSecondStrikeAbAttrParams extends Omit p.isAllowedInBattle(), ); - const lastPokemon: Pokemon = party.filter(p => p !== pokemon).at(-1) || pokemon; - pokemon.setIllusion(lastPokemon); + let illusionPokemon: Pokemon | PokemonSpecies; + if (pokemon.hasTrainer()) { + illusionPokemon = party.filter(p => p !== pokemon).at(-1) || pokemon; + } else { + illusionPokemon = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, pokemon.level); + } + pokemon.setIllusion(illusionPokemon); } /** @returns Whether the illusion can be applied. */ diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index b25e79649a0..15c2cde1d58 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1,3 +1,7 @@ +/** biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports */ +import type { BattlerTag } from "#app/data/battler-tags"; +/** biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports */ + import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -6,58 +10,72 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagType } from "#enums/arena-tag-type"; -import type { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { HitResult } from "#enums/hit-result"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveTarget } from "#enums/MoveTarget"; import { CommonAnim } from "#enums/move-anims-common"; +import { MoveCategory } from "#enums/move-category"; import { MoveId } from "#enums/move-id"; -import { MoveUseMode } from "#enums/move-use-mode"; +import { MoveTarget } from "#enums/move-target"; import { PokemonType } from "#enums/pokemon-type"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import type { Arena } from "#field/arena"; import type { Pokemon } from "#field/pokemon"; import type { - ArenaDelayedAttackTagType, ArenaScreenTagType, ArenaTagTypeData, ArenaTrapTagType, SerializableArenaTagType, } from "#types/arena-tags"; -import type { Mutable, NonFunctionProperties } from "#types/type-helpers"; +import type { Mutable } from "#types/type-helpers"; import { BooleanHolder, NumberHolder, toDmgValue } from "#utils/common"; import i18next from "i18next"; -/* -ArenaTags are are meant for effects that are tied to the arena (as opposed to a specific pokemon). -Examples include (but are not limited to) -- Cross-turn effects that persist even if the user/target switches out, such as Wish, Future Sight, and Happy Hour -- Effects that are applied to a specific side of the field, such as Crafty Shield, Reflect, and Spikes -- Field-Effects, like Gravity and Trick Room - -Any arena tag that persists across turns *must* extend from `SerializableArenaTag` in the class definition signature. - -Serializable ArenaTags have strict rules for their fields. -These rules ensure that only the data necessary to reconstruct the tag is serialized, and that the -session loader is able to deserialize saved tags correctly. - -If the data is static (i.e. it is always the same for all instances of the class, such as the -type that is weakened by Mud Sport/Water Sport), then it must not be defined as a field, and must -instead be defined as a getter. -A static property is also acceptable, though static properties are less ergonomic with inheritance. - -If the data is mutable (i.e. it can change over the course of the tag's lifetime), then it *must* -be defined as a field, and it must be set in the `loadTag` method. -Such fields cannot be marked as `private/protected`, as if they were, typescript would omit them from -types that are based off of the class, namely, `ArenaTagTypeData`. It is preferrable to trade the -type-safety of private/protected fields for the type safety when deserializing arena tags from save data. - -For data that is mutable only within a turn (e.g. SuppressAbilitiesTag's beingRemoved field), -where it does not make sense to be serialized, the field should use ES2020's private field syntax (a `#` prepended to the field name). -If the field should be accessible outside of the class, then a public getter should be used. -*/ +/** + * @module + * ArenaTags are are meant for effects that are tied to the arena (as opposed to a specific pokemon). + * Examples include (but are not limited to) + * - Cross-turn effects that persist even if the user/target switches out, such as Happy Hour + * - Effects that are applied to a specific side of the field, such as Crafty Shield, Reflect, and Spikes + * - Field-Effects, like Gravity and Trick Room + * + * Any arena tag that persists across turns *must* extend from `SerializableArenaTag` in the class definition signature. + * + * Serializable ArenaTags have strict rules for their fields. + * These rules ensure that only the data necessary to reconstruct the tag is serialized, and that the + * session loader is able to deserialize saved tags correctly. + * + * If the data is static (i.e. it is always the same for all instances of the class, such as the + * type that is weakened by Mud Sport/Water Sport), then it must not be defined as a field, and must + * instead be defined as a getter. + * A static property is also acceptable, though static properties are less ergonomic with inheritance. + * + * If the data is mutable (i.e. it can change over the course of the tag's lifetime), then it *must* + * be defined as a field, and it must be set in the `loadTag` method. + * Such fields cannot be marked as `private`/`protected`; if they were, Typescript would omit them from + * types that are based off of the class, namely, `ArenaTagTypeData`. It is preferrable to trade the + * type-safety of private/protected fields for the type safety when deserializing arena tags from save data. + * + * For data that is mutable only within a turn (e.g. SuppressAbilitiesTag's beingRemoved field), + * where it does not make sense to be serialized, the field should use ES2020's + * [private field syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_elements#private_fields). + * If the field should be accessible outside of the class, then a public getter should be used. + * + * If any new serializable fields *are* added, then the class *must* override the + * `loadTag` method to set the new fields. Its signature *must* match the example below, + * ``` + * class ExampleTag extends SerializableArenaTag { + * // Example, if we add 2 new fields that should be serialized: + * public a: string; + * public b: number; + * // Then we must also define a loadTag method with one of the following signatures + * public override loadTag(source: BaseArenaTag & Pick(source: BaseArenaTag & Pick): void; + * } + * ``` + * Notes + * - If the class has any subclasses, then the second form of `loadTag` *must* be used. + */ /** Interface containing the serializable fields of ArenaTagData. */ interface BaseArenaTag { @@ -141,9 +159,9 @@ export abstract class ArenaTag implements BaseArenaTag { /** * When given a arena tag or json representing one, load the data for it. * This is meant to be inherited from by any arena tag with custom attributes - * @param source - The {@linkcode BaseArenaTag} being loaded + * @param source - The arena tag being loaded */ - loadTag(source: BaseArenaTag): void { + loadTag(source: BaseArenaTag & Pick): void { this.turnCount = source.turnCount; this.sourceMove = source.sourceMove; this.sourceId = source.sourceId; @@ -604,56 +622,6 @@ export class NoCritTag extends SerializableArenaTag { } } -/** - * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Wish_(move) | Wish}. - * Heals the Pokémon in the user's position the turn after Wish is used. - */ -class WishTag extends SerializableArenaTag { - // The following fields are meant to be inwardly mutable, but outwardly immutable. - readonly battlerIndex: BattlerIndex; - readonly healHp: number; - readonly sourceName: string; - // End inwardly mutable fields - - public readonly tagType = ArenaTagType.WISH; - - constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { - super(turnCount, MoveId.WISH, sourceId, side); - } - - onAdd(_arena: Arena): void { - const source = this.getSourcePokemon(); - if (!source) { - console.warn(`Failed to get source Pokemon for WishTag on add message; id: ${this.sourceId}`); - return; - } - - (this as Mutable).sourceName = getPokemonNameWithAffix(source); - (this as Mutable).healHp = toDmgValue(source.getMaxHp() / 2); - (this as Mutable).battlerIndex = source.getBattlerIndex(); - } - - onRemove(_arena: Arena): void { - const target = globalScene.getField()[this.battlerIndex]; - if (target?.isActive(true)) { - globalScene.phaseManager.queueMessage( - // TODO: Rename key as it triggers on activation - i18next.t("arenaTag:wishTagOnAdd", { - pokemonNameWithAffix: this.sourceName, - }), - ); - globalScene.phaseManager.unshiftNew("PokemonHealPhase", target.getBattlerIndex(), this.healHp, null, true, false); - } - } - - override loadTag(source: NonFunctionProperties): void { - super.loadTag(source); - (this as Mutable).battlerIndex = source.battlerIndex; - (this as Mutable).healHp = source.healHp; - (this as Mutable).sourceName = source.sourceName; - } -} - /** * Abstract class to implement weakened moves of a specific type. */ @@ -813,7 +781,7 @@ export abstract class ArenaTrapTag extends SerializableArenaTag { : Phaser.Math.Linear(0, 1 / Math.pow(2, this.layers), Math.min(pokemon.getHpRatio(), 0.5) * 2); } - loadTag(source: NonFunctionProperties): void { + public loadTag(source: BaseArenaTag & Pick): void { super.loadTag(source); this.layers = source.layers; this.maxLayers = source.maxLayers; @@ -1126,48 +1094,6 @@ class StickyWebTag extends ArenaTrapTag { } } -/** - * Arena Tag class for delayed attacks, such as {@linkcode MoveId.FUTURE_SIGHT} or {@linkcode MoveId.DOOM_DESIRE}. - * Delays the attack's effect by a set amount of turns, usually 3 (including the turn the move is used), - * and deals damage after the turn count is reached. - */ -export class DelayedAttackTag extends SerializableArenaTag { - public targetIndex: BattlerIndex; - public readonly tagType: ArenaDelayedAttackTagType; - - constructor( - tagType: ArenaTagType.DOOM_DESIRE | ArenaTagType.FUTURE_SIGHT, - sourceMove: MoveId | undefined, - sourceId: number | undefined, - targetIndex: BattlerIndex, - side: ArenaTagSide = ArenaTagSide.BOTH, - ) { - super(3, sourceMove, sourceId, side); - this.tagType = tagType; - this.targetIndex = targetIndex; - this.side = side; - } - - lapse(arena: Arena): boolean { - const ret = super.lapse(arena); - - if (!ret) { - // TODO: This should not add to move history (for Spite) - globalScene.phaseManager.unshiftNew( - "MoveEffectPhase", - this.sourceId!, - [this.targetIndex], - allMoves[this.sourceMove!], - MoveUseMode.FOLLOW_UP, - ); // TODO: are those bangs correct? - } - - return ret; - } - - onRemove(_arena: Arena): void {} -} - /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Trick_Room_(move) Trick Room}. * Reverses the Speed stats for all Pokémon on the field as long as this arena tag is up, @@ -1581,7 +1507,7 @@ export class SuppressAbilitiesTag extends SerializableArenaTag { this.#beingRemoved = false; } - public override loadTag(source: NonFunctionProperties): void { + public override loadTag(source: BaseArenaTag & Pick): void { super.loadTag(source); (this as Mutable).sourceCount = source.sourceCount; } @@ -1663,7 +1589,6 @@ export function getArenaTag( turnCount: number, sourceMove: MoveId | undefined, sourceId: number | undefined, - targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH, ): ArenaTag | null { switch (tagType) { @@ -1689,14 +1614,6 @@ export function getArenaTag( return new SpikesTag(sourceId, side); case ArenaTagType.TOXIC_SPIKES: return new ToxicSpikesTag(sourceId, side); - case ArenaTagType.FUTURE_SIGHT: - case ArenaTagType.DOOM_DESIRE: - if (!targetIndex) { - return null; // If missing target index, no tag is created - } - return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex, side); - case ArenaTagType.WISH: - return new WishTag(turnCount, sourceId, side); case ArenaTagType.STEALTH_ROCK: return new StealthRockTag(sourceId, side); case ArenaTagType.STICKY_WEB: @@ -1739,16 +1656,12 @@ export function getArenaTag( * @param source - An arena tag * @returns The valid arena tag */ -export function loadArenaTag(source: (ArenaTag | ArenaTagTypeData) & { targetIndex?: BattlerIndex }): ArenaTag { +export function loadArenaTag(source: ArenaTag | ArenaTagTypeData | { tagType: ArenaTagType.NONE }): ArenaTag { + if (source.tagType === ArenaTagType.NONE) { + return new NoneTag(); + } const tag = - getArenaTag( - source.tagType, - source.turnCount, - source.sourceMove, - source.sourceId, - source.targetIndex, - source.side, - ) ?? new NoneTag(); + getArenaTag(source.tagType, source.turnCount, source.sourceMove, source.sourceId, source.side) ?? new NoneTag(); tag.loadTag(source); return tag; } @@ -1765,9 +1678,6 @@ export type ArenaTagTypeMap = { [ArenaTagType.CRAFTY_SHIELD]: CraftyShieldTag; [ArenaTagType.NO_CRIT]: NoCritTag; [ArenaTagType.TOXIC_SPIKES]: ToxicSpikesTag; - [ArenaTagType.FUTURE_SIGHT]: DelayedAttackTag; - [ArenaTagType.DOOM_DESIRE]: DelayedAttackTag; - [ArenaTagType.WISH]: WishTag; [ArenaTagType.STEALTH_ROCK]: StealthRockTag; [ArenaTagType.STICKY_WEB]: StickyWebTag; [ArenaTagType.TRICK_ROOM]: TrickRoomTag; diff --git a/src/data/balance/biomes.ts b/src/data/balance/biomes.ts index 32195b90e43..1298e80c362 100644 --- a/src/data/balance/biomes.ts +++ b/src/data/balance/biomes.ts @@ -86,7 +86,7 @@ export enum BiomePoolTier { export const uncatchableSpecies: SpeciesId[] = []; -export interface SpeciesTree { +interface SpeciesTree { [key: number]: SpeciesId[] } @@ -94,11 +94,11 @@ export interface PokemonPools { [key: number]: (SpeciesId | SpeciesTree)[] } -export interface BiomeTierPokemonPools { +interface BiomeTierPokemonPools { [key: number]: PokemonPools } -export interface BiomePokemonPools { +interface BiomePokemonPools { [key: number]: BiomeTierPokemonPools } @@ -1291,11 +1291,11 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BELDUM ], 20: [ SpeciesId.METANG ], 45: [ SpeciesId.METAGROSS ] }, SpeciesId.SIGILYPH, { 1: [ SpeciesId.SOLOSIS ], 32: [ SpeciesId.DUOSION ], 41: [ SpeciesId.REUNICLUS ] } ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ] } ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.COSMOG ], 23: [ SpeciesId.COSMOEM ] }, SpeciesId.CELESTEELA ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.COSMOG ], 60: [ SpeciesId.COSMOEM ] }, SpeciesId.CELESTEELA ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.SOLROCK ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.LUNATONE ], [TimeOfDay.ALL]: [ SpeciesId.CLEFABLE, SpeciesId.BRONZONG, SpeciesId.MUSHARNA, SpeciesId.REUNICLUS, SpeciesId.MINIOR ] }, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.METAGROSS, SpeciesId.PORYGON_Z ] }, [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CELESTEELA ] }, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.SOLGALEO ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.LUNALA ], [TimeOfDay.ALL]: [ SpeciesId.RAYQUAZA, SpeciesId.NECROZMA ] } + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ { 1: [ SpeciesId.COSMOG ], 60: [ SpeciesId.COSMOEM ], 80: [ SpeciesId.SOLGALEO ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.COSMOG ], 60: [ SpeciesId.COSMOEM ], 80: [ SpeciesId.LUNALA ] } ], [TimeOfDay.ALL]: [ SpeciesId.RAYQUAZA, SpeciesId.NECROZMA ] } }, [BiomeId.CONSTRUCTION_SITE]: { [BiomePoolTier.COMMON]: { @@ -2022,7 +2022,6 @@ export const biomeTrainerPools: BiomeTrainerPools = { } }; -// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: init methods are expected to have many lines. export function initBiomes() { const pokemonBiomes = [ [ SpeciesId.BULBASAUR, PokemonType.GRASS, PokemonType.POISON, [ diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index f5026abe2ef..3475fe4fdea 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -1,8 +1,8 @@ import { allMoves } from "#data/data-lists"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { toReadableString } from "#utils/common"; import { getEnumKeys, getEnumValues } from "#utils/enums"; +import { toTitleCase } from "#utils/strings"; export const speciesEggMoves = { [SpeciesId.BULBASAUR]: [ MoveId.SAPPY_SEED, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.MATCHA_GOTCHA ], @@ -617,7 +617,7 @@ function parseEggMoves(content: string): void { } if (eggMoves.every(m => m === MoveId.NONE)) { - console.warn(`Species ${toReadableString(SpeciesId[species])} could not be parsed, excluding from output...`) + console.warn(`Species ${toTitleCase(SpeciesId[species])} could not be parsed, excluding from output...`) } else { output += `[SpeciesId.${SpeciesId[species]}]: [ ${eggMoves.map(m => `MoveId.${MoveId[m]}`).join(", ")} ],\n`; } diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index c632889326d..ab535682e86 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -1191,11 +1191,11 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(SpeciesId.KOMMO_O, 45, null, null) ], [SpeciesId.COSMOG]: [ - new SpeciesEvolution(SpeciesId.COSMOEM, 23, null, null) + new SpeciesEvolution(SpeciesId.COSMOEM, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 43}, SpeciesWildEvolutionDelay.VERY_LONG) ], [SpeciesId.COSMOEM]: [ - new SpeciesEvolution(SpeciesId.SOLGALEO, 1, EvolutionItem.SUN_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(SpeciesId.LUNALA, 1, EvolutionItem.MOON_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(SpeciesId.SOLGALEO, 13, EvolutionItem.SUN_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(SpeciesId.LUNALA, 13, EvolutionItem.MOON_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [SpeciesId.MELTAN]: [ new SpeciesEvolution(SpeciesId.MELMETAL, 48, null, null) @@ -1824,7 +1824,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(SpeciesId.ROSELIA, 1, null, [{key: EvoCondKey.FRIENDSHIP, value: 70}, {key: EvoCondKey.TIME, time: [TimeOfDay.DAWN, TimeOfDay.DAY]}], SpeciesWildEvolutionDelay.SHORT) ], [SpeciesId.BUNEARY]: [ - new SpeciesEvolution(SpeciesId.LOPUNNY, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 70}, SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(SpeciesId.LOPUNNY, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 50}, SpeciesWildEvolutionDelay.MEDIUM) ], [SpeciesId.CHINGLING]: [ new SpeciesEvolution(SpeciesId.CHIMECHO, 1, null, [{key: EvoCondKey.FRIENDSHIP, value: 90}, {key: EvoCondKey.TIME, time: [TimeOfDay.DUSK, TimeOfDay.NIGHT]}], SpeciesWildEvolutionDelay.MEDIUM) diff --git a/src/data/balance/pokemon-species.ts b/src/data/balance/pokemon-species.ts new file mode 100644 index 00000000000..5e9d352f437 --- /dev/null +++ b/src/data/balance/pokemon-species.ts @@ -0,0 +1,1784 @@ +import { allSpecies } from "#data/data-lists"; +import { GrowthRate } from "#data/exp"; +import { PokemonForm, PokemonSpecies } from "#data/pokemon-species"; +import { AbilityId } from "#enums/ability-id"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesFormKey } from "#enums/species-form-key"; +import { SpeciesId } from "#enums/species-id"; + +// biome-ignore format: manually formatted +export function initSpecies() { + allSpecies.push( + new PokemonSpecies(SpeciesId.BULBASAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 6.9, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 318, 45, 49, 49, 65, 65, 45, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.IVYSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 13, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 405, 60, 62, 63, 80, 80, 60, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.VENUSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 2, 100, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.POISON, 2, 100, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.POISON, 2.4, 155.5, AbilityId.THICK_FAT, AbilityId.THICK_FAT, AbilityId.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.POISON, 24, 999.9, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.EFFECT_SPORE, 625, 120, 122, 90, 108, 105, 80, 45, 50, 263, true) + ), + new PokemonSpecies(SpeciesId.CHARMANDER, 1, false, false, false, "Lizard Pokémon", PokemonType.FIRE, null, 0.6, 8.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHARMELEON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 1.1, 19, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHARIZARD, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), + new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.FIRE, PokemonType.DRAGON, 1.7, 110.5, AbilityId.TOUGH_CLAWS, AbilityId.NONE, AbilityId.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), + new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.FIRE, PokemonType.FLYING, 1.7, 100.5, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.FLYING, 28, 999.9, AbilityId.BERSERK, AbilityId.NONE, AbilityId.BERSERK, 634, 118, 99, 88, 134, 95, 100, 45, 50, 267) + ), + new PokemonSpecies(SpeciesId.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", PokemonType.WATER, null, 0.5, 9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.WARTORTLE, 1, false, false, false, "Turtle Pokémon", PokemonType.WATER, null, 1, 22.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", PokemonType.WATER, null, 1.6, 85.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.6, 85.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, null, 1.6, 101.1, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.STEEL, 25, 999.9, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.SHELL_ARMOR, 630, 119, 108, 125, 105, 110, 63, 45, 50, 265) + ), + new PokemonSpecies(SpeciesId.CATERPIE, 1, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 2.9, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.METAPOD, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 9.9, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.FLYING, 17, 999.9, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.COMPOUND_EYES, 495, 80, 40, 75, 120, 95, 85, 45, 50, 198, true) + ), + new PokemonSpecies(SpeciesId.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", PokemonType.BUG, PokemonType.POISON, 0.3, 3.2, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KAKUNA, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, PokemonType.POISON, 0.6, 10, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 29.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.POISON, 1, 29.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.POISON, 1.4, 40.5, AbilityId.ADAPTABILITY, AbilityId.NONE, AbilityId.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198) + ), + new PokemonSpecies(SpeciesId.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.8, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 30, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PIDGEOT, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FLYING, 2.2, 50.5, AbilityId.NO_GUARD, AbilityId.NO_GUARD, AbilityId.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240) + ), + new PokemonSpecies(SpeciesId.RATTATA, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.3, 3.5, AbilityId.RUN_AWAY, AbilityId.GUTS, AbilityId.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.RATICATE, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.7, 18.5, AbilityId.RUN_AWAY, AbilityId.GUTS, AbilityId.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SPEAROW, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.SNIPER, 262, 40, 60, 30, 31, 31, 70, 255, 70, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FEAROW, 1, false, false, false, "Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 38, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.SNIPER, 442, 65, 90, 65, 61, 61, 100, 90, 70, 155, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.EKANS, 1, false, false, false, "Snake Pokémon", PokemonType.POISON, null, 2, 6.9, AbilityId.INTIMIDATE, AbilityId.SHED_SKIN, AbilityId.UNNERVE, 288, 35, 60, 44, 40, 54, 55, 255, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ARBOK, 1, false, false, false, "Cobra Pokémon", PokemonType.POISON, null, 3.5, 65, AbilityId.INTIMIDATE, AbilityId.SHED_SKIN, AbilityId.UNNERVE, 448, 60, 95, 69, 65, 79, 80, 90, 70, 157, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PIKACHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, true, null, true), + new PokemonForm("Partner", "partner", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), + new PokemonForm("Cosplay", "cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Cool Cosplay", "cool-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Beauty Cosplay", "beauty-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Cute Cosplay", "cute-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Smart Cosplay", "smart-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Tough Cosplay", "tough-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, null, 21, 999.9, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112) + ), + new PokemonSpecies(SpeciesId.RAICHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.8, 30, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SANDSHREW, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 0.6, 12, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SANDSLASH, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 1, 29.5, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.SAND_RUSH, 450, 75, 100, 110, 45, 55, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NIDORAN_F, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.4, 7, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 275, 55, 47, 52, 40, 40, 41, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.NIDORINA, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.8, 20, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 365, 70, 62, 67, 55, 55, 56, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.NIDOQUEEN, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.3, 60, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.SHEER_FORCE, 505, 90, 92, 87, 75, 85, 76, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.NIDORAN_M, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.5, 9, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 273, 46, 57, 40, 40, 40, 50, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(SpeciesId.NIDORINO, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.9, 19.5, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 365, 61, 72, 57, 55, 55, 65, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(SpeciesId.NIDOKING, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.4, 62, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.SHEER_FORCE, 505, 81, 102, 77, 85, 75, 85, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(SpeciesId.CLEFAIRY, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.5, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.FRIEND_GUARD, 323, 70, 45, 48, 60, 65, 35, 150, 140, 113, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.CLEFABLE, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.3, 40, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.UNAWARE, 483, 95, 70, 73, 95, 90, 60, 25, 140, 242, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.VULPIX, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.6, 9.9, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.DROUGHT, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.NINETALES, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1.1, 19.9, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.DROUGHT, 505, 73, 76, 75, 81, 100, 100, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.JIGGLYPUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.5, 5.5, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRIEND_GUARD, 270, 115, 45, 20, 45, 25, 20, 170, 50, 95, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.WIGGLYTUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 1, 12, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRISK, 435, 140, 70, 45, 85, 50, 45, 50, 50, 218, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.ZUBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 0.8, 7.5, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 245, 40, 45, 35, 30, 40, 55, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.GOLBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.6, 55, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 455, 75, 80, 70, 65, 75, 90, 90, 50, 159, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ODDISH, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.5, 5.4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.RUN_AWAY, 320, 45, 50, 55, 75, 65, 30, 255, 50, 64, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLOOM, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.8, 8.6, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.STENCH, 395, 60, 65, 70, 85, 75, 40, 120, 50, 138, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.VILEPLUME, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.2, 18.6, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.EFFECT_SPORE, 490, 75, 80, 85, 110, 90, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.PARAS, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 5.4, AbilityId.EFFECT_SPORE, AbilityId.DRY_SKIN, AbilityId.DAMP, 285, 35, 70, 55, 45, 55, 25, 190, 70, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PARASECT, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 1, 29.5, AbilityId.EFFECT_SPORE, AbilityId.DRY_SKIN, AbilityId.DAMP, 405, 60, 95, 80, 60, 80, 30, 75, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VENONAT, 1, false, false, false, "Insect Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 30, AbilityId.COMPOUND_EYES, AbilityId.TINTED_LENS, AbilityId.RUN_AWAY, 305, 60, 55, 50, 40, 55, 45, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VENOMOTH, 1, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.5, 12.5, AbilityId.SHIELD_DUST, AbilityId.TINTED_LENS, AbilityId.WONDER_SKIN, 450, 70, 65, 60, 90, 75, 90, 75, 70, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DIGLETT, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.2, 0.8, AbilityId.SAND_VEIL, AbilityId.ARENA_TRAP, AbilityId.SAND_FORCE, 265, 10, 55, 25, 35, 45, 95, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUGTRIO, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.7, 33.3, AbilityId.SAND_VEIL, AbilityId.ARENA_TRAP, AbilityId.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", PokemonType.NORMAL, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 33, 999.9, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58) + ), + new PokemonSpecies(SpeciesId.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", PokemonType.NORMAL, null, 1, 32, AbilityId.LIMBER, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PSYDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 0.8, 19.6, AbilityId.DAMP, AbilityId.CLOUD_NINE, AbilityId.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOLDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 1.7, 76.6, AbilityId.DAMP, AbilityId.CLOUD_NINE, AbilityId.SWIFT_SWIM, 500, 80, 82, 78, 95, 80, 85, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MANKEY, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 0.5, 28, AbilityId.VITAL_SPIRIT, AbilityId.ANGER_POINT, AbilityId.DEFIANT, 305, 40, 80, 35, 35, 45, 70, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PRIMEAPE, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 1, 32, AbilityId.VITAL_SPIRIT, AbilityId.ANGER_POINT, AbilityId.DEFIANT, 455, 65, 105, 60, 60, 70, 95, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GROWLITHE, 1, false, false, false, "Puppy Pokémon", PokemonType.FIRE, null, 0.7, 19, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.JUSTIFIED, 350, 55, 70, 45, 70, 50, 60, 190, 50, 70, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.ARCANINE, 1, false, false, false, "Legendary Pokémon", PokemonType.FIRE, null, 1.9, 155, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.JUSTIFIED, 555, 90, 110, 80, 100, 80, 95, 75, 50, 194, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.POLIWAG, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.6, 12.4, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 300, 40, 50, 40, 40, 40, 90, 255, 50, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.POLIWHIRL, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 1, 20, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 385, 65, 65, 65, 50, 50, 90, 120, 50, 135, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.POLIWRATH, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.3, 54, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 510, 90, 95, 95, 70, 90, 70, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 0.9, 19.5, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 310, 25, 20, 15, 105, 55, 90, 200, 50, 62, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.KADABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.3, 56.5, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 400, 40, 35, 30, 120, 70, 105, 100, 50, 140, GrowthRate.MEDIUM_SLOW, 75, true), + new PokemonSpecies(SpeciesId.ALAKAZAM, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.5, 48, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, GrowthRate.MEDIUM_SLOW, 75, true, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 1.5, 48, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, null, 1.2, 48, AbilityId.TRACE, AbilityId.TRACE, AbilityId.TRACE, 600, 55, 50, 65, 175, 105, 150, 50, 50, 250, true) + ), + new PokemonSpecies(SpeciesId.MACHOP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 0.8, 19.5, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 305, 70, 80, 50, 35, 35, 35, 180, 50, 61, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.MACHOKE, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.5, 70.5, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.MACHAMP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.6, 130, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, null, 1.6, 130, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIGHTING, null, 25, 999.9, AbilityId.GUTS, AbilityId.GUTS, AbilityId.GUTS, 605, 120, 170, 85, 75, 90, 65, 45, 50, 253) + ), + new PokemonSpecies(SpeciesId.BELLSPROUT, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 6.4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.7, 15.5, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 0.9, 45.5, AbilityId.CLEAR_BODY, AbilityId.LIQUID_OOZE, AbilityId.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 1.6, 55, AbilityId.CLEAR_BODY, AbilityId.LIQUID_OOZE, AbilityId.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GEODUDE, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.4, 20, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GRAVELER, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1, 105, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GOLEM, 1, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.4, 300, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PONYTA, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1, 30, AbilityId.RUN_AWAY, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1.7, 95, AbilityId.RUN_AWAY, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.2, 36, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SLOWBRO, 1, false, false, false, "Hermit Crab Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.PSYCHIC, 2, 120, AbilityId.SHELL_ARMOR, AbilityId.SHELL_ARMOR, AbilityId.SHELL_ARMOR, 590, 95, 75, 180, 130, 80, 30, 75, 50, 172) + ), + new PokemonSpecies(SpeciesId.MAGNEMITE, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 6, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 325, 25, 35, 70, 95, 55, 45, 190, 50, 65, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.MAGNETON, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1, 60, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 465, 50, 60, 95, 120, 70, 70, 60, 50, 163, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.FARFETCHD, 1, false, false, false, "Wild Duck Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.8, 15, AbilityId.KEEN_EYE, AbilityId.INNER_FOCUS, AbilityId.DEFIANT, 377, 52, 90, 55, 58, 62, 60, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DODUO, 1, false, false, false, "Twin Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.4, 39.2, AbilityId.RUN_AWAY, AbilityId.EARLY_BIRD, AbilityId.TANGLED_FEET, 310, 35, 85, 45, 35, 35, 75, 190, 70, 62, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.DODRIO, 1, false, false, false, "Triple Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.8, 85.2, AbilityId.RUN_AWAY, AbilityId.EARLY_BIRD, AbilityId.TANGLED_FEET, 470, 60, 110, 70, 60, 60, 110, 45, 70, 165, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SEEL, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 1.1, 90, AbilityId.THICK_FAT, AbilityId.HYDRATION, AbilityId.ICE_BODY, 325, 65, 45, 55, 45, 70, 45, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEWGONG, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, PokemonType.ICE, 1.7, 120, AbilityId.THICK_FAT, AbilityId.HYDRATION, AbilityId.ICE_BODY, 475, 90, 70, 80, 70, 95, 70, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GRIMER, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 0.9, 30, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.POISON_TOUCH, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MUK, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 1.2, 30, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.POISON_TOUCH, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SHELLDER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.3, 4, AbilityId.SHELL_ARMOR, AbilityId.SKILL_LINK, AbilityId.OVERCOAT, 305, 30, 65, 100, 45, 25, 40, 190, 50, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CLOYSTER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, PokemonType.ICE, 1.5, 132.5, AbilityId.SHELL_ARMOR, AbilityId.SKILL_LINK, AbilityId.OVERCOAT, 525, 50, 95, 180, 85, 45, 70, 60, 50, 184, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GASTLY, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.3, 0.1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 310, 30, 35, 30, 100, 35, 80, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HAUNTER, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.6, 0.1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 405, 45, 50, 45, 115, 55, 95, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GENGAR, 1, false, false, false, "Shadow Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, PokemonType.POISON, 1.4, 40.5, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GHOST, PokemonType.POISON, 20, 999.9, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250) + ), + new PokemonSpecies(SpeciesId.ONIX, 1, false, false, false, "Rock Snake Pokémon", PokemonType.ROCK, PokemonType.GROUND, 8.8, 210, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1, 32.4, AbilityId.INSOMNIA, AbilityId.FOREWARN, AbilityId.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HYPNO, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1.6, 75.6, AbilityId.INSOMNIA, AbilityId.FOREWARN, AbilityId.INNER_FOCUS, 483, 85, 73, 70, 73, 115, 67, 75, 70, 169, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.KRABBY, 1, false, false, false, "River Crab Pokémon", PokemonType.WATER, null, 0.4, 6.5, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KINGLER, 1, false, false, false, "Pincer Pokémon", PokemonType.WATER, null, 1.3, 60, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.3, 60, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 19, 999.9, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 575, 92, 145, 140, 60, 65, 73, 60, 50, 166) + ), + new PokemonSpecies(SpeciesId.VOLTORB, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 0.5, 10.4, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.ELECTRODE, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 1.2, 66.6, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.EXEGGCUTE, 1, false, false, false, "Egg Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 0.4, 2.5, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HARVEST, 325, 60, 40, 80, 60, 45, 40, 90, 50, 65, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EXEGGUTOR, 1, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 2, 120, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HARVEST, 530, 95, 95, 85, 125, 75, 55, 45, 50, 186, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CUBONE, 1, false, false, false, "Lonely Pokémon", PokemonType.GROUND, null, 0.4, 6.5, AbilityId.ROCK_HEAD, AbilityId.LIGHTNING_ROD, AbilityId.BATTLE_ARMOR, 320, 50, 50, 95, 40, 50, 35, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MAROWAK, 1, false, false, false, "Bone Keeper Pokémon", PokemonType.GROUND, null, 1, 45, AbilityId.ROCK_HEAD, AbilityId.LIGHTNING_ROD, AbilityId.BATTLE_ARMOR, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HITMONLEE, 1, false, false, false, "Kicking Pokémon", PokemonType.FIGHTING, null, 1.5, 49.8, AbilityId.LIMBER, AbilityId.RECKLESS, AbilityId.UNBURDEN, 455, 50, 120, 53, 35, 110, 87, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.HITMONCHAN, 1, false, false, false, "Punching Pokémon", PokemonType.FIGHTING, null, 1.4, 50.2, AbilityId.KEEN_EYE, AbilityId.IRON_FIST, AbilityId.INNER_FOCUS, 455, 50, 105, 79, 35, 110, 76, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.LICKITUNG, 1, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.2, 65.5, AbilityId.OWN_TEMPO, AbilityId.OBLIVIOUS, AbilityId.CLOUD_NINE, 385, 90, 55, 75, 60, 75, 30, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KOFFING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 0.6, 1, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.STENCH, 340, 40, 65, 95, 60, 45, 35, 190, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WEEZING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 1.2, 9.5, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.STENCH, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RHYHORN, 1, false, false, false, "Spikes Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1, 115, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, AbilityId.RECKLESS, 345, 80, 85, 95, 30, 30, 25, 120, 50, 69, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.RHYDON, 1, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1.9, 120, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, AbilityId.RECKLESS, 485, 105, 130, 120, 45, 45, 40, 60, 50, 170, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.CHANSEY, 1, false, false, false, "Egg Pokémon", PokemonType.NORMAL, null, 1.1, 34.6, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.HEALER, 450, 250, 5, 5, 35, 105, 50, 30, 140, 395, GrowthRate.FAST, 0, false), + new PokemonSpecies(SpeciesId.TANGELA, 1, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 1, 35, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.REGENERATOR, 435, 65, 55, 115, 100, 40, 60, 45, 50, 87, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KANGASKHAN, 1, false, false, false, "Parent Pokémon", PokemonType.NORMAL, null, 2.2, 80, AbilityId.EARLY_BIRD, AbilityId.SCRAPPY, AbilityId.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, GrowthRate.MEDIUM_FAST, 0, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.2, 80, AbilityId.EARLY_BIRD, AbilityId.SCRAPPY, AbilityId.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, null, 2.2, 100, AbilityId.PARENTAL_BOND, AbilityId.PARENTAL_BOND, AbilityId.PARENTAL_BOND, 590, 105, 125, 100, 60, 100, 100, 45, 50, 172) + ), + new PokemonSpecies(SpeciesId.HORSEA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 0.4, 8, AbilityId.SWIFT_SWIM, AbilityId.SNIPER, AbilityId.DAMP, 295, 30, 40, 70, 70, 25, 60, 225, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SEADRA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 1.2, 25, AbilityId.POISON_POINT, AbilityId.SNIPER, AbilityId.DAMP, 440, 55, 65, 95, 95, 45, 85, 75, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOLDEEN, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 0.6, 15, AbilityId.SWIFT_SWIM, AbilityId.WATER_VEIL, AbilityId.LIGHTNING_ROD, 320, 45, 67, 60, 35, 50, 63, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SEAKING, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 1.3, 39, AbilityId.SWIFT_SWIM, AbilityId.WATER_VEIL, AbilityId.LIGHTNING_ROD, 450, 80, 92, 65, 65, 80, 68, 60, 50, 158, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.STARYU, 1, false, false, false, "Star Shape Pokémon", PokemonType.WATER, null, 0.8, 34.5, AbilityId.ILLUMINATE, AbilityId.NATURAL_CURE, AbilityId.ANALYTIC, 340, 30, 45, 55, 70, 55, 85, 225, 50, 68, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.STARMIE, 1, false, false, false, "Mysterious Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.1, 80, AbilityId.ILLUMINATE, AbilityId.NATURAL_CURE, AbilityId.ANALYTIC, 520, 60, 75, 85, 100, 85, 115, 60, 50, 182, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MR_MIME, 1, false, false, false, "Barrier Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.3, 54.5, AbilityId.SOUNDPROOF, AbilityId.FILTER, AbilityId.TECHNICIAN, 460, 40, 45, 65, 100, 120, 90, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCYTHER, 1, false, false, false, "Mantis Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.5, 56, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.STEADFAST, 500, 70, 110, 80, 55, 80, 105, 45, 50, 100, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.JYNX, 1, false, false, false, "Human Shape Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 40.6, AbilityId.OBLIVIOUS, AbilityId.FOREWARN, AbilityId.DRY_SKIN, 455, 65, 50, 35, 115, 95, 95, 45, 50, 159, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ELECTABUZZ, 1, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 1.1, 30, AbilityId.STATIC, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 490, 65, 83, 57, 95, 85, 105, 45, 50, 172, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MAGMAR, 1, false, false, false, "Spitfire Pokémon", PokemonType.FIRE, null, 1.3, 44.5, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 495, 65, 95, 57, 100, 85, 93, 45, 50, 173, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.PINSIR, 1, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, null, 1.5, 55, AbilityId.HYPER_CUTTER, AbilityId.MOLD_BREAKER, AbilityId.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, null, 1.5, 55, AbilityId.HYPER_CUTTER, AbilityId.MOLD_BREAKER, AbilityId.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FLYING, 1.7, 59, AbilityId.AERILATE, AbilityId.AERILATE, AbilityId.AERILATE, 600, 65, 155, 120, 65, 90, 105, 45, 50, 175) + ), + new PokemonSpecies(SpeciesId.TAUROS, 1, false, false, false, "Wild Bull Pokémon", PokemonType.NORMAL, null, 1.4, 88.4, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.SHEER_FORCE, 490, 75, 100, 95, 40, 70, 110, 45, 50, 172, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.MAGIKARP, 1, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.9, 10, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.RATTLED, 200, 20, 10, 55, 15, 20, 80, 255, 50, 40, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.GYARADOS, 1, false, false, false, "Atrocious Pokémon", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 6.5, 305, AbilityId.MOLD_BREAKER, AbilityId.MOLD_BREAKER, AbilityId.MOLD_BREAKER, 640, 95, 155, 109, 70, 130, 81, 45, 50, 189, true) + ), + new PokemonSpecies(SpeciesId.LAPRAS, 1, false, false, false, "Transport Pokémon", PokemonType.WATER, PokemonType.ICE, 2.5, 220, AbilityId.WATER_ABSORB, AbilityId.SHELL_ARMOR, AbilityId.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ICE, 2.5, 220, AbilityId.WATER_ABSORB, AbilityId.SHELL_ARMOR, AbilityId.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ICE, 24, 999.9, AbilityId.SHIELD_DUST, AbilityId.SHIELD_DUST, AbilityId.SHIELD_DUST, 635, 170, 97, 85, 107, 111, 65, 45, 50, 187) + ), + new PokemonSpecies(SpeciesId.DITTO, 1, false, false, false, "Transform Pokémon", PokemonType.NORMAL, null, 0.3, 4, AbilityId.LIMBER, AbilityId.NONE, AbilityId.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.EEVEE, 1, false, false, false, "Evolution Pokémon", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), + new PokemonForm("Partner", "partner", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 18, 999.9, AbilityId.PROTEAN, AbilityId.PROTEAN, AbilityId.PROTEAN, 535, 110, 95, 70, 90, 85, 85, 45, 50, 65) + ), + new PokemonSpecies(SpeciesId.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", PokemonType.WATER, null, 1, 29, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.JOLTEON, 1, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.8, 24.5, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.FLAREON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 0.9, 25, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.GUTS, 525, 65, 130, 60, 95, 110, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.PORYGON, 1, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.8, 36.5, AbilityId.TRACE, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 395, 65, 60, 70, 85, 75, 40, 45, 50, 79, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.OMANYTE, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.4, 7.5, AbilityId.SWIFT_SWIM, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 355, 35, 40, 100, 90, 55, 35, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.OMASTAR, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 1, 35, AbilityId.SWIFT_SWIM, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 495, 70, 60, 125, 115, 70, 55, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.KABUTO, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 11.5, AbilityId.SWIFT_SWIM, AbilityId.BATTLE_ARMOR, AbilityId.WEAK_ARMOR, 355, 30, 80, 90, 55, 45, 55, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.KABUTOPS, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 40.5, AbilityId.SWIFT_SWIM, AbilityId.BATTLE_ARMOR, AbilityId.WEAK_ARMOR, 495, 60, 115, 105, 65, 70, 80, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.AERODACTYL, 1, false, false, false, "Fossil Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, AbilityId.ROCK_HEAD, AbilityId.PRESSURE, AbilityId.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, AbilityId.ROCK_HEAD, AbilityId.PRESSURE, AbilityId.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FLYING, 2.1, 79, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 615, 80, 135, 85, 70, 95, 150, 45, 50, 180) + ), + new PokemonSpecies(SpeciesId.SNORLAX, 1, false, false, false, "Sleeping Pokémon", PokemonType.NORMAL, null, 2.1, 460, AbilityId.IMMUNITY, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.1, 460, AbilityId.IMMUNITY, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 35, 999.9, AbilityId.HARVEST, AbilityId.HARVEST, AbilityId.HARVEST, 640, 210, 135, 70, 90, 115, 20, 25, 50, 189) + ), + new PokemonSpecies(SpeciesId.ARTICUNO, 1, true, false, false, "Freeze Pokémon", PokemonType.ICE, PokemonType.FLYING, 1.7, 55.4, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZAPDOS, 1, true, false, false, "Electric Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.6, 52.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MOLTRES, 1, true, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 2, 60, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FLAME_BODY, 580, 90, 100, 90, 125, 85, 90, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DRATINI, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 1.8, 3.3, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.MARVEL_SCALE, 300, 41, 64, 45, 50, 50, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAGONAIR, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 4, 16.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.MARVEL_SCALE, 420, 61, 84, 65, 70, 70, 70, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAGONITE, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 2.2, 210, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.MULTISCALE, 600, 91, 134, 95, 100, 100, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.MEWTWO, 1, false, true, false, "Genetic Pokémon", PokemonType.PSYCHIC, null, 2, 122, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2, 122, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, false, null, true), + new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.PSYCHIC, PokemonType.FIGHTING, 2.3, 127, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.STEADFAST, 780, 106, 190, 100, 154, 100, 130, 3, 0, 340), + new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.PSYCHIC, null, 1.5, 33, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.INSOMNIA, 780, 106, 150, 70, 194, 120, 140, 3, 0, 340) + ), + new PokemonSpecies(SpeciesId.MEW, 1, false, false, true, "New Species Pokémon", PokemonType.PSYCHIC, null, 0.4, 4, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.CHIKORITA, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 0.9, 6.4, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BAYLEEF, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 1.2, 15.8, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MEGANIUM, 2, false, false, false, "Herb Pokémon", PokemonType.GRASS, null, 1.8, 100.5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", PokemonType.FIRE, null, 0.5, 7.9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUILAVA, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 0.9, 19, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 1.7, 79.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 0.6, 9.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 1.1, 25, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 2.3, 88.8, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SENTRET, 2, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.8, 6, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FURRET, 2, false, false, false, "Long Body Pokémon", PokemonType.NORMAL, null, 1.8, 32.5, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HOOTHOOT, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 21.2, AbilityId.INSOMNIA, AbilityId.KEEN_EYE, AbilityId.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NOCTOWL, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.6, 40.8, AbilityId.INSOMNIA, AbilityId.KEEN_EYE, AbilityId.TINTED_LENS, 452, 100, 50, 50, 86, 96, 70, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LEDYBA, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 10.8, AbilityId.SWARM, AbilityId.EARLY_BIRD, AbilityId.RATTLED, 265, 40, 20, 30, 40, 80, 55, 255, 70, 53, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.LEDIAN, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.4, 35.6, AbilityId.SWARM, AbilityId.EARLY_BIRD, AbilityId.IRON_FIST, 390, 55, 35, 50, 55, 110, 85, 90, 70, 137, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.SPINARAK, 2, false, false, false, "String Spit Pokémon", PokemonType.BUG, PokemonType.POISON, 0.5, 8.5, AbilityId.SWARM, AbilityId.INSOMNIA, AbilityId.SNIPER, 250, 40, 60, 40, 40, 40, 30, 255, 70, 50, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.ARIADOS, 2, false, false, false, "Long Leg Pokémon", PokemonType.BUG, PokemonType.POISON, 1.1, 33.5, AbilityId.SWARM, AbilityId.INSOMNIA, AbilityId.SNIPER, 400, 70, 90, 70, 60, 70, 40, 90, 70, 140, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.CROBAT, 2, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.8, 75, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 535, 85, 90, 80, 70, 80, 130, 90, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHINCHOU, 2, false, false, false, "Angler Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 0.5, 12, AbilityId.VOLT_ABSORB, AbilityId.ILLUMINATE, AbilityId.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.LANTURN, 2, false, false, false, "Light Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 1.2, 22.5, AbilityId.VOLT_ABSORB, AbilityId.ILLUMINATE, AbilityId.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true) + ), + new PokemonSpecies(SpeciesId.CLEFFA, 2, false, false, false, "Star Shape Pokémon", PokemonType.FAIRY, null, 0.3, 3, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.3, 1, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.TOGEPI, 2, false, false, false, "Spike Ball Pokémon", PokemonType.FAIRY, null, 0.3, 1.5, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 245, 35, 20, 65, 40, 65, 20, 190, 50, 49, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(SpeciesId.TOGETIC, 2, false, false, false, "Happiness Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 0.6, 3.2, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 405, 55, 40, 85, 80, 105, 40, 75, 50, 142, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(SpeciesId.NATU, 2, false, false, false, "Tiny Bird Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.2, 2, AbilityId.SYNCHRONIZE, AbilityId.EARLY_BIRD, AbilityId.MAGIC_BOUNCE, 320, 40, 50, 45, 70, 45, 70, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.XATU, 2, false, false, false, "Mystic Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.5, 15, AbilityId.SYNCHRONIZE, AbilityId.EARLY_BIRD, AbilityId.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.MAREEP, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.6, 7.8, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLAAFFY, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.8, 13.3, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.AMPHAROS, 2, false, false, false, "Light Pokémon", PokemonType.ELECTRIC, null, 1.4, 61.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, PokemonType.DRAGON, 1.4, 61.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255) + ), + new PokemonSpecies(SpeciesId.BELLOSSOM, 2, false, false, false, "Flower Pokémon", PokemonType.GRASS, null, 0.4, 5.8, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.4, 8.5, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.AZUMARILL, 2, false, false, false, "Aqua Rabbit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.8, 28.5, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 420, 100, 50, 80, 60, 80, 50, 75, 50, 210, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.SUDOWOODO, 2, false, false, false, "Imitation Pokémon", PokemonType.ROCK, null, 1.2, 38, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.RATTLED, 410, 70, 100, 115, 30, 65, 30, 65, 50, 144, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.POLITOED, 2, false, false, false, "Frog Pokémon", PokemonType.WATER, null, 1.1, 33.9, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.4, 0.5, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.6, 1, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.8, 3, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.AIPOM, 2, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 0.8, 11.5, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.SUNKERN, 2, false, false, false, "Seed Pokémon", PokemonType.GRASS, null, 0.3, 1.8, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SUNFLORA, 2, false, false, false, "Sun Pokémon", PokemonType.GRASS, null, 0.8, 8.5, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.YANMA, 2, false, false, false, "Clear Wing Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38, AbilityId.SPEED_BOOST, AbilityId.COMPOUND_EYES, AbilityId.FRISK, 390, 65, 65, 45, 75, 45, 95, 75, 70, 78, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WOOPER, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 8.5, AbilityId.DAMP, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.QUAGSIRE, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.4, 75, AbilityId.DAMP, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 430, 95, 85, 85, 65, 65, 35, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ESPEON, 2, false, false, false, "Sun Pokémon", PokemonType.PSYCHIC, null, 0.9, 26.5, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.MAGIC_BOUNCE, 525, 65, 65, 60, 130, 95, 110, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.UMBREON, 2, false, false, false, "Moonlight Pokémon", PokemonType.DARK, null, 1, 27, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.INNER_FOCUS, 525, 95, 65, 110, 60, 130, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.MURKROW, 2, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 2.1, AbilityId.INSOMNIA, AbilityId.SUPER_LUCK, AbilityId.PRANKSTER, 405, 60, 85, 42, 85, 42, 91, 30, 35, 81, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SLOWKING, 2, false, false, false, "Royal Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2, 79.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 80, 100, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MISDREAVUS, 2, false, false, false, "Screech Pokémon", PokemonType.GHOST, null, 0.7, 1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 435, 60, 60, 60, 85, 85, 85, 45, 35, 87, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.UNOWN, 2, false, false, false, "Symbol Pokémon", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("A", "a", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("B", "b", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("C", "c", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("D", "d", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("E", "e", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("F", "f", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("G", "g", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("H", "h", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("I", "i", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("J", "j", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("K", "k", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("L", "l", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("M", "m", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("N", "n", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("O", "o", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("P", "p", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Q", "q", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("R", "r", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("S", "s", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("T", "t", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("U", "u", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("V", "v", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("W", "w", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("X", "x", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Y", "y", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Z", "z", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("!", "exclamation", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("?", "question", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true) + ), + new PokemonSpecies(SpeciesId.WOBBUFFET, 2, false, false, false, "Patient Pokémon", PokemonType.PSYCHIC, null, 1.3, 28.5, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.TELEPATHY, 405, 190, 33, 58, 33, 58, 33, 45, 50, 142, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.GIRAFARIG, 2, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 41.5, AbilityId.INNER_FOCUS, AbilityId.EARLY_BIRD, AbilityId.SAP_SIPPER, 455, 70, 80, 65, 90, 65, 85, 60, 70, 159, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.PINECO, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.6, 7.2, AbilityId.STURDY, AbilityId.NONE, AbilityId.OVERCOAT, 290, 50, 65, 90, 35, 35, 15, 190, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FORRETRESS, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.2, 125.8, AbilityId.STURDY, AbilityId.NONE, AbilityId.OVERCOAT, 465, 75, 90, 140, 60, 60, 40, 75, 70, 163, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUNSPARCE, 2, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 1.5, 14, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 415, 100, 70, 70, 65, 65, 45, 190, 50, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GLIGAR, 2, false, false, false, "Fly Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.1, 64.8, AbilityId.HYPER_CUTTER, AbilityId.SAND_VEIL, AbilityId.IMMUNITY, 430, 65, 75, 105, 35, 65, 85, 60, 70, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.STEELIX, 2, false, false, false, "Iron Snake Pokémon", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.GROUND, 10.5, 740, AbilityId.SAND_FORCE, AbilityId.SAND_FORCE, AbilityId.SAND_FORCE, 610, 75, 125, 230, 55, 95, 30, 25, 50, 179, true) + ), + new PokemonSpecies(SpeciesId.SNUBBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.8, AbilityId.INTIMIDATE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 300, 60, 80, 50, 40, 40, 30, 190, 70, 60, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.GRANBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.4, 48.7, AbilityId.INTIMIDATE, AbilityId.QUICK_FEET, AbilityId.RATTLED, 450, 90, 120, 75, 60, 60, 45, 75, 70, 158, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.QWILFISH, 2, false, false, false, "Balloon Pokémon", PokemonType.WATER, PokemonType.POISON, 0.5, 3.9, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCIZOR, 2, false, false, false, "Pincer Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.STEEL, 2, 125, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, 600, 70, 150, 140, 65, 100, 75, 25, 50, 175, true) + ), + new PokemonSpecies(SpeciesId.SHUCKLE, 2, false, false, false, "Mold Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.6, 20.5, AbilityId.STURDY, AbilityId.GLUTTONY, AbilityId.CONTRARY, 505, 20, 10, 230, 10, 230, 5, 190, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HERACROSS, 2, false, false, false, "Single Horn Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, AbilityId.SWARM, AbilityId.GUTS, AbilityId.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, AbilityId.SWARM, AbilityId.GUTS, AbilityId.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FIGHTING, 1.7, 62.5, AbilityId.SKILL_LINK, AbilityId.SKILL_LINK, AbilityId.SKILL_LINK, 600, 80, 185, 115, 40, 105, 75, 45, 50, 175, true) + ), + new PokemonSpecies(SpeciesId.SNEASEL, 2, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.KEEN_EYE, AbilityId.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.TEDDIURSA, 2, false, false, false, "Little Bear Pokémon", PokemonType.NORMAL, null, 0.6, 8.8, AbilityId.PICKUP, AbilityId.QUICK_FEET, AbilityId.HONEY_GATHER, 330, 60, 80, 50, 50, 50, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.URSARING, 2, false, false, false, "Hibernator Pokémon", PokemonType.NORMAL, null, 1.8, 125.8, AbilityId.GUTS, AbilityId.QUICK_FEET, AbilityId.UNNERVE, 500, 90, 130, 75, 75, 75, 55, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SLUGMA, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, null, 0.7, 35, AbilityId.MAGMA_ARMOR, AbilityId.FLAME_BODY, AbilityId.WEAK_ARMOR, 250, 40, 40, 40, 70, 40, 20, 190, 70, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MAGCARGO, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 55, AbilityId.MAGMA_ARMOR, AbilityId.FLAME_BODY, AbilityId.WEAK_ARMOR, 430, 60, 50, 120, 90, 80, 30, 75, 70, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWINUB, 2, false, false, false, "Pig Pokémon", PokemonType.ICE, PokemonType.GROUND, 0.4, 6.5, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 250, 50, 50, 40, 30, 30, 50, 225, 50, 50, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PILOSWINE, 2, false, false, false, "Swine Pokémon", PokemonType.ICE, PokemonType.GROUND, 1.1, 55.8, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 450, 100, 100, 80, 60, 60, 50, 75, 50, 158, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.CORSOLA, 2, false, false, false, "Coral Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.6, 5, AbilityId.HUSTLE, AbilityId.NATURAL_CURE, AbilityId.REGENERATOR, 410, 65, 55, 95, 65, 95, 35, 60, 50, 144, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.REMORAID, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.6, 12, AbilityId.HUSTLE, AbilityId.SNIPER, AbilityId.MOODY, 300, 35, 65, 35, 65, 35, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.OCTILLERY, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.9, 28.5, AbilityId.SUCTION_CUPS, AbilityId.SNIPER, AbilityId.MOODY, 480, 75, 105, 75, 105, 75, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.DELIBIRD, 2, false, false, false, "Delivery Pokémon", PokemonType.ICE, PokemonType.FLYING, 0.9, 16, AbilityId.VITAL_SPIRIT, AbilityId.HUSTLE, AbilityId.INSOMNIA, 330, 45, 55, 45, 65, 45, 75, 45, 50, 116, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.MANTINE, 2, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 2.1, 220, AbilityId.SWIFT_SWIM, AbilityId.WATER_ABSORB, AbilityId.WATER_VEIL, 485, 85, 40, 70, 80, 140, 70, 25, 50, 170, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SKARMORY, 2, false, false, false, "Armor Bird Pokémon", PokemonType.STEEL, PokemonType.FLYING, 1.7, 50.5, AbilityId.KEEN_EYE, AbilityId.STURDY, AbilityId.WEAK_ARMOR, 465, 65, 80, 140, 40, 70, 70, 25, 50, 163, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HOUNDOUR, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.6, 10.8, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 330, 45, 60, 30, 80, 50, 65, 120, 35, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HOUNDOOM, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.FIRE, 1.9, 49.5, AbilityId.SOLAR_POWER, AbilityId.SOLAR_POWER, AbilityId.SOLAR_POWER, 600, 75, 90, 90, 140, 90, 115, 45, 35, 175, true) + ), + new PokemonSpecies(SpeciesId.KINGDRA, 2, false, false, false, "Dragon Pokémon", PokemonType.WATER, PokemonType.DRAGON, 1.8, 152, AbilityId.SWIFT_SWIM, AbilityId.SNIPER, AbilityId.DAMP, 540, 75, 95, 95, 95, 95, 85, 45, 50, 270, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PHANPY, 2, false, false, false, "Long Nose Pokémon", PokemonType.GROUND, null, 0.5, 33.5, AbilityId.PICKUP, AbilityId.NONE, AbilityId.SAND_VEIL, 330, 90, 60, 60, 40, 40, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DONPHAN, 2, false, false, false, "Armor Pokémon", PokemonType.GROUND, null, 1.1, 120, AbilityId.STURDY, AbilityId.NONE, AbilityId.SAND_VEIL, 500, 90, 120, 120, 60, 60, 50, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.PORYGON2, 2, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.6, 32.5, AbilityId.TRACE, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 515, 85, 80, 90, 105, 95, 60, 45, 50, 180, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.STANTLER, 2, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, null, 1.4, 71.2, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 465, 73, 95, 62, 85, 65, 85, 45, 70, 163, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SMEARGLE, 2, false, false, false, "Painter Pokémon", PokemonType.NORMAL, null, 1.2, 58, AbilityId.OWN_TEMPO, AbilityId.TECHNICIAN, AbilityId.MOODY, 250, 55, 20, 35, 20, 45, 75, 45, 70, 88, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TYROGUE, 2, false, false, false, "Scuffle Pokémon", PokemonType.FIGHTING, null, 0.7, 21, AbilityId.GUTS, AbilityId.STEADFAST, AbilityId.VITAL_SPIRIT, 210, 35, 35, 35, 35, 35, 35, 75, 50, 42, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.HITMONTOP, 2, false, false, false, "Handstand Pokémon", PokemonType.FIGHTING, null, 1.4, 48, AbilityId.INTIMIDATE, AbilityId.TECHNICIAN, AbilityId.STEADFAST, 455, 50, 95, 95, 35, 110, 70, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.SMOOCHUM, 2, false, false, false, "Kiss Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 0.4, 6, AbilityId.OBLIVIOUS, AbilityId.FOREWARN, AbilityId.HYDRATION, 305, 45, 30, 15, 85, 65, 65, 45, 50, 61, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ELEKID, 2, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 0.6, 23.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MAGBY, 2, false, false, false, "Live Coal Pokémon", PokemonType.FIRE, null, 0.7, 21.4, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MILTANK, 2, false, false, false, "Milk Cow Pokémon", PokemonType.NORMAL, null, 1.2, 75.5, AbilityId.THICK_FAT, AbilityId.SCRAPPY, AbilityId.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.BLISSEY, 2, false, false, false, "Happiness Pokémon", PokemonType.NORMAL, null, 1.5, 46.8, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false), + new PokemonSpecies(SpeciesId.RAIKOU, 2, true, false, false, "Thunder Pokémon", PokemonType.ELECTRIC, null, 1.9, 178, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ENTEI, 2, true, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 2.1, 198, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SUICUNE, 2, true, false, false, "Aurora Pokémon", PokemonType.WATER, null, 2, 187, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LARVITAR, 2, false, false, false, "Rock Skin Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.6, 72, AbilityId.GUTS, AbilityId.NONE, AbilityId.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PUPITAR, 2, false, false, false, "Hard Shell Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.2, 152, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TYRANITAR, 2, false, false, false, "Armor Pokémon", PokemonType.ROCK, PokemonType.DARK, 2, 202, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.DARK, 2, 202, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.DARK, 2.5, 255, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300) + ), + new PokemonSpecies(SpeciesId.LUGIA, 2, false, true, false, "Diving Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 5.2, 216, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.MULTISCALE, 680, 106, 90, 130, 90, 154, 110, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.HO_OH, 2, false, true, false, "Rainbow Pokémon", PokemonType.FIRE, PokemonType.FLYING, 3.8, 199, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.REGENERATOR, 680, 106, 130, 90, 110, 154, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CELEBI, 2, false, false, true, "Time Travel Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 0.6, 5, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.TREECKO, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.5, 5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 310, 40, 45, 35, 65, 55, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.GROVYLE, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.9, 21.6, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 405, 50, 65, 45, 85, 65, 95, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SCEPTILE, 3, false, false, false, "Forest Pokémon", PokemonType.GRASS, null, 1.7, 52.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, null, 1.7, 52.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.DRAGON, 1.9, 55.2, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 630, 70, 110, 75, 145, 85, 145, 45, 50, 265) + ), + new PokemonSpecies(SpeciesId.TORCHIC, 3, false, false, false, "Chick Pokémon", PokemonType.FIRE, null, 0.4, 2.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 310, 45, 60, 40, 70, 50, 45, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.COMBUSKEN, 3, false, false, false, "Young Fowl Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 19.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 405, 60, 85, 60, 85, 60, 55, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.BLAZIKEN, 3, false, false, false, "Blaze Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, true, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 630, 80, 160, 80, 130, 80, 100, 45, 50, 265, true) + ), + new PokemonSpecies(SpeciesId.MUDKIP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, null, 0.4, 7.6, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 310, 50, 70, 50, 50, 50, 40, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MARSHTOMP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.7, 28, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 405, 70, 85, 70, 60, 70, 50, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SWAMPERT, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.GROUND, 1.9, 102, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.SWIFT_SWIM, 635, 100, 150, 110, 95, 110, 70, 45, 50, 268) + ), + new PokemonSpecies(SpeciesId.POOCHYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 0.5, 13.6, AbilityId.RUN_AWAY, AbilityId.QUICK_FEET, AbilityId.RATTLED, 220, 35, 55, 35, 30, 30, 35, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIGHTYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 1, 37, AbilityId.INTIMIDATE, AbilityId.QUICK_FEET, AbilityId.MOXIE, 420, 70, 90, 70, 60, 60, 70, 127, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ZIGZAGOON, 3, false, false, false, "Tiny Raccoon Pokémon", PokemonType.NORMAL, null, 0.4, 17.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LINOONE, 3, false, false, false, "Rushing Pokémon", PokemonType.NORMAL, null, 0.5, 32.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WURMPLE, 3, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 3.6, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SILCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.6, 10, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 28.4, AbilityId.SWARM, AbilityId.NONE, AbilityId.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CASCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 11.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 31.6, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.LOTAD, 3, false, false, false, "Water Weed Pokémon", PokemonType.WATER, PokemonType.GRASS, 0.5, 2.6, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LOMBRE, 3, false, false, false, "Jolly Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.2, 32.5, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LUDICOLO, 3, false, false, false, "Carefree Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.5, 55, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SEEDOT, 3, false, false, false, "Acorn Pokémon", PokemonType.GRASS, null, 0.5, 4, AbilityId.CHLOROPHYLL, AbilityId.EARLY_BIRD, AbilityId.PICKPOCKET, 220, 40, 40, 50, 30, 30, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.NUZLEAF, 3, false, false, false, "Wily Pokémon", PokemonType.GRASS, PokemonType.DARK, 1, 28, AbilityId.CHLOROPHYLL, AbilityId.EARLY_BIRD, AbilityId.PICKPOCKET, 340, 70, 70, 40, 60, 40, 60, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SHIFTRY, 3, false, false, false, "Wicked Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 59.6, AbilityId.CHLOROPHYLL, AbilityId.WIND_RIDER, AbilityId.PICKPOCKET, 480, 90, 100, 60, 90, 60, 80, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.TAILLOW, 3, false, false, false, "Tiny Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.3, AbilityId.GUTS, AbilityId.NONE, AbilityId.SCRAPPY, 270, 40, 55, 30, 30, 30, 85, 200, 70, 54, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SWELLOW, 3, false, false, false, "Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 19.8, AbilityId.GUTS, AbilityId.NONE, AbilityId.SCRAPPY, 455, 60, 85, 60, 75, 50, 125, 45, 70, 159, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WINGULL, 3, false, false, false, "Seagull Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.6, 9.5, AbilityId.KEEN_EYE, AbilityId.HYDRATION, AbilityId.RAIN_DISH, 270, 40, 30, 30, 55, 30, 85, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PELIPPER, 3, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.2, 28, AbilityId.KEEN_EYE, AbilityId.DRIZZLE, AbilityId.RAIN_DISH, 440, 60, 50, 100, 95, 70, 65, 45, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RALTS, 3, false, false, false, "Feeling Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.4, 6.6, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 198, 28, 25, 25, 45, 35, 40, 235, 35, 40, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KIRLIA, 3, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.8, 20.2, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 278, 38, 35, 35, 65, 55, 50, 120, 35, 97, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GARDEVOIR, 3, false, false, false, "Embrace Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.PIXILATE, AbilityId.PIXILATE, AbilityId.PIXILATE, 618, 68, 85, 65, 165, 135, 100, 45, 35, 259) + ), + new PokemonSpecies(SpeciesId.SURSKIT, 3, false, false, false, "Pond Skater Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 1.7, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.RAIN_DISH, 269, 40, 30, 32, 50, 52, 65, 200, 70, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MASQUERAIN, 3, false, false, false, "Eyeball Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 3.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.UNNERVE, 454, 70, 60, 62, 100, 82, 80, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SHROOMISH, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, null, 0.4, 4.5, AbilityId.EFFECT_SPORE, AbilityId.POISON_HEAL, AbilityId.QUICK_FEET, 295, 60, 40, 60, 40, 60, 35, 255, 70, 59, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.BRELOOM, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 39.2, AbilityId.EFFECT_SPORE, AbilityId.POISON_HEAL, AbilityId.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.SLAKOTH, 3, false, false, false, "Slacker Pokémon", PokemonType.NORMAL, null, 0.8, 24, AbilityId.TRUANT, AbilityId.NONE, AbilityId.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", PokemonType.NORMAL, null, 1.4, 46.5, AbilityId.VITAL_SPIRIT, AbilityId.NONE, AbilityId.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.SLAKING, 3, false, false, false, "Lazy Pokémon", PokemonType.NORMAL, null, 2, 130.5, AbilityId.TRUANT, AbilityId.NONE, AbilityId.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.NINCADA, 3, false, false, false, "Trainee Pokémon", PokemonType.BUG, PokemonType.GROUND, 0.5, 5.5, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.NINJASK, 3, false, false, false, "Ninja Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 12, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.SHEDINJA, 3, false, false, false, "Shed Pokémon", PokemonType.BUG, PokemonType.GHOST, 0.8, 1.2, AbilityId.WONDER_GUARD, AbilityId.NONE, AbilityId.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false), + new PokemonSpecies(SpeciesId.WHISMUR, 3, false, false, false, "Whisper Pokémon", PokemonType.NORMAL, null, 0.6, 16.3, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.RATTLED, 240, 64, 51, 23, 51, 23, 28, 190, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LOUDRED, 3, false, false, false, "Big Voice Pokémon", PokemonType.NORMAL, null, 1, 40.5, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.SCRAPPY, 360, 84, 71, 43, 71, 43, 48, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.EXPLOUD, 3, false, false, false, "Loud Noise Pokémon", PokemonType.NORMAL, null, 1.5, 84, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.SCRAPPY, 490, 104, 91, 63, 91, 73, 68, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MAKUHITA, 3, false, false, false, "Guts Pokémon", PokemonType.FIGHTING, null, 1, 86.4, AbilityId.THICK_FAT, AbilityId.GUTS, AbilityId.SHEER_FORCE, 237, 72, 60, 30, 20, 30, 25, 180, 70, 47, GrowthRate.FLUCTUATING, 75, false), + new PokemonSpecies(SpeciesId.HARIYAMA, 3, false, false, false, "Arm Thrust Pokémon", PokemonType.FIGHTING, null, 2.3, 253.8, AbilityId.THICK_FAT, AbilityId.GUTS, AbilityId.SHEER_FORCE, 474, 144, 120, 60, 40, 60, 50, 200, 70, 166, GrowthRate.FLUCTUATING, 75, false), + new PokemonSpecies(SpeciesId.AZURILL, 3, false, false, false, "Polka Dot Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.2, 2, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 190, 50, 20, 40, 20, 40, 20, 150, 50, 38, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.NOSEPASS, 3, false, false, false, "Compass Pokémon", PokemonType.ROCK, null, 1, 97, AbilityId.STURDY, AbilityId.MAGNET_PULL, AbilityId.SAND_FORCE, 375, 30, 45, 135, 45, 90, 30, 255, 70, 75, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SKITTY, 3, false, false, false, "Kitten Pokémon", PokemonType.NORMAL, null, 0.6, 11, AbilityId.CUTE_CHARM, AbilityId.NORMALIZE, AbilityId.WONDER_SKIN, 260, 50, 45, 45, 35, 35, 50, 255, 70, 52, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.DELCATTY, 3, false, false, false, "Prim Pokémon", PokemonType.NORMAL, null, 1.1, 32.6, AbilityId.CUTE_CHARM, AbilityId.NORMALIZE, AbilityId.WONDER_SKIN, 400, 70, 65, 65, 55, 55, 90, 60, 70, 140, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.SABLEYE, 3, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, AbilityId.KEEN_EYE, AbilityId.STALL, AbilityId.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, AbilityId.KEEN_EYE, AbilityId.STALL, AbilityId.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.GHOST, 0.5, 161, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 480, 50, 85, 125, 85, 115, 20, 45, 35, 133) + ), + new PokemonSpecies(SpeciesId.MAWILE, 3, false, false, false, "Deceiver Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.INTIMIDATE, AbilityId.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.INTIMIDATE, AbilityId.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.FAIRY, 1, 23.5, AbilityId.HUGE_POWER, AbilityId.HUGE_POWER, AbilityId.HUGE_POWER, 480, 50, 105, 125, 55, 95, 50, 45, 50, 133) + ), + new PokemonSpecies(SpeciesId.ARON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.4, 60, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 330, 50, 70, 100, 40, 40, 30, 180, 35, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.LAIRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.9, 120, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 430, 60, 90, 140, 50, 50, 40, 90, 35, 151, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.AGGRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, null, 2.2, 395, AbilityId.FILTER, AbilityId.FILTER, AbilityId.FILTER, 630, 70, 140, 230, 60, 80, 50, 45, 35, 265) + ), + new PokemonSpecies(SpeciesId.MEDITITE, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 0.6, 11.2, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 280, 30, 40, 55, 40, 55, 60, 180, 70, 56, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.MEDICHAM, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.PURE_POWER, 510, 60, 100, 85, 80, 85, 100, 90, 70, 144, true) + ), + new PokemonSpecies(SpeciesId.ELECTRIKE, 3, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.6, 15.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 295, 40, 45, 40, 65, 40, 65, 120, 50, 59, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.MANECTRIC, 3, false, false, false, "Discharge Pokémon", PokemonType.ELECTRIC, null, 1.5, 40.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.5, 40.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, null, 1.8, 44, AbilityId.INTIMIDATE, AbilityId.INTIMIDATE, AbilityId.INTIMIDATE, 575, 70, 75, 80, 135, 80, 135, 45, 50, 166) + ), + new PokemonSpecies(SpeciesId.PLUSLE, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, AbilityId.PLUS, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 405, 60, 50, 40, 85, 75, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MINUN, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, AbilityId.MINUS, AbilityId.NONE, AbilityId.VOLT_ABSORB, 405, 60, 40, 50, 75, 85, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VOLBEAT, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.7, 17.7, AbilityId.ILLUMINATE, AbilityId.SWARM, AbilityId.PRANKSTER, 430, 65, 73, 75, 47, 85, 85, 150, 70, 151, GrowthRate.ERRATIC, 100, false), + new PokemonSpecies(SpeciesId.ILLUMISE, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.6, 17.7, AbilityId.OBLIVIOUS, AbilityId.TINTED_LENS, AbilityId.PRANKSTER, 430, 65, 47, 75, 73, 85, 85, 150, 70, 151, GrowthRate.FLUCTUATING, 0, false), + new PokemonSpecies(SpeciesId.ROSELIA, 3, false, false, false, "Thorn Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.3, 2, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.LEAF_GUARD, 400, 50, 60, 45, 100, 80, 65, 150, 50, 140, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.GULPIN, 3, false, false, false, "Stomach Pokémon", PokemonType.POISON, null, 0.4, 10.3, AbilityId.LIQUID_OOZE, AbilityId.STICKY_HOLD, AbilityId.GLUTTONY, 302, 70, 43, 53, 43, 53, 40, 225, 70, 60, GrowthRate.FLUCTUATING, 50, true), + new PokemonSpecies(SpeciesId.SWALOT, 3, false, false, false, "Poison Bag Pokémon", PokemonType.POISON, null, 1.7, 80, AbilityId.LIQUID_OOZE, AbilityId.STICKY_HOLD, AbilityId.GLUTTONY, 467, 100, 73, 83, 73, 83, 55, 75, 70, 163, GrowthRate.FLUCTUATING, 50, true), + new PokemonSpecies(SpeciesId.CARVANHA, 3, false, false, false, "Savage Pokémon", PokemonType.WATER, PokemonType.DARK, 0.8, 20.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 305, 45, 90, 20, 65, 20, 65, 225, 35, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHARPEDO, 3, false, false, false, "Brutal Pokémon", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 2.5, 130.3, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.STRONG_JAW, 560, 70, 140, 70, 110, 65, 105, 60, 35, 161) + ), + new PokemonSpecies(SpeciesId.WAILMER, 3, false, false, false, "Ball Whale Pokémon", PokemonType.WATER, null, 2, 130, AbilityId.WATER_VEIL, AbilityId.OBLIVIOUS, AbilityId.PRESSURE, 400, 130, 70, 35, 70, 35, 60, 125, 50, 80, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.WAILORD, 3, false, false, false, "Float Whale Pokémon", PokemonType.WATER, null, 14.5, 398, AbilityId.WATER_VEIL, AbilityId.OBLIVIOUS, AbilityId.PRESSURE, 500, 170, 90, 45, 90, 45, 60, 60, 50, 175, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.NUMEL, 3, false, false, false, "Numb Pokémon", PokemonType.FIRE, PokemonType.GROUND, 0.7, 24, AbilityId.OBLIVIOUS, AbilityId.SIMPLE, AbilityId.OWN_TEMPO, 305, 60, 60, 40, 65, 45, 35, 255, 70, 61, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CAMERUPT, 3, false, false, false, "Eruption Pokémon", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, AbilityId.MAGMA_ARMOR, AbilityId.SOLID_ROCK, AbilityId.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, AbilityId.MAGMA_ARMOR, AbilityId.SOLID_ROCK, AbilityId.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.GROUND, 2.5, 320.5, AbilityId.SHEER_FORCE, AbilityId.SHEER_FORCE, AbilityId.SHEER_FORCE, 560, 70, 120, 100, 145, 105, 20, 150, 70, 161) + ), + new PokemonSpecies(SpeciesId.TORKOAL, 3, false, false, false, "Coal Pokémon", PokemonType.FIRE, null, 0.5, 80.4, AbilityId.WHITE_SMOKE, AbilityId.DROUGHT, AbilityId.SHELL_ARMOR, 470, 70, 85, 140, 85, 70, 20, 90, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SPOINK, 3, false, false, false, "Bounce Pokémon", PokemonType.PSYCHIC, null, 0.7, 30.6, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.GLUTTONY, 330, 60, 25, 35, 70, 80, 60, 255, 70, 66, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.GRUMPIG, 3, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.9, 71.5, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.GLUTTONY, 470, 80, 45, 65, 90, 110, 80, 60, 70, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.SPINDA, 3, false, false, false, "Spot Panda Pokémon", PokemonType.NORMAL, null, 1.1, 5, AbilityId.OWN_TEMPO, AbilityId.TANGLED_FEET, AbilityId.CONTRARY, 360, 60, 60, 60, 60, 60, 60, 255, 70, 126, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TRAPINCH, 3, false, false, false, "Ant Pit Pokémon", PokemonType.GROUND, null, 0.7, 15, AbilityId.HYPER_CUTTER, AbilityId.ARENA_TRAP, AbilityId.SHEER_FORCE, 290, 45, 100, 45, 45, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VIBRAVA, 3, false, false, false, "Vibration Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 1.1, 15.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 340, 50, 70, 50, 50, 50, 70, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLYGON, 3, false, false, false, "Mystic Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 2, 82, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 80, 100, 80, 80, 80, 100, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CACNEA, 3, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 0.4, 51.3, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.WATER_ABSORB, 335, 50, 85, 40, 85, 40, 35, 190, 35, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CACTURNE, 3, false, false, false, "Scarecrow Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 77.4, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.WATER_ABSORB, 475, 70, 115, 60, 115, 60, 55, 60, 35, 166, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SWABLU, 3, false, false, false, "Cotton Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.4, 1.2, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 310, 45, 40, 60, 40, 75, 50, 255, 50, 62, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.ALTARIA, 3, false, false, false, "Humming Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FAIRY, 1.5, 20.6, AbilityId.PIXILATE, AbilityId.NONE, AbilityId.PIXILATE, 590, 75, 110, 110, 110, 105, 80, 45, 50, 172) + ), + new PokemonSpecies(SpeciesId.ZANGOOSE, 3, false, false, false, "Cat Ferret Pokémon", PokemonType.NORMAL, null, 1.3, 40.3, AbilityId.IMMUNITY, AbilityId.NONE, AbilityId.TOXIC_BOOST, 458, 73, 115, 60, 60, 60, 90, 90, 70, 160, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.SEVIPER, 3, false, false, false, "Fang Snake Pokémon", PokemonType.POISON, null, 2.7, 52.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.INFILTRATOR, 458, 73, 100, 60, 100, 60, 65, 90, 70, 160, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.LUNATONE, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1, 168, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 460, 90, 55, 65, 95, 85, 70, 45, 50, 161, GrowthRate.FAST, null, false), + new PokemonSpecies(SpeciesId.SOLROCK, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.2, 154, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 460, 90, 95, 85, 55, 65, 70, 45, 50, 161, GrowthRate.FAST, null, false), + new PokemonSpecies(SpeciesId.BARBOACH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 1.9, AbilityId.OBLIVIOUS, AbilityId.ANTICIPATION, AbilityId.HYDRATION, 288, 50, 48, 43, 46, 41, 60, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WHISCASH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 23.6, AbilityId.OBLIVIOUS, AbilityId.ANTICIPATION, AbilityId.HYDRATION, 468, 110, 78, 73, 76, 71, 60, 75, 50, 164, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CORPHISH, 3, false, false, false, "Ruffian Pokémon", PokemonType.WATER, null, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.ADAPTABILITY, 308, 43, 80, 65, 50, 35, 35, 205, 50, 62, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.CRAWDAUNT, 3, false, false, false, "Rogue Pokémon", PokemonType.WATER, PokemonType.DARK, 1.1, 32.8, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.ADAPTABILITY, 468, 63, 120, 85, 90, 55, 55, 155, 50, 164, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.BALTOY, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 0.5, 21.5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 300, 40, 40, 55, 40, 70, 55, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.CLAYDOL, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 1.5, 108, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 500, 60, 70, 105, 70, 120, 75, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.LILEEP, 3, false, false, false, "Sea Lily Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1, 23.8, AbilityId.SUCTION_CUPS, AbilityId.NONE, AbilityId.STORM_DRAIN, 355, 66, 41, 77, 61, 87, 23, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.CRADILY, 3, false, false, false, "Barnacle Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1.5, 60.4, AbilityId.SUCTION_CUPS, AbilityId.NONE, AbilityId.STORM_DRAIN, 495, 86, 81, 97, 81, 107, 43, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.ANORITH, 3, false, false, false, "Old Shrimp Pokémon", PokemonType.ROCK, PokemonType.BUG, 0.7, 12.5, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.SWIFT_SWIM, 355, 45, 95, 50, 40, 50, 75, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.ARMALDO, 3, false, false, false, "Plate Pokémon", PokemonType.ROCK, PokemonType.BUG, 1.5, 68.2, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.SWIFT_SWIM, 495, 75, 125, 100, 70, 80, 45, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.FEEBAS, 3, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.6, 7.4, AbilityId.SWIFT_SWIM, AbilityId.OBLIVIOUS, AbilityId.ADAPTABILITY, 200, 20, 15, 20, 10, 55, 80, 255, 50, 40, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.MILOTIC, 3, false, false, false, "Tender Pokémon", PokemonType.WATER, null, 6.2, 162, AbilityId.MARVEL_SCALE, AbilityId.COMPETITIVE, AbilityId.CUTE_CHARM, 540, 95, 60, 79, 100, 125, 81, 60, 50, 189, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(SpeciesId.CASTFORM, 3, false, false, false, "Weather Pokémon", PokemonType.NORMAL, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, false, null, true), + new PokemonForm("Sunny Form", "sunny", PokemonType.FIRE, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + new PokemonForm("Rainy Form", "rainy", PokemonType.WATER, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + new PokemonForm("Snowy Form", "snowy", PokemonType.ICE, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147) + ), + new PokemonSpecies(SpeciesId.KECLEON, 3, false, false, false, "Color Swap Pokémon", PokemonType.NORMAL, null, 1, 22, AbilityId.COLOR_CHANGE, AbilityId.NONE, AbilityId.PROTEAN, 440, 60, 90, 70, 60, 120, 40, 200, 70, 154, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHUPPET, 3, false, false, false, "Puppet Pokémon", PokemonType.GHOST, null, 0.6, 2.3, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 295, 44, 75, 35, 63, 33, 45, 225, 35, 59, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.BANETTE, 3, false, false, false, "Marionette Pokémon", PokemonType.GHOST, null, 1.1, 12.5, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GHOST, null, 1.1, 12.5, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, null, 1.2, 13, AbilityId.PRANKSTER, AbilityId.PRANKSTER, AbilityId.PRANKSTER, 555, 64, 165, 75, 93, 83, 75, 45, 35, 159) + ), + new PokemonSpecies(SpeciesId.DUSKULL, 3, false, false, false, "Requiem Pokémon", PokemonType.GHOST, null, 0.8, 15, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.FRISK, 295, 20, 40, 90, 30, 90, 25, 190, 35, 59, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.DUSCLOPS, 3, false, false, false, "Beckon Pokémon", PokemonType.GHOST, null, 1.6, 30.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FRISK, 455, 40, 70, 130, 60, 130, 25, 90, 35, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TROPIUS, 3, false, false, false, "Fruit Pokémon", PokemonType.GRASS, PokemonType.FLYING, 2, 100, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.HARVEST, 460, 99, 68, 83, 72, 87, 51, 200, 70, 161, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CHIMECHO, 3, false, false, false, "Wind Chime Pokémon", PokemonType.PSYCHIC, null, 0.6, 1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 455, 75, 50, 80, 95, 90, 65, 45, 70, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.ABSOL, 3, false, false, false, "Disaster Pokémon", PokemonType.DARK, null, 1.2, 47, AbilityId.PRESSURE, AbilityId.SUPER_LUCK, AbilityId.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, null, 1.2, 47, AbilityId.PRESSURE, AbilityId.SUPER_LUCK, AbilityId.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, null, 1.2, 49, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 565, 65, 150, 60, 115, 60, 115, 30, 35, 163) + ), + new PokemonSpecies(SpeciesId.WYNAUT, 3, false, false, false, "Bright Pokémon", PokemonType.PSYCHIC, null, 0.6, 14, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.TELEPATHY, 260, 95, 23, 48, 23, 48, 23, 125, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SNORUNT, 3, false, false, false, "Snow Hat Pokémon", PokemonType.ICE, null, 0.7, 16.8, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 300, 50, 50, 50, 50, 50, 50, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GLALIE, 3, false, false, false, "Face Pokémon", PokemonType.ICE, null, 1.5, 256.5, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ICE, null, 1.5, 256.5, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ICE, null, 2.1, 350.2, AbilityId.REFRIGERATE, AbilityId.REFRIGERATE, AbilityId.REFRIGERATE, 580, 80, 120, 80, 120, 80, 100, 75, 50, 168) + ), + new PokemonSpecies(SpeciesId.SPHEAL, 3, false, false, false, "Clap Pokémon", PokemonType.ICE, PokemonType.WATER, 0.8, 39.5, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 290, 70, 40, 50, 55, 50, 25, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SEALEO, 3, false, false, false, "Ball Roll Pokémon", PokemonType.ICE, PokemonType.WATER, 1.1, 87.6, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 410, 90, 60, 70, 75, 70, 45, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WALREIN, 3, false, false, false, "Ice Break Pokémon", PokemonType.ICE, PokemonType.WATER, 1.4, 150.6, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 530, 110, 80, 90, 95, 90, 65, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CLAMPERL, 3, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.4, 52.5, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.RATTLED, 345, 35, 64, 85, 74, 55, 32, 255, 70, 69, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.HUNTAIL, 3, false, false, false, "Deep Sea Pokémon", PokemonType.WATER, null, 1.7, 27, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 485, 55, 104, 105, 94, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.GOREBYSS, 3, false, false, false, "South Sea Pokémon", PokemonType.WATER, null, 1.8, 22.6, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.HYDRATION, 485, 55, 84, 105, 114, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.RELICANTH, 3, false, false, false, "Longevity Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 23.4, AbilityId.SWIFT_SWIM, AbilityId.ROCK_HEAD, AbilityId.STURDY, 485, 100, 90, 130, 45, 65, 55, 25, 50, 170, GrowthRate.SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.LUVDISC, 3, false, false, false, "Rendezvous Pokémon", PokemonType.WATER, null, 0.6, 8.7, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.HYDRATION, 330, 43, 30, 55, 40, 65, 97, 225, 70, 116, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.BAGON, 3, false, false, false, "Rock Head Pokémon", PokemonType.DRAGON, null, 0.6, 42.1, AbilityId.ROCK_HEAD, AbilityId.NONE, AbilityId.SHEER_FORCE, 300, 45, 75, 60, 40, 30, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHELGON, 3, false, false, false, "Endurance Pokémon", PokemonType.DRAGON, null, 1.1, 110.5, AbilityId.ROCK_HEAD, AbilityId.NONE, AbilityId.OVERCOAT, 420, 65, 95, 100, 60, 50, 50, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SALAMENCE, 3, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 1.8, 112.6, AbilityId.AERILATE, AbilityId.NONE, AbilityId.AERILATE, 700, 95, 145, 130, 120, 90, 120, 45, 35, 300) + ), + new PokemonSpecies(SpeciesId.BELDUM, 3, false, false, false, "Iron Ball Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.6, 95.2, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 300, 40, 55, 80, 35, 60, 30, 45, 35, 60, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Frigibax + new PokemonSpecies(SpeciesId.METANG, 3, false, false, false, "Iron Claw Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.2, 202.5, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 420, 60, 75, 100, 55, 80, 50, 25, 35, 147, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Arctibax + new PokemonSpecies(SpeciesId.METAGROSS, 3, false, false, false, "Iron Leg Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 10, 35, 300, GrowthRate.SLOW, null, false, true, //Custom Catchrate, matching Baxcalibur + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 3, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.PSYCHIC, 2.5, 942.9, AbilityId.TOUGH_CLAWS, AbilityId.NONE, AbilityId.TOUGH_CLAWS, 700, 80, 145, 150, 105, 110, 110, 3, 35, 300) + ), + new PokemonSpecies(SpeciesId.REGIROCK, 3, true, false, false, "Rock Peak Pokémon", PokemonType.ROCK, null, 1.7, 230, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.STURDY, 580, 80, 100, 200, 50, 100, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.REGICE, 3, true, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 1.8, 175, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.ICE_BODY, 580, 80, 50, 100, 100, 200, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.REGISTEEL, 3, true, false, false, "Iron Pokémon", PokemonType.STEEL, null, 1.9, 205, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 580, 80, 75, 150, 75, 150, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LATIAS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 1.8, 52, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 700, 80, 100, 120, 140, 150, 110, 3, 90, 300) + ), + new PokemonSpecies(SpeciesId.LATIOS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 2.3, 70, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 700, 80, 130, 100, 160, 120, 110, 3, 90, 300) + ), + new PokemonSpecies(SpeciesId.KYOGRE, 3, false, true, false, "Sea Basin Pokémon", PokemonType.WATER, null, 4.5, 352, AbilityId.DRIZZLE, AbilityId.NONE, AbilityId.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 4.5, 352, AbilityId.DRIZZLE, AbilityId.NONE, AbilityId.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, false, null, true), + new PokemonForm("Primal", "primal", PokemonType.WATER, null, 9.8, 430, AbilityId.PRIMORDIAL_SEA, AbilityId.NONE, AbilityId.NONE, 770, 100, 150, 90, 180, 160, 90, 3, 0, 335) + ), + new PokemonSpecies(SpeciesId.GROUDON, 3, false, true, false, "Continent Pokémon", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), + new PokemonForm("Primal", "primal", PokemonType.GROUND, PokemonType.FIRE, 5, 999.7, AbilityId.DESOLATE_LAND, AbilityId.NONE, AbilityId.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335) + ), + new PokemonSpecies(SpeciesId.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 3, 0, 340, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, AbilityId.DELTA_STREAM, AbilityId.NONE, AbilityId.NONE, 780, 105, 180, 100, 180, 100, 115, 3, 0, 340) + ), + new PokemonSpecies(SpeciesId.JIRACHI, 3, false, false, true, "Wish Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.3, 1.1, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DEOXYS, 3, false, false, true, "DNA Pokémon", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal Forme", "normal", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true), + new PokemonForm("Attack Forme", "attack", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300), + new PokemonForm("Defense Forme", "defense", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300), + new PokemonForm("Speed Forme", "speed", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300) + ), + new PokemonSpecies(SpeciesId.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", PokemonType.GRASS, null, 0.4, 10.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.GROTLE, 4, false, false, false, "Grove Pokémon", PokemonType.GRASS, null, 1.1, 97, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TORTERRA, 4, false, false, false, "Continent Pokémon", PokemonType.GRASS, PokemonType.GROUND, 2.2, 310, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", PokemonType.FIRE, null, 0.5, 6.2, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MONFERNO, 4, false, false, false, "Playful Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 22, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.INFERNAPE, 4, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.2, 55, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PIPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.4, 5.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PRINPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.8, 23, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.EMPOLEON, 4, false, false, false, "Emperor Pokémon", PokemonType.WATER, PokemonType.STEEL, 1.7, 84.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.STARLY, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.STARAVIA, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15.5, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.STARAPTOR, 4, false, false, false, "Predator Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 24.9, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", PokemonType.NORMAL, null, 0.5, 20, AbilityId.SIMPLE, AbilityId.UNAWARE, AbilityId.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.BIBAREL, 4, false, false, false, "Beaver Pokémon", PokemonType.NORMAL, PokemonType.WATER, 1, 31.5, AbilityId.SIMPLE, AbilityId.UNAWARE, AbilityId.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.KRICKETOT, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 0.3, 2.2, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.KRICKETUNE, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 1, 25.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.TECHNICIAN, 384, 77, 85, 51, 55, 51, 65, 45, 70, 134, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SHINX, 4, false, false, false, "Flash Pokémon", PokemonType.ELECTRIC, null, 0.5, 9.5, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 263, 45, 65, 34, 40, 34, 45, 235, 50, 53, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.LUXIO, 4, false, false, false, "Spark Pokémon", PokemonType.ELECTRIC, null, 0.9, 30.5, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 363, 60, 85, 49, 60, 49, 60, 120, 100, 127, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.LUXRAY, 4, false, false, false, "Gleam Eyes Pokémon", PokemonType.ELECTRIC, null, 1.4, 42, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 523, 80, 120, 79, 95, 79, 70, 45, 50, 262, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.BUDEW, 4, false, false, false, "Bud Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1.2, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.LEAF_GUARD, 280, 40, 30, 35, 50, 70, 55, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ROSERADE, 4, false, false, false, "Bouquet Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.9, 14.5, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.TECHNICIAN, 515, 60, 70, 65, 125, 105, 90, 75, 50, 258, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.CRANIDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 0.9, 31.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHEER_FORCE, 350, 67, 125, 40, 30, 30, 58, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.RAMPARDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 1.6, 102.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHEER_FORCE, 495, 97, 165, 60, 65, 50, 58, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.SHIELDON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 0.5, 57, AbilityId.STURDY, AbilityId.NONE, AbilityId.SOUNDPROOF, 350, 30, 42, 118, 42, 88, 30, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.BASTIODON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.3, 149.5, AbilityId.STURDY, AbilityId.NONE, AbilityId.SOUNDPROOF, 495, 60, 52, 168, 47, 138, 30, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.BURMY, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true) + ), + new PokemonSpecies(SpeciesId.WORMADAM, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, false, null, true), + new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, PokemonType.GROUND, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 79, 105, 59, 85, 36, 45, 70, 148, false, null, true), + new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, PokemonType.STEEL, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 69, 95, 69, 95, 36, 45, 70, 148, false, null, true) + ), + new PokemonSpecies(SpeciesId.MOTHIM, 4, false, false, false, "Moth Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.9, 23.3, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 424, 70, 94, 50, 94, 50, 66, 45, 70, 148, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.COMBEE, 4, false, false, false, "Tiny Bee Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.3, 5.5, AbilityId.HONEY_GATHER, AbilityId.NONE, AbilityId.HUSTLE, 244, 30, 30, 42, 30, 42, 70, 120, 50, 49, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.VESPIQUEN, 4, false, false, false, "Beehive Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38.5, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 474, 70, 80, 102, 80, 102, 40, 45, 50, 166, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.PACHIRISU, 4, false, false, false, "EleSquirrel Pokémon", PokemonType.ELECTRIC, null, 0.4, 3.9, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.VOLT_ABSORB, 405, 60, 45, 70, 45, 90, 95, 200, 100, 142, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.BUIZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 0.7, 29.5, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 330, 55, 65, 35, 60, 30, 85, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.FLOATZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 1.1, 33.5, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 495, 85, 105, 55, 85, 50, 115, 75, 70, 173, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CHERUBI, 4, false, false, false, "Cherry Pokémon", PokemonType.GRASS, null, 0.4, 3.3, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.NONE, 275, 45, 35, 45, 62, 53, 35, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHERRIM, 4, false, false, false, "Blossom Pokémon", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Overcast Form", "overcast", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, false, null, true), + new PokemonForm("Sunshine Form", "sunshine", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158) + ), + new PokemonSpecies(SpeciesId.SHELLOS, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("East Sea", "east", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), + new PokemonForm("West Sea", "west", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true) + ), + new PokemonSpecies(SpeciesId.GASTRODON, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("East Sea", "east", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), + new PokemonForm("West Sea", "west", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true) + ), + new PokemonSpecies(SpeciesId.AMBIPOM, 4, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 1.2, 20.3, AbilityId.TECHNICIAN, AbilityId.PICKUP, AbilityId.SKILL_LINK, 482, 75, 100, 66, 60, 66, 115, 45, 100, 169, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.DRIFLOON, 4, false, false, false, "Balloon Pokémon", PokemonType.GHOST, PokemonType.FLYING, 0.4, 1.2, AbilityId.AFTERMATH, AbilityId.UNBURDEN, AbilityId.FLARE_BOOST, 348, 90, 50, 34, 60, 44, 70, 125, 50, 70, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.DRIFBLIM, 4, false, false, false, "Blimp Pokémon", PokemonType.GHOST, PokemonType.FLYING, 1.2, 15, AbilityId.AFTERMATH, AbilityId.UNBURDEN, AbilityId.FLARE_BOOST, 498, 150, 80, 44, 90, 54, 80, 60, 50, 174, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.BUNEARY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 0.4, 5.5, AbilityId.RUN_AWAY, AbilityId.KLUTZ, AbilityId.LIMBER, 350, 55, 66, 44, 44, 56, 85, 190, 0, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LOPUNNY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 1.2, 33.3, AbilityId.CUTE_CHARM, AbilityId.KLUTZ, AbilityId.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.2, 33.3, AbilityId.CUTE_CHARM, AbilityId.KLUTZ, AbilityId.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FIGHTING, 1.3, 28.3, AbilityId.SCRAPPY, AbilityId.SCRAPPY, AbilityId.SCRAPPY, 580, 65, 136, 94, 54, 96, 135, 60, 140, 168) + ), + new PokemonSpecies(SpeciesId.MISMAGIUS, 4, false, false, false, "Magical Pokémon", PokemonType.GHOST, null, 0.9, 4.4, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 495, 60, 60, 60, 105, 105, 105, 45, 35, 173, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.HONCHKROW, 4, false, false, false, "Big Boss Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.9, 27.3, AbilityId.INSOMNIA, AbilityId.SUPER_LUCK, AbilityId.MOXIE, 505, 100, 125, 52, 105, 52, 71, 30, 35, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLAMEOW, 4, false, false, false, "Catty Pokémon", PokemonType.NORMAL, null, 0.5, 3.9, AbilityId.LIMBER, AbilityId.OWN_TEMPO, AbilityId.KEEN_EYE, 310, 49, 55, 42, 42, 37, 85, 190, 70, 62, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.PURUGLY, 4, false, false, false, "Tiger Cat Pokémon", PokemonType.NORMAL, null, 1, 43.8, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.DEFIANT, 452, 71, 82, 64, 64, 59, 112, 75, 70, 158, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.CHINGLING, 4, false, false, false, "Bell Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.6, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 285, 45, 30, 50, 65, 50, 45, 120, 70, 57, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.STUNKY, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 0.4, 19.2, AbilityId.STENCH, AbilityId.AFTERMATH, AbilityId.KEEN_EYE, 329, 63, 63, 47, 41, 41, 74, 225, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SKUNTANK, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 38, AbilityId.STENCH, AbilityId.AFTERMATH, AbilityId.KEEN_EYE, 479, 103, 93, 67, 71, 61, 84, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BRONZOR, 4, false, false, false, "Bronze Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.5, 60.5, AbilityId.LEVITATE, AbilityId.HEATPROOF, AbilityId.HEAVY_METAL, 300, 57, 24, 86, 24, 86, 23, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.BRONZONG, 4, false, false, false, "Bronze Bell Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.3, 187, AbilityId.LEVITATE, AbilityId.HEATPROOF, AbilityId.HEAVY_METAL, 500, 67, 89, 116, 79, 116, 33, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.BONSLY, 4, false, false, false, "Bonsai Pokémon", PokemonType.ROCK, null, 0.5, 15, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.RATTLED, 290, 50, 80, 95, 10, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIME_JR, 4, false, false, false, "Mime Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.6, 13, AbilityId.SOUNDPROOF, AbilityId.FILTER, AbilityId.TECHNICIAN, 310, 20, 25, 45, 70, 90, 60, 145, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HAPPINY, 4, false, false, false, "Playhouse Pokémon", PokemonType.NORMAL, null, 0.6, 24.4, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.FRIEND_GUARD, 220, 100, 5, 5, 15, 65, 30, 130, 140, 110, GrowthRate.FAST, 0, false), + new PokemonSpecies(SpeciesId.CHATOT, 4, false, false, false, "Music Note Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 1.9, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 411, 76, 65, 45, 92, 42, 91, 30, 35, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SPIRITOMB, 4, false, false, false, "Forbidden Pokémon", PokemonType.GHOST, PokemonType.DARK, 1, 108, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INFILTRATOR, 485, 50, 92, 108, 92, 108, 35, 100, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GIBLE, 4, false, false, false, "Land Shark Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 0.7, 20.5, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 300, 58, 70, 45, 40, 45, 42, 45, 50, 60, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.GABITE, 4, false, false, false, "Cave Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.4, 56, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 410, 68, 90, 65, 50, 55, 82, 45, 50, 144, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.GARCHOMP, 4, false, false, false, "Mach Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SAND_FORCE, 700, 108, 170, 115, 120, 95, 92, 45, 50, 300, true) + ), + new PokemonSpecies(SpeciesId.MUNCHLAX, 4, false, false, false, "Big Eater Pokémon", PokemonType.NORMAL, null, 0.6, 105, AbilityId.PICKUP, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 390, 135, 85, 40, 40, 85, 5, 50, 50, 78, GrowthRate.SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.RIOLU, 4, false, false, false, "Emanation Pokémon", PokemonType.FIGHTING, null, 0.7, 20.2, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.PRANKSTER, 285, 40, 70, 40, 35, 40, 60, 75, 50, 57, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.LUCARIO, 4, false, false, false, "Aura Pokémon", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.STEEL, 1.3, 57.5, AbilityId.ADAPTABILITY, AbilityId.ADAPTABILITY, AbilityId.ADAPTABILITY, 625, 70, 145, 88, 140, 70, 112, 45, 50, 184) + ), + new PokemonSpecies(SpeciesId.HIPPOPOTAS, 4, false, false, false, "Hippo Pokémon", PokemonType.GROUND, null, 0.8, 49.5, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_FORCE, 330, 68, 72, 78, 38, 42, 32, 140, 50, 66, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.HIPPOWDON, 4, false, false, false, "Heavyweight Pokémon", PokemonType.GROUND, null, 2, 300, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_FORCE, 525, 108, 112, 118, 68, 72, 47, 60, 50, 184, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.SKORUPI, 4, false, false, false, "Scorpion Pokémon", PokemonType.POISON, PokemonType.BUG, 0.8, 12, AbilityId.BATTLE_ARMOR, AbilityId.SNIPER, AbilityId.KEEN_EYE, 330, 40, 50, 90, 30, 55, 65, 120, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAPION, 4, false, false, false, "Ogre Scorpion Pokémon", PokemonType.POISON, PokemonType.DARK, 1.3, 61.5, AbilityId.BATTLE_ARMOR, AbilityId.SNIPER, AbilityId.KEEN_EYE, 500, 70, 90, 110, 60, 75, 95, 45, 50, 175, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CROAGUNK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 0.7, 23, AbilityId.ANTICIPATION, AbilityId.DRY_SKIN, AbilityId.POISON_TOUCH, 300, 48, 61, 40, 61, 40, 50, 140, 100, 60, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.TOXICROAK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.3, 44.4, AbilityId.ANTICIPATION, AbilityId.DRY_SKIN, AbilityId.POISON_TOUCH, 490, 83, 106, 65, 86, 65, 85, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CARNIVINE, 4, false, false, false, "Bug Catcher Pokémon", PokemonType.GRASS, null, 1.4, 27, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 454, 74, 100, 72, 90, 72, 46, 200, 70, 159, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.FINNEON, 4, false, false, false, "Wing Fish Pokémon", PokemonType.WATER, null, 0.4, 7, AbilityId.SWIFT_SWIM, AbilityId.STORM_DRAIN, AbilityId.WATER_VEIL, 330, 49, 49, 56, 49, 61, 66, 190, 70, 66, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(SpeciesId.LUMINEON, 4, false, false, false, "Neon Pokémon", PokemonType.WATER, null, 1.2, 24, AbilityId.SWIFT_SWIM, AbilityId.STORM_DRAIN, AbilityId.WATER_VEIL, 460, 69, 69, 76, 69, 86, 91, 75, 70, 161, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(SpeciesId.MANTYKE, 4, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 1, 65, AbilityId.SWIFT_SWIM, AbilityId.WATER_ABSORB, AbilityId.WATER_VEIL, 345, 45, 20, 50, 60, 120, 50, 25, 50, 69, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SNOVER, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 1, 50.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 334, 60, 62, 50, 62, 60, 40, 120, 50, 67, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.ABOMASNOW, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.ICE, 2.7, 185, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SNOW_WARNING, 594, 90, 132, 105, 132, 105, 30, 60, 50, 173, true) + ), + new PokemonSpecies(SpeciesId.WEAVILE, 4, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 1.1, 34, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.PICKPOCKET, 510, 70, 120, 65, 45, 85, 125, 45, 35, 179, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.MAGNEZONE, 4, false, false, false, "Magnet Area Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1.2, 180, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 535, 70, 70, 115, 130, 90, 60, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.LICKILICKY, 4, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.7, 140, AbilityId.OWN_TEMPO, AbilityId.OBLIVIOUS, AbilityId.CLOUD_NINE, 515, 110, 85, 95, 80, 95, 50, 30, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RHYPERIOR, 4, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 2.4, 282.8, AbilityId.LIGHTNING_ROD, AbilityId.SOLID_ROCK, AbilityId.RECKLESS, 535, 115, 140, 130, 55, 55, 40, 30, 50, 268, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.TANGROWTH, 4, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 2, 128.6, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.REGENERATOR, 535, 100, 100, 125, 110, 50, 50, 30, 50, 187, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ELECTIVIRE, 4, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.8, 138.6, AbilityId.MOTOR_DRIVE, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 540, 75, 123, 67, 95, 85, 95, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MAGMORTAR, 4, false, false, false, "Blast Pokémon", PokemonType.FIRE, null, 1.6, 68, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 540, 75, 95, 67, 125, 95, 83, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.TOGEKISS, 4, false, false, false, "Jubilee Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.5, 38, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 545, 85, 50, 95, 120, 115, 80, 30, 50, 273, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(SpeciesId.YANMEGA, 4, false, false, false, "Ogre Darner Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.9, 51.5, AbilityId.SPEED_BOOST, AbilityId.TINTED_LENS, AbilityId.FRISK, 515, 86, 76, 86, 116, 56, 95, 30, 70, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LEAFEON, 4, false, false, false, "Verdant Pokémon", PokemonType.GRASS, null, 1, 25.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 65, 110, 130, 60, 65, 95, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.GLACEON, 4, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.8, 25.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.ICE_BODY, 525, 65, 60, 110, 130, 95, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.GLISCOR, 4, false, false, false, "Fang Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 2, 42.5, AbilityId.HYPER_CUTTER, AbilityId.SAND_VEIL, AbilityId.POISON_HEAL, 510, 75, 95, 125, 45, 75, 95, 30, 70, 179, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MAMOSWINE, 4, false, false, false, "Twin Tusk Pokémon", PokemonType.ICE, PokemonType.GROUND, 2.5, 291, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 530, 110, 130, 80, 70, 60, 80, 50, 50, 265, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.PORYGON_Z, 4, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.9, 34, AbilityId.ADAPTABILITY, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 535, 85, 80, 70, 135, 75, 90, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.GALLADE, 4, false, false, false, "Blade Pokémon", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, AbilityId.STEADFAST, AbilityId.SHARPNESS, AbilityId.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, AbilityId.STEADFAST, AbilityId.SHARPNESS, AbilityId.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 56.4, AbilityId.INNER_FOCUS, AbilityId.INNER_FOCUS, AbilityId.INNER_FOCUS, 618, 68, 165, 95, 65, 115, 110, 45, 35, 259) + ), + new PokemonSpecies(SpeciesId.PROBOPASS, 4, false, false, false, "Compass Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.4, 340, AbilityId.STURDY, AbilityId.MAGNET_PULL, AbilityId.SAND_FORCE, 525, 60, 55, 145, 75, 150, 40, 60, 70, 184, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUSKNOIR, 4, false, false, false, "Gripper Pokémon", PokemonType.GHOST, null, 2.2, 106.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FRISK, 525, 45, 100, 135, 65, 135, 45, 45, 35, 263, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.FROSLASS, 4, false, false, false, "Snow Land Pokémon", PokemonType.ICE, PokemonType.GHOST, 1.3, 26.6, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ROTOM, 4, false, false, false, "Plasma Pokémon", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true), + new PokemonForm("Heat", "heat", PokemonType.ELECTRIC, PokemonType.FIRE, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Wash", "wash", PokemonType.ELECTRIC, PokemonType.WATER, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Frost", "frost", PokemonType.ELECTRIC, PokemonType.ICE, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Fan", "fan", PokemonType.ELECTRIC, PokemonType.FLYING, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Mow", "mow", PokemonType.ELECTRIC, PokemonType.GRASS, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true) + ), + new PokemonSpecies(SpeciesId.UXIE, 4, true, false, false, "Knowledge Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MESPRIT, 4, true, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.AZELF, 4, true, false, false, "Willpower Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 75, 125, 70, 125, 70, 115, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DIALGA, 4, false, true, false, "Temporal Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.STEEL, PokemonType.DRAGON, 7, 848.7, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 100, 120, 150, 120, 90, 3, 0, 340) + ), + new PokemonSpecies(SpeciesId.PALKIA, 4, false, true, false, "Spatial Pokémon", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.WATER, PokemonType.DRAGON, 6.3, 659, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 100, 100, 150, 120, 120, 3, 0, 340) + ), + new PokemonSpecies(SpeciesId.HEATRAN, 4, true, false, false, "Lava Dome Pokémon", PokemonType.FIRE, PokemonType.STEEL, 1.7, 430, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.FLAME_BODY, 600, 91, 90, 106, 130, 106, 77, 3, 100, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.REGIGIGAS, 4, true, false, false, "Colossal Pokémon", PokemonType.NORMAL, null, 3.7, 420, AbilityId.SLOW_START, AbilityId.NONE, AbilityId.NORMALIZE, 670, 110, 160, 110, 80, 110, 100, 3, 0, 335, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GIRATINA, 4, false, true, false, "Renegade Pokémon", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Altered Forme", "altered", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.GHOST, PokemonType.DRAGON, 6.9, 650, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.LEVITATE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340) + ), + new PokemonSpecies(SpeciesId.CRESSELIA, 4, true, false, false, "Lunar Pokémon", PokemonType.PSYCHIC, null, 1.5, 85.6, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", PokemonType.WATER, null, 0.4, 3.1, AbilityId.HYDRATION, AbilityId.NONE, AbilityId.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MANAPHY, 4, false, false, true, "Seafaring Pokémon", PokemonType.WATER, null, 0.3, 1.4, AbilityId.HYDRATION, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", PokemonType.DARK, null, 1.5, 50.5, AbilityId.BAD_DREAMS, AbilityId.NONE, AbilityId.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", PokemonType.GRASS, null, 0.2, 2.1, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true, + new PokemonForm("Land Forme", "land", PokemonType.GRASS, null, 0.2, 2.1, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true), + new PokemonForm("Sky Forme", "sky", PokemonType.GRASS, PokemonType.FLYING, 0.4, 5.2, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300) + ), + new PokemonSpecies(SpeciesId.ARCEUS, 4, false, false, true, "Alpha Pokémon", PokemonType.NORMAL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "normal", PokemonType.NORMAL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true), + new PokemonForm("Fighting", "fighting", PokemonType.FIGHTING, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Flying", "flying", PokemonType.FLYING, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Poison", "poison", PokemonType.POISON, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ground", "ground", PokemonType.GROUND, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Rock", "rock", PokemonType.ROCK, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Bug", "bug", PokemonType.BUG, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ghost", "ghost", PokemonType.GHOST, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Steel", "steel", PokemonType.STEEL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Fire", "fire", PokemonType.FIRE, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Water", "water", PokemonType.WATER, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Grass", "grass", PokemonType.GRASS, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Electric", "electric", PokemonType.ELECTRIC, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Psychic", "psychic", PokemonType.PSYCHIC, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ice", "ice", PokemonType.ICE, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Dragon", "dragon", PokemonType.DRAGON, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Dark", "dark", PokemonType.DARK, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Fairy", "fairy", PokemonType.FAIRY, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("???", "unknown", PokemonType.UNKNOWN, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true) + ), + new PokemonSpecies(SpeciesId.VICTINI, 5, false, false, true, "Victory Pokémon", PokemonType.PSYCHIC, PokemonType.FIRE, 0.4, 4, AbilityId.VICTORY_STAR, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SNIVY, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.6, 8.1, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SERVINE, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.8, 16, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SERPERIOR, 5, false, false, false, "Regal Pokémon", PokemonType.GRASS, null, 3.3, 63, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TEPIG, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, null, 0.5, 9.9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1, 55.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.6, 150, AbilityId.BLAZE, AbilityId.NONE, AbilityId.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", PokemonType.WATER, null, 0.5, 5.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DEWOTT, 5, false, false, false, "Discipline Pokémon", PokemonType.WATER, null, 0.8, 24.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SAMUROTT, 5, false, false, false, "Formidable Pokémon", PokemonType.WATER, null, 1.5, 94.6, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PATRAT, 5, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.5, 11.6, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WATCHOG, 5, false, false, false, "Lookout Pokémon", PokemonType.NORMAL, null, 1.1, 27, AbilityId.ILLUMINATE, AbilityId.KEEN_EYE, AbilityId.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LILLIPUP, 5, false, false, false, "Puppy Pokémon", PokemonType.NORMAL, null, 0.4, 4.1, AbilityId.VITAL_SPIRIT, AbilityId.PICKUP, AbilityId.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HERDIER, 5, false, false, false, "Loyal Dog Pokémon", PokemonType.NORMAL, null, 0.9, 14.7, AbilityId.INTIMIDATE, AbilityId.SAND_RUSH, AbilityId.SCRAPPY, 370, 65, 80, 65, 35, 65, 60, 120, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.STOUTLAND, 5, false, false, false, "Big-Hearted Pokémon", PokemonType.NORMAL, null, 1.2, 61, AbilityId.INTIMIDATE, AbilityId.SAND_RUSH, AbilityId.SCRAPPY, 500, 85, 110, 90, 45, 90, 80, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PURRLOIN, 5, false, false, false, "Devious Pokémon", PokemonType.DARK, null, 0.4, 10.1, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.PRANKSTER, 281, 41, 50, 37, 50, 37, 66, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LIEPARD, 5, false, false, false, "Cruel Pokémon", PokemonType.DARK, null, 1.1, 37.5, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.PRANKSTER, 446, 64, 88, 50, 88, 50, 106, 90, 50, 156, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PANSAGE, 5, false, false, false, "Grass Monkey Pokémon", PokemonType.GRASS, null, 0.6, 10.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.OVERGROW, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SIMISAGE, 5, false, false, false, "Thorn Monkey Pokémon", PokemonType.GRASS, null, 1.1, 30.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.OVERGROW, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.PANSEAR, 5, false, false, false, "High Temp Pokémon", PokemonType.FIRE, null, 0.6, 11, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.BLAZE, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SIMISEAR, 5, false, false, false, "Ember Pokémon", PokemonType.FIRE, null, 1, 28, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.BLAZE, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.PANPOUR, 5, false, false, false, "Spray Pokémon", PokemonType.WATER, null, 0.6, 13.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.TORRENT, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SIMIPOUR, 5, false, false, false, "Geyser Pokémon", PokemonType.WATER, null, 1, 29, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.TORRENT, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.MUNNA, 5, false, false, false, "Dream Eater Pokémon", PokemonType.PSYCHIC, null, 0.6, 23.3, AbilityId.FOREWARN, AbilityId.SYNCHRONIZE, AbilityId.TELEPATHY, 292, 76, 25, 45, 67, 55, 24, 190, 50, 58, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.MUSHARNA, 5, false, false, false, "Drowsing Pokémon", PokemonType.PSYCHIC, null, 1.1, 60.5, AbilityId.FOREWARN, AbilityId.SYNCHRONIZE, AbilityId.TELEPATHY, 487, 116, 55, 85, 107, 95, 29, 75, 50, 170, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.PIDOVE, 5, false, false, false, "Tiny Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.1, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 264, 50, 55, 50, 36, 30, 43, 255, 50, 53, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TRANQUILL, 5, false, false, false, "Wild Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 358, 62, 77, 62, 50, 42, 65, 120, 50, 125, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.UNFEZANT, 5, false, false, false, "Proud Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 29, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 488, 80, 115, 80, 65, 55, 93, 45, 50, 244, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.BLITZLE, 5, false, false, false, "Electrified Pokémon", PokemonType.ELECTRIC, null, 0.8, 29.8, AbilityId.LIGHTNING_ROD, AbilityId.MOTOR_DRIVE, AbilityId.SAP_SIPPER, 295, 45, 60, 32, 50, 32, 76, 190, 70, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ZEBSTRIKA, 5, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.6, 79.5, AbilityId.LIGHTNING_ROD, AbilityId.MOTOR_DRIVE, AbilityId.SAP_SIPPER, 497, 75, 100, 63, 80, 63, 116, 75, 70, 174, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ROGGENROLA, 5, false, false, false, "Mantle Pokémon", PokemonType.ROCK, null, 0.4, 18, AbilityId.STURDY, AbilityId.WEAK_ARMOR, AbilityId.SAND_FORCE, 280, 55, 75, 85, 25, 25, 15, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.BOLDORE, 5, false, false, false, "Ore Pokémon", PokemonType.ROCK, null, 0.9, 102, AbilityId.STURDY, AbilityId.WEAK_ARMOR, AbilityId.SAND_FORCE, 390, 70, 105, 105, 50, 40, 20, 120, 50, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GIGALITH, 5, false, false, false, "Compressed Pokémon", PokemonType.ROCK, null, 1.7, 260, AbilityId.STURDY, AbilityId.SAND_STREAM, AbilityId.SAND_FORCE, 515, 85, 135, 130, 60, 80, 25, 45, 50, 258, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WOOBAT, 5, false, false, false, "Bat Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.4, 2.1, AbilityId.UNAWARE, AbilityId.KLUTZ, AbilityId.SIMPLE, 323, 65, 45, 43, 55, 43, 72, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWOOBAT, 5, false, false, false, "Courting Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.9, 10.5, AbilityId.UNAWARE, AbilityId.KLUTZ, AbilityId.SIMPLE, 425, 67, 57, 55, 77, 55, 114, 45, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DRILBUR, 5, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.3, 8.5, AbilityId.SAND_RUSH, AbilityId.SAND_FORCE, AbilityId.MOLD_BREAKER, 328, 60, 85, 40, 30, 45, 68, 120, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.EXCADRILL, 5, false, false, false, "Subterrene Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 40.4, AbilityId.SAND_RUSH, AbilityId.SAND_FORCE, AbilityId.MOLD_BREAKER, 508, 110, 135, 60, 50, 65, 88, 60, 50, 178, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AUDINO, 5, false, false, false, "Hearing Pokémon", PokemonType.NORMAL, null, 1.1, 31, AbilityId.HEALER, AbilityId.REGENERATOR, AbilityId.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.1, 31, AbilityId.HEALER, AbilityId.REGENERATOR, AbilityId.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FAIRY, 1.5, 32, AbilityId.REGENERATOR, AbilityId.REGENERATOR, AbilityId.REGENERATOR, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390) + ), + new PokemonSpecies(SpeciesId.TIMBURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 0.6, 12.5, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 305, 75, 80, 55, 25, 35, 35, 180, 70, 61, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.GURDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.2, 40, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 405, 85, 105, 85, 40, 50, 40, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.CONKELDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.4, 87, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 505, 105, 140, 95, 55, 65, 45, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.TYMPOLE, 5, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.5, 4.5, AbilityId.SWIFT_SWIM, AbilityId.HYDRATION, AbilityId.WATER_ABSORB, 294, 50, 50, 40, 50, 40, 64, 255, 50, 59, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PALPITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.8, 17, AbilityId.SWIFT_SWIM, AbilityId.HYDRATION, AbilityId.WATER_ABSORB, 384, 75, 65, 55, 65, 55, 69, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SEISMITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 62, AbilityId.SWIFT_SWIM, AbilityId.POISON_TOUCH, AbilityId.WATER_ABSORB, 509, 105, 95, 75, 85, 75, 74, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.THROH, 5, false, false, false, "Judo Pokémon", PokemonType.FIGHTING, null, 1.3, 55.5, AbilityId.GUTS, AbilityId.INNER_FOCUS, AbilityId.MOLD_BREAKER, 465, 120, 100, 85, 30, 85, 45, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.SAWK, 5, false, false, false, "Karate Pokémon", PokemonType.FIGHTING, null, 1.4, 51, AbilityId.STURDY, AbilityId.INNER_FOCUS, AbilityId.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.SEWADDLE, 5, false, false, false, "Sewing Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 2.5, AbilityId.SWARM, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 7.3, AbilityId.LEAF_GUARD, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", PokemonType.BUG, PokemonType.GRASS, 1.2, 20.5, AbilityId.SWARM, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VENIPEDE, 5, false, false, false, "Centipede Pokémon", PokemonType.BUG, PokemonType.POISON, 0.4, 5.3, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 58.5, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", PokemonType.BUG, PokemonType.POISON, 2.5, 200.5, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.COTTONEE, 5, false, false, false, "Cotton Puff Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.3, 0.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 280, 40, 27, 60, 37, 50, 66, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.7, 6.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PETILIL, 5, false, false, false, "Bulb Pokémon", PokemonType.GRASS, null, 0.5, 6.6, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.LILLIGANT, 5, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 1.1, 16.3, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), + new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, AbilityId.ROCK_HEAD, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), + new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, AbilityId.RATTLED, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true) + ), + new PokemonSpecies(SpeciesId.SANDILE, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 0.7, 15.2, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 1, 33.4, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KROOKODILE, 5, false, false, false, "Intimidation Pokémon", PokemonType.GROUND, PokemonType.DARK, 1.5, 96.3, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 519, 95, 117, 80, 65, 70, 92, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", PokemonType.FIRE, null, 0.6, 37.5, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DARMANITAN, 5, false, false, false, "Blazing Pokémon", PokemonType.FIRE, null, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Standard Mode", "", PokemonType.FIRE, null, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), + new PokemonForm("Zen Mode", "zen", PokemonType.FIRE, PokemonType.PSYCHIC, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189) + ), + new PokemonSpecies(SpeciesId.MARACTUS, 5, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 1, 28, AbilityId.WATER_ABSORB, AbilityId.CHLOROPHYLL, AbilityId.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.3, 14.5, AbilityId.STURDY, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRUSTLE, 5, false, false, false, "Stone Home Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.4, 200, AbilityId.STURDY, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 485, 70, 105, 125, 65, 75, 45, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCRAGGY, 5, false, false, false, "Shedding Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 0.6, 11.8, AbilityId.SHED_SKIN, AbilityId.MOXIE, AbilityId.INTIMIDATE, 348, 50, 75, 70, 35, 70, 48, 180, 35, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCRAFTY, 5, false, false, false, "Hoodlum Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 1.1, 30, AbilityId.SHED_SKIN, AbilityId.MOXIE, AbilityId.INTIMIDATE, 488, 65, 90, 115, 45, 115, 58, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SIGILYPH, 5, false, false, false, "Avianoid Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.4, 14, AbilityId.WONDER_SKIN, AbilityId.MAGIC_GUARD, AbilityId.TINTED_LENS, 490, 72, 58, 80, 103, 80, 97, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.YAMASK, 5, false, false, false, "Spirit Pokémon", PokemonType.GHOST, null, 0.5, 1.5, AbilityId.MUMMY, AbilityId.NONE, AbilityId.NONE, 303, 38, 30, 85, 55, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", PokemonType.GHOST, null, 1.7, 76.5, AbilityId.MUMMY, AbilityId.NONE, AbilityId.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.7, 16.5, AbilityId.SOLID_ROCK, AbilityId.STURDY, AbilityId.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 1.2, 81, AbilityId.SOLID_ROCK, AbilityId.STURDY, AbilityId.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.ARCHEN, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.5, 9.5, AbilityId.DEFEATIST, AbilityId.NONE, AbilityId.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(SpeciesId.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.4, 32, AbilityId.DEFEATIST, AbilityId.NONE, AbilityId.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(SpeciesId.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", PokemonType.POISON, null, 0.6, 31, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", PokemonType.POISON, null, 1.9, 107.3, AbilityId.STENCH, AbilityId.WEAK_ARMOR, AbilityId.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.POISON, null, 1.9, 107.3, AbilityId.STENCH, AbilityId.WEAK_ARMOR, AbilityId.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.POISON, PokemonType.STEEL, 21, 999.9, AbilityId.TOXIC_DEBRIS, AbilityId.TOXIC_DEBRIS, AbilityId.TOXIC_DEBRIS, 574, 115, 121, 102, 81, 102, 53, 60, 50, 166) + ), + new PokemonSpecies(SpeciesId.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", PokemonType.DARK, null, 0.7, 12.5, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", PokemonType.DARK, null, 1.6, 81.1, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MINCCINO, 5, false, false, false, "Chinchilla Pokémon", PokemonType.NORMAL, null, 0.4, 5.8, AbilityId.CUTE_CHARM, AbilityId.TECHNICIAN, AbilityId.SKILL_LINK, 300, 55, 50, 40, 40, 40, 75, 255, 50, 60, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.CINCCINO, 5, false, false, false, "Scarf Pokémon", PokemonType.NORMAL, null, 0.5, 7.5, AbilityId.CUTE_CHARM, AbilityId.TECHNICIAN, AbilityId.SKILL_LINK, 470, 75, 95, 60, 65, 60, 115, 60, 50, 165, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.GOTHITA, 5, false, false, false, "Fixation Pokémon", PokemonType.PSYCHIC, null, 0.4, 5.8, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 290, 45, 30, 50, 55, 65, 45, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(SpeciesId.GOTHORITA, 5, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.7, 18, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 390, 60, 45, 70, 75, 85, 55, 100, 50, 137, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(SpeciesId.GOTHITELLE, 5, false, false, false, "Astral Body Pokémon", PokemonType.PSYCHIC, null, 1.5, 44, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 490, 70, 55, 95, 95, 110, 65, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(SpeciesId.SOLOSIS, 5, false, false, false, "Cell Pokémon", PokemonType.PSYCHIC, null, 0.3, 1, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 290, 45, 30, 40, 105, 50, 20, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DUOSION, 5, false, false, false, "Mitosis Pokémon", PokemonType.PSYCHIC, null, 0.6, 8, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 370, 65, 40, 50, 125, 60, 30, 100, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.REUNICLUS, 5, false, false, false, "Multiplying Pokémon", PokemonType.PSYCHIC, null, 1, 20.1, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 490, 110, 65, 75, 125, 85, 30, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DUCKLETT, 5, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.5, 5.5, AbilityId.KEEN_EYE, AbilityId.BIG_PECKS, AbilityId.HYDRATION, 305, 62, 44, 50, 44, 50, 55, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWANNA, 5, false, false, false, "White Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.3, 24.2, AbilityId.KEEN_EYE, AbilityId.BIG_PECKS, AbilityId.HYDRATION, 473, 75, 87, 63, 87, 63, 98, 45, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VANILLITE, 5, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.4, 5.7, AbilityId.ICE_BODY, AbilityId.SNOW_CLOAK, AbilityId.WEAK_ARMOR, 305, 36, 50, 50, 65, 60, 44, 255, 50, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.VANILLISH, 5, false, false, false, "Icy Snow Pokémon", PokemonType.ICE, null, 1.1, 41, AbilityId.ICE_BODY, AbilityId.SNOW_CLOAK, AbilityId.WEAK_ARMOR, 395, 51, 65, 65, 80, 75, 59, 120, 50, 138, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.VANILLUXE, 5, false, false, false, "Snowstorm Pokémon", PokemonType.ICE, null, 1.3, 57.5, AbilityId.ICE_BODY, AbilityId.SNOW_WARNING, AbilityId.WEAK_ARMOR, 535, 71, 95, 85, 110, 95, 79, 45, 50, 268, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DEERLING, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true) + ), + new PokemonSpecies(SpeciesId.SAWSBUCK, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true) + ), + new PokemonSpecies(SpeciesId.EMOLGA, 5, false, false, false, "Sky Squirrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 5, AbilityId.STATIC, AbilityId.NONE, AbilityId.MOTOR_DRIVE, 428, 55, 75, 60, 75, 60, 103, 200, 50, 150, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KARRABLAST, 5, false, false, false, "Clamping Pokémon", PokemonType.BUG, null, 0.5, 5.9, AbilityId.SWARM, AbilityId.SHED_SKIN, AbilityId.NO_GUARD, 315, 50, 75, 45, 40, 45, 60, 200, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ESCAVALIER, 5, false, false, false, "Cavalry Pokémon", PokemonType.BUG, PokemonType.STEEL, 1, 33, AbilityId.SWARM, AbilityId.SHELL_ARMOR, AbilityId.OVERCOAT, 495, 70, 135, 105, 60, 105, 20, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FOONGUS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.REGENERATOR, 294, 69, 55, 45, 55, 55, 15, 190, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AMOONGUSS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.6, 10.5, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.REGENERATOR, 464, 114, 85, 70, 85, 80, 30, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FRILLISH, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 1.2, 33, AbilityId.WATER_ABSORB, AbilityId.CURSED_BODY, AbilityId.DAMP, 335, 55, 40, 50, 65, 85, 40, 190, 50, 67, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.JELLICENT, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 2.2, 135, AbilityId.WATER_ABSORB, AbilityId.CURSED_BODY, AbilityId.DAMP, 480, 100, 60, 70, 85, 105, 60, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ALOMOMOLA, 5, false, false, false, "Caring Pokémon", PokemonType.WATER, null, 1.2, 31.6, AbilityId.HEALER, AbilityId.HYDRATION, AbilityId.REGENERATOR, 470, 165, 75, 80, 40, 45, 65, 75, 70, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.JOLTIK, 5, false, false, false, "Attaching Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.1, 0.6, AbilityId.COMPOUND_EYES, AbilityId.UNNERVE, AbilityId.SWARM, 319, 50, 47, 50, 57, 50, 65, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALVANTULA, 5, false, false, false, "EleSpider Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.8, 14.3, AbilityId.COMPOUND_EYES, AbilityId.UNNERVE, AbilityId.SWARM, 472, 70, 77, 60, 97, 60, 108, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FERROSEED, 5, false, false, false, "Thorn Seed Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.6, 18.8, AbilityId.IRON_BARBS, AbilityId.NONE, AbilityId.ANTICIPATION, 305, 44, 50, 91, 24, 86, 10, 255, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FERROTHORN, 5, false, false, false, "Thorn Pod Pokémon", PokemonType.GRASS, PokemonType.STEEL, 1, 110, AbilityId.IRON_BARBS, AbilityId.NONE, AbilityId.ANTICIPATION, 489, 74, 94, 131, 54, 116, 20, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KLINK, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.3, 21, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 300, 40, 55, 70, 45, 60, 30, 130, 50, 60, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.KLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 51, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 440, 60, 80, 95, 70, 85, 50, 60, 50, 154, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.KLINKLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 81, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.TYNAMO, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 0.2, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 1.2, 22, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 2.1, 80.5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ELGYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 0.5, 9, AbilityId.TELEPATHY, AbilityId.SYNCHRONIZE, AbilityId.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 1, 34.5, AbilityId.TELEPATHY, AbilityId.SYNCHRONIZE, AbilityId.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LITWICK, 5, false, false, false, "Candle Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.3, 3.1, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LAMPENT, 5, false, false, false, "Lamp Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.6, 13, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 370, 60, 40, 60, 95, 60, 55, 90, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CHANDELURE, 5, false, false, false, "Luring Pokémon", PokemonType.GHOST, PokemonType.FIRE, 1, 34.3, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 520, 60, 55, 90, 145, 90, 80, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.AXEW, 5, false, false, false, "Tusk Pokémon", PokemonType.DRAGON, null, 0.6, 18, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 320, 46, 87, 60, 30, 40, 57, 75, 35, 64, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.FRAXURE, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1, 36, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 410, 66, 117, 70, 40, 50, 67, 60, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HAXORUS, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1.8, 105.5, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 540, 76, 147, 90, 60, 70, 97, 45, 35, 270, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CUBCHOO, 5, false, false, false, "Chill Pokémon", PokemonType.ICE, null, 0.5, 8.5, AbilityId.SNOW_CLOAK, AbilityId.SLUSH_RUSH, AbilityId.RATTLED, 305, 55, 70, 40, 60, 40, 40, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEARTIC, 5, false, false, false, "Freezing Pokémon", PokemonType.ICE, null, 2.6, 260, AbilityId.SNOW_CLOAK, AbilityId.SLUSH_RUSH, AbilityId.SWIFT_SWIM, 505, 95, 130, 80, 70, 80, 50, 60, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRYOGONAL, 5, false, false, false, "Crystallizing Pokémon", PokemonType.ICE, null, 1.1, 148, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 515, 80, 50, 50, 95, 135, 105, 25, 50, 180, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.SHELMET, 5, false, false, false, "Snail Pokémon", PokemonType.BUG, null, 0.4, 7.7, AbilityId.HYDRATION, AbilityId.SHELL_ARMOR, AbilityId.OVERCOAT, 305, 50, 40, 85, 40, 65, 25, 200, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ACCELGOR, 5, false, false, false, "Shell Out Pokémon", PokemonType.BUG, null, 0.8, 25.3, AbilityId.HYDRATION, AbilityId.STICKY_HOLD, AbilityId.UNBURDEN, 495, 80, 70, 40, 100, 60, 145, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.STUNFISK, 5, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.ELECTRIC, 0.7, 11, AbilityId.STATIC, AbilityId.LIMBER, AbilityId.SAND_VEIL, 471, 109, 66, 84, 81, 99, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIENFOO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 0.9, 20, AbilityId.INNER_FOCUS, AbilityId.REGENERATOR, AbilityId.RECKLESS, 350, 45, 85, 50, 55, 50, 65, 180, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MIENSHAO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 1.4, 35.5, AbilityId.INNER_FOCUS, AbilityId.REGENERATOR, AbilityId.RECKLESS, 510, 65, 125, 60, 95, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRUDDIGON, 5, false, false, false, "Cave Pokémon", PokemonType.DRAGON, null, 1.6, 139, AbilityId.ROUGH_SKIN, AbilityId.SHEER_FORCE, AbilityId.MOLD_BREAKER, 485, 77, 120, 90, 60, 90, 48, 45, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOLETT, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1, 92, AbilityId.IRON_FIST, AbilityId.KLUTZ, AbilityId.NO_GUARD, 303, 59, 74, 50, 35, 50, 35, 190, 50, 61, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.GOLURK, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 2.8, 330, AbilityId.IRON_FIST, AbilityId.KLUTZ, AbilityId.NO_GUARD, 483, 89, 124, 80, 55, 80, 55, 90, 50, 169, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.PAWNIARD, 5, false, false, false, "Sharp Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 0.5, 10.2, AbilityId.DEFIANT, AbilityId.INNER_FOCUS, AbilityId.PRESSURE, 340, 45, 85, 70, 40, 40, 60, 120, 35, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BISHARP, 5, false, false, false, "Sword Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 1.6, 70, AbilityId.DEFIANT, AbilityId.INNER_FOCUS, AbilityId.PRESSURE, 490, 65, 125, 100, 60, 70, 70, 45, 35, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BOUFFALANT, 5, false, false, false, "Bash Buffalo Pokémon", PokemonType.NORMAL, null, 1.6, 94.6, AbilityId.RECKLESS, AbilityId.SAP_SIPPER, AbilityId.SOUNDPROOF, 490, 95, 110, 95, 40, 95, 55, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RUFFLET, 5, false, false, false, "Eaglet Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 10.5, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.HUSTLE, 350, 70, 83, 50, 37, 50, 60, 190, 50, 70, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.BRAVIARY, 5, false, false, false, "Valiant Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 41, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.DEFIANT, 510, 100, 123, 75, 57, 75, 80, 60, 50, 179, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.VULLABY, 5, false, false, false, "Diapered Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 9, AbilityId.BIG_PECKS, AbilityId.OVERCOAT, AbilityId.WEAK_ARMOR, 370, 70, 55, 75, 45, 65, 60, 190, 35, 74, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.MANDIBUZZ, 5, false, false, false, "Bone Vulture Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.2, 39.5, AbilityId.BIG_PECKS, AbilityId.OVERCOAT, AbilityId.WEAK_ARMOR, 510, 110, 65, 105, 55, 95, 80, 60, 35, 179, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.HEATMOR, 5, false, false, false, "Anteater Pokémon", PokemonType.FIRE, null, 1.4, 58, AbilityId.GLUTTONY, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, 484, 85, 97, 66, 105, 66, 65, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DURANT, 5, false, false, false, "Iron Ant Pokémon", PokemonType.BUG, PokemonType.STEEL, 0.3, 33, AbilityId.SWARM, AbilityId.HUSTLE, AbilityId.TRUANT, 484, 58, 109, 112, 48, 48, 109, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEINO, 5, false, false, false, "Irate Pokémon", PokemonType.DARK, PokemonType.DRAGON, 0.8, 17.3, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.NONE, 300, 52, 65, 50, 45, 50, 38, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ZWEILOUS, 5, false, false, false, "Hostile Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.4, 50, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.NONE, 420, 72, 85, 70, 65, 70, 58, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HYDREIGON, 5, false, false, false, "Brutal Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.8, 160, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 92, 105, 90, 125, 90, 98, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.LARVESTA, 5, false, false, false, "Torch Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.1, 28.8, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.SWARM, 360, 55, 85, 55, 50, 55, 60, 45, 50, 72, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.VOLCARONA, 5, false, false, false, "Sun Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.6, 46, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.SWARM, 550, 85, 60, 65, 135, 105, 100, 15, 50, 275, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.COBALION, 5, true, false, false, "Iron Will Pokémon", PokemonType.STEEL, PokemonType.FIGHTING, 2.1, 250, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 90, 129, 90, 72, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TERRAKION, 5, true, false, false, "Cavern Pokémon", PokemonType.ROCK, PokemonType.FIGHTING, 1.9, 260, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 129, 90, 72, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.VIRIZION, 5, true, false, false, "Grassland Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 2, 200, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 90, 72, 90, 129, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TORNADUS, 5, true, false, false, "Cyclone Pokémon", PokemonType.FLYING, null, 1.5, 63, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FLYING, null, 1.5, 63, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.FLYING, null, 1.4, 63, AbilityId.REGENERATOR, AbilityId.NONE, AbilityId.REGENERATOR, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290) + ), + new PokemonSpecies(SpeciesId.THUNDURUS, 5, true, false, false, "Bolt Strike Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.ELECTRIC, PokemonType.FLYING, 3, 61, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.VOLT_ABSORB, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290) + ), + new PokemonSpecies(SpeciesId.RESHIRAM, 5, false, true, false, "Vast White Pokémon", PokemonType.DRAGON, PokemonType.FIRE, 3.2, 330, AbilityId.TURBOBLAZE, AbilityId.NONE, AbilityId.NONE, 680, 100, 120, 100, 150, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZEKROM, 5, false, true, false, "Deep Black Pokémon", PokemonType.DRAGON, PokemonType.ELECTRIC, 2.9, 345, AbilityId.TERAVOLT, AbilityId.NONE, AbilityId.NONE, 680, 100, 150, 120, 120, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LANDORUS, 5, true, false, false, "Abundance Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.GROUND, PokemonType.FLYING, 1.3, 68, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300) + ), + new PokemonSpecies(SpeciesId.KYUREM, 5, false, true, false, "Boundary Pokémon", PokemonType.DRAGON, PokemonType.ICE, 3, 325, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.ICE, 3, 325, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true), + new PokemonForm("Black", "black", PokemonType.DRAGON, PokemonType.ICE, 3.3, 325, AbilityId.TERAVOLT, AbilityId.NONE, AbilityId.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350), + new PokemonForm("White", "white", PokemonType.DRAGON, PokemonType.ICE, 3.6, 325, AbilityId.TURBOBLAZE, AbilityId.NONE, AbilityId.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350) + ), + new PokemonSpecies(SpeciesId.KELDEO, 5, false, false, true, "Colt Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true, + new PokemonForm("Ordinary Form", "ordinary", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true), + new PokemonForm("Resolute", "resolute", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290) + ), + new PokemonSpecies(SpeciesId.MELOETTA, 5, false, false, true, "Melody Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Aria Forme", "aria", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true), + new PokemonForm("Pirouette Forme", "pirouette", PokemonType.NORMAL, PokemonType.FIGHTING, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true) + ), + new PokemonSpecies(SpeciesId.GENESECT, 5, false, false, true, "Paleozoic Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true), + new PokemonForm("Shock Drive", "shock", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Burn Drive", "burn", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Chill Drive", "chill", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Douse Drive", "douse", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300) + ), + new PokemonSpecies(SpeciesId.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", PokemonType.GRASS, null, 0.4, 9, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, null, 0.7, 29, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FENNEKIN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.4, 9.4, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BRAIXEN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1, 14.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DELPHOX, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 39, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.TORRENT, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true) + ), + new PokemonSpecies(SpeciesId.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.NONE, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true) + ), + new PokemonSpecies(SpeciesId.GRENINJA, 6, false, false, false, "Ninja Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.BATTLE_BOND, AbilityId.NONE, AbilityId.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true), + new PokemonForm("Ash", "ash", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.BATTLE_BOND, AbilityId.NONE, AbilityId.NONE, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265) + ), + new PokemonSpecies(SpeciesId.BUNNELBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, null, 0.4, 5, AbilityId.PICKUP, AbilityId.CHEEK_POUCH, AbilityId.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DIGGERSBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, PokemonType.GROUND, 1, 42.4, AbilityId.PICKUP, AbilityId.CHEEK_POUCH, AbilityId.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FLETCHLING, 6, false, false, false, "Tiny Robin Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.7, AbilityId.BIG_PECKS, AbilityId.NONE, AbilityId.GALE_WINGS, 278, 45, 50, 43, 40, 38, 62, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLETCHINDER, 6, false, false, false, "Ember Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.7, 16, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.GALE_WINGS, 382, 62, 73, 55, 56, 52, 84, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TALONFLAME, 6, false, false, false, "Scorching Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.2, 24.5, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.GALE_WINGS, 499, 78, 81, 71, 74, 69, 126, 45, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SCATTERBUG, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true) + ), + new PokemonSpecies(SpeciesId.SPEWPA, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.SHED_SKIN, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true) + ), + new PokemonSpecies(SpeciesId.VIVILLON, 6, false, false, false, "Scale Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true) + ), + new PokemonSpecies(SpeciesId.LITLEO, 6, false, false, false, "Lion Cub Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 0.6, 13.5, AbilityId.RIVALRY, AbilityId.UNNERVE, AbilityId.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false), + new PokemonSpecies(SpeciesId.PYROAR, 6, false, false, false, "Royal Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 1.5, 81.5, AbilityId.RIVALRY, AbilityId.UNNERVE, AbilityId.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true), + new PokemonSpecies(SpeciesId.FLABEBE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true) + ), + new PokemonSpecies(SpeciesId.FLOETTE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true) + ), + new PokemonSpecies(SpeciesId.FLORGES, 6, false, false, false, "Garden Pokémon", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true) + ), + new PokemonSpecies(SpeciesId.SKIDDO, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 0.9, 31, AbilityId.SAP_SIPPER, AbilityId.NONE, AbilityId.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOGOAT, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 1.7, 91, AbilityId.SAP_SIPPER, AbilityId.NONE, AbilityId.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PANCHAM, 6, false, false, false, "Playful Pokémon", PokemonType.FIGHTING, null, 0.6, 8, AbilityId.IRON_FIST, AbilityId.MOLD_BREAKER, AbilityId.SCRAPPY, 348, 67, 82, 62, 46, 48, 43, 220, 50, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PANGORO, 6, false, false, false, "Daunting Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 2.1, 136, AbilityId.IRON_FIST, AbilityId.MOLD_BREAKER, AbilityId.SCRAPPY, 495, 95, 124, 78, 69, 71, 58, 65, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FURFROU, 6, false, false, false, "Poodle Pokémon", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Natural Form", "", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Heart Trim", "heart", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Star Trim", "star", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Diamond Trim", "diamond", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Debutante Trim", "debutante", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Matron Trim", "matron", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Dandy Trim", "dandy", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("La Reine Trim", "la-reine", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Kabuki Trim", "kabuki", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Pharaoh Trim", "pharaoh", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true) + ), + new PokemonSpecies(SpeciesId.ESPURR, 6, false, false, false, "Restraint Pokémon", PokemonType.PSYCHIC, null, 0.3, 3.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.OWN_TEMPO, 355, 62, 48, 54, 63, 60, 68, 190, 50, 71, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MEOWSTIC, 6, false, false, false, "Constraint Pokémon", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, "", true), + new PokemonForm("Female", "female", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.COMPETITIVE, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, null, true) + ), + new PokemonSpecies(SpeciesId.HONEDGE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 2, AbilityId.NO_GUARD, AbilityId.NONE, AbilityId.NONE, 325, 45, 80, 100, 35, 37, 28, 180, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DOUBLADE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 4.5, AbilityId.NO_GUARD, AbilityId.NONE, AbilityId.NONE, 448, 59, 110, 150, 45, 49, 35, 90, 50, 157, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AEGISLASH, 6, false, false, false, "Royal Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Shield Forme", "shield", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, false, "", true), + new PokemonForm("Blade Forme", "blade", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 140, 50, 140, 50, 60, 45, 50, 250) + ), + new PokemonSpecies(SpeciesId.SPRITZEE, 6, false, false, false, "Perfume Pokémon", PokemonType.FAIRY, null, 0.2, 0.5, AbilityId.HEALER, AbilityId.NONE, AbilityId.AROMA_VEIL, 341, 78, 52, 60, 63, 65, 23, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AROMATISSE, 6, false, false, false, "Fragrance Pokémon", PokemonType.FAIRY, null, 0.8, 15.5, AbilityId.HEALER, AbilityId.NONE, AbilityId.AROMA_VEIL, 462, 101, 72, 72, 99, 89, 29, 140, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWIRLIX, 6, false, false, false, "Cotton Candy Pokémon", PokemonType.FAIRY, null, 0.4, 3.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.UNBURDEN, 341, 62, 48, 66, 59, 57, 49, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SLURPUFF, 6, false, false, false, "Meringue Pokémon", PokemonType.FAIRY, null, 0.8, 5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.UNBURDEN, 480, 82, 80, 86, 85, 75, 72, 140, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.INKAY, 6, false, false, false, "Revolving Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 0.4, 3.5, AbilityId.CONTRARY, AbilityId.SUCTION_CUPS, AbilityId.INFILTRATOR, 288, 53, 54, 53, 37, 46, 45, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MALAMAR, 6, false, false, false, "Overturning Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 1.5, 47, AbilityId.CONTRARY, AbilityId.SUCTION_CUPS, AbilityId.INFILTRATOR, 482, 86, 92, 88, 68, 75, 73, 80, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BINACLE, 6, false, false, false, "Two-Handed Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 31, AbilityId.TOUGH_CLAWS, AbilityId.SNIPER, AbilityId.PICKPOCKET, 306, 42, 52, 67, 39, 56, 50, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BARBARACLE, 6, false, false, false, "Collective Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 96, AbilityId.TOUGH_CLAWS, AbilityId.SNIPER, AbilityId.PICKPOCKET, 500, 72, 105, 115, 54, 86, 68, 45, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SKRELP, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.WATER, 0.5, 7.3, AbilityId.POISON_POINT, AbilityId.POISON_TOUCH, AbilityId.ADAPTABILITY, 320, 50, 60, 60, 60, 60, 30, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DRAGALGE, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.DRAGON, 1.8, 81.5, AbilityId.POISON_POINT, AbilityId.POISON_TOUCH, AbilityId.ADAPTABILITY, 494, 65, 75, 90, 97, 123, 44, 55, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CLAUNCHER, 6, false, false, false, "Water Gun Pokémon", PokemonType.WATER, null, 0.5, 8.3, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.NONE, 330, 50, 53, 62, 58, 63, 44, 225, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CLAWITZER, 6, false, false, false, "Howitzer Pokémon", PokemonType.WATER, null, 1.3, 35.3, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.NONE, 500, 71, 73, 88, 120, 89, 59, 55, 50, 100, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HELIOPTILE, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 0.5, 6, AbilityId.DRY_SKIN, AbilityId.SAND_VEIL, AbilityId.SOLAR_POWER, 289, 44, 38, 33, 61, 43, 70, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HELIOLISK, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 1, 21, AbilityId.DRY_SKIN, AbilityId.SAND_VEIL, AbilityId.SOLAR_POWER, 481, 62, 55, 52, 109, 94, 109, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TYRUNT, 6, false, false, false, "Royal Heir Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 0.8, 26, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.STURDY, 362, 58, 89, 77, 45, 45, 48, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.TYRANTRUM, 6, false, false, false, "Despot Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 2.5, 270, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.ROCK_HEAD, 521, 82, 121, 119, 69, 59, 71, 45, 50, 182, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.AMAURA, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 1.3, 25.2, AbilityId.REFRIGERATE, AbilityId.NONE, AbilityId.SNOW_WARNING, 362, 77, 59, 50, 67, 63, 46, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.AURORUS, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 2.7, 225, AbilityId.REFRIGERATE, AbilityId.NONE, AbilityId.SNOW_WARNING, 521, 123, 77, 72, 99, 92, 58, 45, 50, 104, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SYLVEON, 6, false, false, false, "Intertwining Pokémon", PokemonType.FAIRY, null, 1, 23.5, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.PIXILATE, 525, 95, 65, 65, 110, 130, 60, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.HAWLUCHA, 6, false, false, false, "Wrestling Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 0.8, 21.5, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.MOLD_BREAKER, 500, 78, 92, 75, 74, 63, 118, 100, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEDENNE, 6, false, false, false, "Antenna Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 0.2, 2.2, AbilityId.CHEEK_POUCH, AbilityId.PICKUP, AbilityId.PLUS, 431, 67, 58, 57, 81, 67, 101, 180, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CARBINK, 6, false, false, false, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.3, 5.7, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.STURDY, 500, 50, 50, 150, 50, 150, 50, 60, 50, 100, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GOOMY, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.3, 2.8, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 300, 45, 50, 35, 55, 75, 40, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SLIGGOO, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.8, 17.5, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 452, 68, 75, 53, 83, 113, 60, 45, 35, 158, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GOODRA, 6, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 2, 150.5, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 600, 90, 100, 70, 110, 150, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLEFKI, 6, false, false, false, "Key Ring Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.2, 3, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.MAGICIAN, 470, 57, 80, 91, 80, 87, 75, 75, 50, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.PHANTUMP, 6, false, false, false, "Stump Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 7, AbilityId.NATURAL_CURE, AbilityId.FRISK, AbilityId.HARVEST, 309, 43, 70, 48, 50, 60, 38, 120, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", PokemonType.GHOST, PokemonType.GRASS, 1.5, 71, AbilityId.NATURAL_CURE, AbilityId.FRISK, AbilityId.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), + new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.3, 3.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), + new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 0.5, 7.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), + new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 0.8, 15, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true) + ), + new PokemonSpecies(SpeciesId.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), + new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.7, 9.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), + new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 1.1, 14, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), + new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 1.7, 39, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true) + ), + new PokemonSpecies(SpeciesId.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", PokemonType.ICE, null, 1, 99.5, AbilityId.OWN_TEMPO, AbilityId.ICE_BODY, AbilityId.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AVALUGG, 6, false, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 2, 505, AbilityId.OWN_TEMPO, AbilityId.ICE_BODY, AbilityId.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NOIBAT, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 0.5, 8, AbilityId.FRISK, AbilityId.INFILTRATOR, AbilityId.TELEPATHY, 245, 40, 30, 35, 45, 40, 55, 190, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NOIVERN, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 1.5, 85, AbilityId.FRISK, AbilityId.INFILTRATOR, AbilityId.TELEPATHY, 535, 85, 70, 80, 97, 80, 123, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.XERNEAS, 6, false, true, false, "Life Pokémon", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Neutral Mode", "neutral", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, false, null, true), + new PokemonForm("Active Mode", "active", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340) + ), + new PokemonSpecies(SpeciesId.YVELTAL, 6, false, true, false, "Destruction Pokémon", PokemonType.DARK, PokemonType.FLYING, 5.8, 203, AbilityId.DARK_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZYGARDE, 6, false, true, false, "Order Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("50% Forme", "50", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), + new PokemonForm("10% Forme", "10", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true), + new PokemonForm("50% Forme Power Construct", "50-pc", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), + new PokemonForm("10% Forme Power Construct", "10-pc", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true), + new PokemonForm("Complete Forme (50% PC)", "complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354), + new PokemonForm("Complete Forme (10% PC)", "10-complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete") + ), + new PokemonSpecies(SpeciesId.DIANCIE, 6, false, false, true, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FAIRY, 1.1, 27.8, AbilityId.MAGIC_BOUNCE, AbilityId.NONE, AbilityId.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300) + ), + new PokemonSpecies(SpeciesId.HOOPA, 6, false, false, true, "Mischief Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hoopa Confined", "", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true), + new PokemonForm("Hoopa Unbound", "unbound", PokemonType.PSYCHIC, PokemonType.DARK, 6.5, 490, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340) + ), + new PokemonSpecies(SpeciesId.VOLCANION, 6, false, false, true, "Steam Pokémon", PokemonType.FIRE, PokemonType.WATER, 1.7, 195, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ROWLET, 7, false, false, false, "Grass Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.3, 1.5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DARTRIX, 7, false, false, false, "Blade Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.7, 16, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 420, 78, 75, 75, 70, 70, 52, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DECIDUEYE, 7, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.6, 36.6, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 530, 78, 107, 75, 100, 100, 70, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.LITTEN, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.4, 4.3, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 320, 45, 65, 40, 60, 40, 70, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TORRACAT, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.7, 25, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 420, 65, 85, 50, 80, 50, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.INCINEROAR, 7, false, false, false, "Heel Pokémon", PokemonType.FIRE, PokemonType.DARK, 1.8, 83, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 530, 95, 115, 90, 80, 90, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.POPPLIO, 7, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 0.4, 7.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 320, 50, 54, 54, 66, 56, 40, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BRIONNE, 7, false, false, false, "Pop Star Pokémon", PokemonType.WATER, null, 0.6, 17.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 420, 60, 69, 69, 91, 81, 50, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PRIMARINA, 7, false, false, false, "Soloist Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.8, 44, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.2, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 14.8, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOUCANNON, 7, false, false, false, "Cannon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 26, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.YUNGOOS, 7, false, false, false, "Loitering Pokémon", PokemonType.NORMAL, null, 0.4, 6, AbilityId.STAKEOUT, AbilityId.STRONG_JAW, AbilityId.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", PokemonType.NORMAL, null, 0.7, 14.2, AbilityId.STAKEOUT, AbilityId.STRONG_JAW, AbilityId.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GRUBBIN, 7, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 4.4, AbilityId.SWARM, AbilityId.NONE, AbilityId.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHARJABUG, 7, false, false, false, "Battery Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.5, 10.5, AbilityId.BATTERY, AbilityId.NONE, AbilityId.NONE, 400, 57, 82, 95, 55, 75, 36, 120, 50, 140, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VIKAVOLT, 7, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 1.5, 45, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 500, 77, 70, 90, 145, 75, 43, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRABRAWLER, 7, false, false, false, "Boxing Pokémon", PokemonType.FIGHTING, null, 0.6, 7, AbilityId.HYPER_CUTTER, AbilityId.IRON_FIST, AbilityId.ANGER_POINT, 338, 47, 82, 57, 42, 47, 63, 225, 70, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRABOMINABLE, 7, false, false, false, "Woolly Crab Pokémon", PokemonType.FIGHTING, PokemonType.ICE, 1.7, 180, AbilityId.HYPER_CUTTER, AbilityId.IRON_FIST, AbilityId.ANGER_POINT, 478, 97, 132, 77, 62, 67, 43, 60, 70, 167, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ORICORIO, 7, false, false, false, "Dancing Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, GrowthRate.MEDIUM_FAST, 25, false, false, + new PokemonForm("Baile Style", "baile", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, "", true), + new PokemonForm("Pom-Pom Style", "pompom", PokemonType.ELECTRIC, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + new PokemonForm("Pau Style", "pau", PokemonType.PSYCHIC, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + new PokemonForm("Sensu Style", "sensu", PokemonType.GHOST, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true) + ), + new PokemonSpecies(SpeciesId.CUTIEFLY, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.1, 0.2, AbilityId.HONEY_GATHER, AbilityId.SHIELD_DUST, AbilityId.SWEET_VEIL, 304, 40, 45, 40, 55, 40, 84, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.2, 0.5, AbilityId.HONEY_GATHER, AbilityId.SHIELD_DUST, AbilityId.SWEET_VEIL, 464, 60, 55, 60, 95, 70, 124, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ROCKRUFF, 7, false, false, false, "Puppy Pokémon", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, null, true), + new PokemonForm("Own Tempo", "own-tempo", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.OWN_TEMPO, AbilityId.NONE, AbilityId.OWN_TEMPO, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, "", true) + ), + new PokemonSpecies(SpeciesId.LYCANROC, 7, false, false, false, "Wolf Pokémon", PokemonType.ROCK, null, 0.8, 25, AbilityId.KEEN_EYE, AbilityId.SAND_RUSH, AbilityId.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Midday Form", "midday", PokemonType.ROCK, null, 0.8, 25, AbilityId.KEEN_EYE, AbilityId.SAND_RUSH, AbilityId.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, "", true), + new PokemonForm("Midnight Form", "midnight", PokemonType.ROCK, null, 1.1, 25, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170, false, null, true), + new PokemonForm("Dusk Form", "dusk", PokemonType.ROCK, null, 0.8, 25, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170, false, null, true) + ), + new PokemonSpecies(SpeciesId.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", PokemonType.WATER, null, 0.2, 0.3, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false, + new PokemonForm("Solo Form", "", PokemonType.WATER, null, 0.2, 0.3, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true), + new PokemonForm("School", "school", PokemonType.WATER, null, 8.2, 78.6, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217) + ), + new PokemonSpecies(SpeciesId.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.4, 8, AbilityId.MERCILESS, AbilityId.LIMBER, AbilityId.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.7, 14.5, AbilityId.MERCILESS, AbilityId.LIMBER, AbilityId.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MUDBRAY, 7, false, false, false, "Donkey Pokémon", PokemonType.GROUND, null, 1, 110, AbilityId.OWN_TEMPO, AbilityId.STAMINA, AbilityId.INNER_FOCUS, 385, 70, 100, 70, 45, 55, 45, 190, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MUDSDALE, 7, false, false, false, "Draft Horse Pokémon", PokemonType.GROUND, null, 2.5, 920, AbilityId.OWN_TEMPO, AbilityId.STAMINA, AbilityId.INNER_FOCUS, 500, 100, 125, 100, 55, 85, 35, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEWPIDER, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 0.3, 4, AbilityId.WATER_BUBBLE, AbilityId.NONE, AbilityId.WATER_ABSORB, 269, 38, 40, 52, 40, 72, 27, 200, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ARAQUANID, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 1.8, 82, AbilityId.WATER_BUBBLE, AbilityId.NONE, AbilityId.WATER_ABSORB, 454, 68, 70, 92, 50, 132, 42, 100, 50, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FOMANTIS, 7, false, false, false, "Sickle Grass Pokémon", PokemonType.GRASS, null, 0.3, 1.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CONTRARY, 250, 40, 55, 35, 50, 35, 35, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LURANTIS, 7, false, false, false, "Bloom Sickle Pokémon", PokemonType.GRASS, null, 0.9, 18.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CONTRARY, 480, 70, 105, 90, 80, 90, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MORELULL, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.2, 1.5, AbilityId.ILLUMINATE, AbilityId.EFFECT_SPORE, AbilityId.RAIN_DISH, 285, 40, 35, 55, 65, 75, 15, 190, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SHIINOTIC, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1, 11.5, AbilityId.ILLUMINATE, AbilityId.EFFECT_SPORE, AbilityId.RAIN_DISH, 405, 60, 45, 80, 90, 100, 30, 75, 50, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SALANDIT, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 0.6, 4.8, AbilityId.CORROSION, AbilityId.NONE, AbilityId.OBLIVIOUS, 320, 48, 44, 40, 71, 40, 77, 120, 50, 64, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SALAZZLE, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 1.2, 22.2, AbilityId.CORROSION, AbilityId.NONE, AbilityId.OBLIVIOUS, 480, 68, 64, 60, 111, 60, 117, 45, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.STUFFUL, 7, false, false, false, "Flailing Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 0.5, 6.8, AbilityId.FLUFFY, AbilityId.KLUTZ, AbilityId.CUTE_CHARM, 340, 70, 75, 50, 45, 50, 50, 140, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEWEAR, 7, false, false, false, "Strong Arm Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 2.1, 135, AbilityId.FLUFFY, AbilityId.KLUTZ, AbilityId.UNNERVE, 500, 120, 125, 80, 55, 60, 60, 70, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BOUNSWEET, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.3, 3.2, AbilityId.LEAF_GUARD, AbilityId.OBLIVIOUS, AbilityId.SWEET_VEIL, 210, 42, 30, 38, 30, 38, 32, 235, 50, 42, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.STEENEE, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.7, 8.2, AbilityId.LEAF_GUARD, AbilityId.OBLIVIOUS, AbilityId.SWEET_VEIL, 290, 52, 40, 48, 40, 48, 62, 120, 50, 102, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.TSAREENA, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 1.2, 21.4, AbilityId.LEAF_GUARD, AbilityId.QUEENLY_MAJESTY, AbilityId.SWEET_VEIL, 510, 72, 120, 98, 50, 98, 72, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.COMFEY, 7, false, false, false, "Posy Picker Pokémon", PokemonType.FAIRY, null, 0.1, 0.3, AbilityId.FLOWER_VEIL, AbilityId.TRIAGE, AbilityId.NATURAL_CURE, 485, 51, 52, 90, 82, 110, 100, 60, 50, 170, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.ORANGURU, 7, false, false, false, "Sage Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 76, AbilityId.INNER_FOCUS, AbilityId.TELEPATHY, AbilityId.SYMBIOSIS, 490, 90, 60, 80, 90, 110, 60, 45, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PASSIMIAN, 7, false, false, false, "Teamwork Pokémon", PokemonType.FIGHTING, null, 2, 82.8, AbilityId.RECEIVER, AbilityId.NONE, AbilityId.DEFIANT, 490, 100, 120, 90, 40, 60, 80, 45, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.WIMPOD, 7, false, false, false, "Turn Tail Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 12, AbilityId.WIMP_OUT, AbilityId.NONE, AbilityId.RUN_AWAY, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", PokemonType.BUG, PokemonType.WATER, 2, 108, AbilityId.EMERGENCY_EXIT, AbilityId.NONE, AbilityId.ANTICIPATION, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.SANDYGAST, 7, false, false, false, "Sand Heap Pokémon", PokemonType.GHOST, PokemonType.GROUND, 0.5, 70, AbilityId.WATER_COMPACTION, AbilityId.NONE, AbilityId.SAND_VEIL, 320, 55, 55, 80, 70, 45, 15, 140, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PALOSSAND, 7, false, false, false, "Sand Castle Pokémon", PokemonType.GHOST, PokemonType.GROUND, 1.3, 250, AbilityId.WATER_COMPACTION, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 85, 75, 110, 100, 75, 35, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PYUKUMUKU, 7, false, false, false, "Sea Cucumber Pokémon", PokemonType.WATER, null, 0.3, 1.2, AbilityId.INNARDS_OUT, AbilityId.NONE, AbilityId.UNAWARE, 410, 55, 60, 130, 30, 130, 5, 60, 50, 144, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TYPE_NULL, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 1.9, 120.5, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.NONE, 534, 95, 95, 95, 95, 95, 59, 3, 0, 107, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SILVALLY, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, GrowthRate.SLOW, null, false, false, + new PokemonForm("Type: Normal", "normal", PokemonType.NORMAL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, false, "", true), + new PokemonForm("Type: Fighting", "fighting", PokemonType.FIGHTING, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Flying", "flying", PokemonType.FLYING, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Poison", "poison", PokemonType.POISON, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ground", "ground", PokemonType.GROUND, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Rock", "rock", PokemonType.ROCK, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Bug", "bug", PokemonType.BUG, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ghost", "ghost", PokemonType.GHOST, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Steel", "steel", PokemonType.STEEL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Fire", "fire", PokemonType.FIRE, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Water", "water", PokemonType.WATER, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Grass", "grass", PokemonType.GRASS, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Electric", "electric", PokemonType.ELECTRIC, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Psychic", "psychic", PokemonType.PSYCHIC, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ice", "ice", PokemonType.ICE, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Dragon", "dragon", PokemonType.DRAGON, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Dark", "dark", PokemonType.DARK, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Fairy", "fairy", PokemonType.FAIRY, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285) + ), + new PokemonSpecies(SpeciesId.MINIOR, 7, false, false, false, "Meteor Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, GrowthRate.MEDIUM_SLOW, null, false, false, + new PokemonForm("Red Meteor Form", "red-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Orange Meteor Form", "orange-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Yellow Meteor Form", "yellow-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Green Meteor Form", "green-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Blue Meteor Form", "blue-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Indigo Meteor Form", "indigo-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Violet Meteor Form", "violet-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), + new PokemonForm("Red Core Form", "red", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Orange Core Form", "orange", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Yellow Core Form", "yellow", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Green Core Form", "green", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Blue Core Form", "blue", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Indigo Core Form", "indigo", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Violet Core Form", "violet", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true) + ), + new PokemonSpecies(SpeciesId.KOMALA, 7, false, false, false, "Drowsing Pokémon", PokemonType.NORMAL, null, 0.4, 19.9, AbilityId.COMATOSE, AbilityId.NONE, AbilityId.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 2, 212, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOGEDEMARU, 7, false, false, false, "Roly-Poly Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 3.3, AbilityId.IRON_BARBS, AbilityId.LIGHTNING_ROD, AbilityId.STURDY, 435, 65, 98, 63, 40, 73, 96, 180, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIMIKYU, 7, false, false, false, "Disguise Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Disguised Form", "disguised", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, false, null, true), + new PokemonForm("Busted Form", "busted", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167) + ), + new PokemonSpecies(SpeciesId.BRUXISH, 7, false, false, false, "Gnash Teeth Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 0.9, 19, AbilityId.DAZZLING, AbilityId.STRONG_JAW, AbilityId.WONDER_SKIN, 475, 68, 105, 70, 70, 70, 92, 80, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DRAMPA, 7, false, false, false, "Placid Pokémon", PokemonType.NORMAL, PokemonType.DRAGON, 3, 185, AbilityId.BERSERK, AbilityId.SAP_SIPPER, AbilityId.CLOUD_NINE, 485, 78, 60, 85, 135, 91, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DHELMISE, 7, false, false, false, "Sea Creeper Pokémon", PokemonType.GHOST, PokemonType.GRASS, 3.9, 210, AbilityId.STEELWORKER, AbilityId.NONE, AbilityId.NONE, 517, 70, 131, 100, 86, 90, 40, 25, 50, 181, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.JANGMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, null, 0.6, 29.7, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 300, 45, 55, 65, 45, 45, 45, 45, 50, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HAKAMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.2, 47, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 420, 55, 75, 90, 65, 70, 65, 45, 50, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KOMMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.6, 78.2, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 600, 75, 110, 125, 100, 105, 85, 45, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TAPU_KOKO, 7, true, false, false, "Land Spirit Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 1.8, 20.5, AbilityId.ELECTRIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 115, 85, 95, 75, 130, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.2, 18.6, AbilityId.PSYCHIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1.9, 45.5, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.3, 21.2, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, AbilityId.UNAWARE, AbilityId.NONE, AbilityId.NONE, 200, 43, 29, 31, 29, 31, 37, 3, 0, 40, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 400, 43, 29, 131, 29, 131, 37, 3, 0, 140, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, AbilityId.FULL_METAL_BODY, AbilityId.NONE, AbilityId.NONE, 680, 137, 137, 107, 113, 89, 97, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, AbilityId.SHADOW_SHIELD, AbilityId.NONE, AbilityId.NONE, 680, 137, 113, 89, 137, 107, 97, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.NIHILEGO, 7, true, false, false, "Parasite Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.2, 55.5, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 2.4, 333.6, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.8, 25, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.XURKITREE, 7, true, false, false, "Glowing Pokémon", PokemonType.ELECTRIC, null, 3.8, 100, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 83, 89, 71, 173, 71, 83, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CELESTEELA, 7, true, false, false, "Launch Pokémon", PokemonType.STEEL, PokemonType.FLYING, 9.2, 999.9, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.3, 0.1, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", PokemonType.DARK, PokemonType.DRAGON, 5.5, 888, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 3, 0, 300, false, null, true), + new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 157, 127, 113, 109, 77, 3, 0, 340), + new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 113, 109, 157, 127, 77, 3, 0, 340), + new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, AbilityId.NEUROFORCE, AbilityId.NONE, AbilityId.NONE, 754, 97, 167, 97, 167, 97, 129, 3, 0, 377) + ), + new PokemonSpecies(SpeciesId.MAGEARNA, 7, false, false, true, "Artificial Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), + new PokemonForm("Original", "original", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true) + ), + new PokemonSpecies(SpeciesId.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true), + new PokemonForm("Zenith", "zenith", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true) + ), + new PokemonSpecies(SpeciesId.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.6, 1.8, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, PokemonType.DRAGON, 3.6, 150, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.STAKATAKA, 7, true, false, false, "Rampart Pokémon", PokemonType.ROCK, PokemonType.STEEL, 5.5, 820, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 61, 131, 211, 53, 101, 13, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.BLACEPHALON, 7, true, false, false, "Fireworks Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.8, 13, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 53, 127, 53, 151, 79, 107, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZERAORA, 7, false, false, true, "Thunderclap Pokémon", PokemonType.ELECTRIC, null, 1.5, 44.5, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.NONE, 600, 88, 112, 75, 102, 80, 143, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MELTAN, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 0.2, 8, AbilityId.MAGNET_PULL, AbilityId.NONE, AbilityId.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 2.5, 800, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, null, 2.5, 800, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, null, 25, 999.9, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 700, 170, 158, 158, 95, 75, 44, 3, 0, 300) + ), + new PokemonSpecies(SpeciesId.GROOKEY, 8, false, false, false, "Chimp Pokémon", PokemonType.GRASS, null, 0.3, 5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.THWACKEY, 8, false, false, false, "Beat Pokémon", PokemonType.GRASS, null, 0.7, 14, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.RILLABOOM, 8, false, false, false, "Drummer Pokémon", PokemonType.GRASS, null, 2.1, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, null, 2.1, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, null, 28, 999.9, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.GRASSY_SURGE, 630, 125, 140, 105, 90, 85, 85, 45, 50, 265) + ), + new PokemonSpecies(SpeciesId.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.3, 4.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.RABOOT, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.6, 9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CINDERACE, 8, false, false, false, "Striker Pokémon", PokemonType.FIRE, null, 1.4, 33, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, null, 1.4, 33, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, null, 27, 999.9, AbilityId.LIBERO, AbilityId.NONE, AbilityId.LIBERO, 630, 100, 141, 80, 95, 80, 134, 45, 50, 265) + ), + new PokemonSpecies(SpeciesId.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.3, 4, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.7, 11.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.INTELEON, 8, false, false, false, "Secret Agent Pokémon", PokemonType.WATER, null, 1.9, 45.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.9, 45.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 40, 999.9, AbilityId.SNIPER, AbilityId.NONE, AbilityId.SNIPER, 630, 95, 117, 67, 147, 67, 137, 45, 50, 265) + ), + new PokemonSpecies(SpeciesId.SKWOVET, 8, false, false, false, "Cheeky Pokémon", PokemonType.NORMAL, null, 0.3, 2.5, AbilityId.CHEEK_POUCH, AbilityId.NONE, AbilityId.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GREEDENT, 8, false, false, false, "Greedy Pokémon", PokemonType.NORMAL, null, 0.6, 6, AbilityId.CHEEK_POUCH, AbilityId.NONE, AbilityId.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ROOKIDEE, 8, false, false, false, "Tiny Bird Pokémon", PokemonType.FLYING, null, 0.2, 1.8, AbilityId.KEEN_EYE, AbilityId.UNNERVE, AbilityId.BIG_PECKS, 245, 38, 47, 35, 33, 35, 57, 255, 50, 49, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, null, 0.8, 16, AbilityId.KEEN_EYE, AbilityId.UNNERVE, AbilityId.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, AbilityId.PRESSURE, AbilityId.UNNERVE, AbilityId.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, AbilityId.PRESSURE, AbilityId.UNNERVE, AbilityId.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FLYING, PokemonType.STEEL, 14, 999.9, AbilityId.MIRROR_ARMOR, AbilityId.MIRROR_ARMOR, AbilityId.MIRROR_ARMOR, 595, 118, 112, 135, 63, 90, 77, 45, 50, 248) + ), + new PokemonSpecies(SpeciesId.BLIPBUG, 8, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 8, AbilityId.SWARM, AbilityId.COMPOUND_EYES, AbilityId.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DOTTLER, 8, false, false, false, "Radome Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 19.5, AbilityId.SWARM, AbilityId.COMPOUND_EYES, AbilityId.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, AbilityId.SWARM, AbilityId.FRISK, AbilityId.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, AbilityId.SWARM, AbilityId.FRISK, AbilityId.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.PSYCHIC, 14, 999.9, AbilityId.TRACE, AbilityId.TRACE, AbilityId.TRACE, 605, 75, 50, 140, 100, 150, 90, 45, 50, 253) + ), + new PokemonSpecies(SpeciesId.NICKIT, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 0.6, 8.9, AbilityId.RUN_AWAY, AbilityId.UNBURDEN, AbilityId.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.THIEVUL, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 1.2, 19.9, AbilityId.RUN_AWAY, AbilityId.UNBURDEN, AbilityId.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.GOSSIFLEUR, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 0.4, 2.2, AbilityId.COTTON_DOWN, AbilityId.REGENERATOR, AbilityId.EFFECT_SPORE, 250, 40, 40, 60, 40, 60, 10, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ELDEGOSS, 8, false, false, false, "Cotton Bloom Pokémon", PokemonType.GRASS, null, 0.5, 2.5, AbilityId.COTTON_DOWN, AbilityId.REGENERATOR, AbilityId.EFFECT_SPORE, 460, 60, 50, 90, 80, 120, 60, 75, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WOOLOO, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 0.6, 6, AbilityId.FLUFFY, AbilityId.RUN_AWAY, AbilityId.BULLETPROOF, 270, 42, 40, 55, 40, 45, 48, 255, 50, 122, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUBWOOL, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 1.3, 43, AbilityId.FLUFFY, AbilityId.STEADFAST, AbilityId.BULLETPROOF, 490, 72, 80, 100, 60, 90, 88, 127, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHEWTLE, 8, false, false, false, "Snapping Pokémon", PokemonType.WATER, null, 0.3, 8.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DREDNAW, 8, false, false, false, "Bite Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ROCK, 24, 999.9, AbilityId.STRONG_JAW, AbilityId.STRONG_JAW, AbilityId.STRONG_JAW, 585, 115, 137, 115, 61, 83, 74, 75, 50, 170) + ), + new PokemonSpecies(SpeciesId.YAMPER, 8, false, false, false, "Puppy Pokémon", PokemonType.ELECTRIC, null, 0.3, 13.5, AbilityId.BALL_FETCH, AbilityId.NONE, AbilityId.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.BOLTUND, 8, false, false, false, "Dog Pokémon", PokemonType.ELECTRIC, null, 1, 34, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.ROLYCOLY, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, null, 0.3, 12, AbilityId.STEAM_ENGINE, AbilityId.HEATPROOF, AbilityId.FLASH_FIRE, 240, 30, 40, 50, 40, 50, 30, 255, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CARKOL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 1.1, 78, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.COALOSSAL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ROCK, PokemonType.FIRE, 42, 999.9, AbilityId.STEAM_ENGINE, AbilityId.STEAM_ENGINE, AbilityId.STEAM_ENGINE, 610, 140, 100, 132, 95, 100, 43, 45, 50, 255) + ), + new PokemonSpecies(SpeciesId.APPLIN, 8, false, false, false, "Apple Core Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.2, 0.5, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, AbilityId.HUSTLE, AbilityId.HUSTLE, AbilityId.HUSTLE, 585, 100, 125, 90, 105, 70, 95, 45, 50, 170) + ), + new PokemonSpecies(SpeciesId.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, AbilityId.THICK_FAT, AbilityId.THICK_FAT, AbilityId.THICK_FAT, 585, 150, 100, 95, 115, 95, 30, 45, 50, 170) + ), + new PokemonSpecies(SpeciesId.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 2.2, 7.6, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 3.8, 65.5, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.8, 65.5, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GROUND, null, 22, 999.9, AbilityId.SAND_SPIT, AbilityId.SAND_SPIT, AbilityId.SAND_SPIT, 610, 102, 137, 140, 70, 80, 81, 120, 50, 179) + ), + new PokemonSpecies(SpeciesId.CRAMORANT, 8, false, false, false, "Gulp Pokémon", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), + new PokemonForm("Gulping Form", "gulping", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), + new PokemonForm("Gorging Form", "gorging", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166) + ), + new PokemonSpecies(SpeciesId.ARROKUDA, 8, false, false, false, "Rush Pokémon", PokemonType.WATER, null, 0.5, 1, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.PROPELLER_TAIL, 280, 41, 63, 40, 40, 30, 66, 255, 50, 56, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.BARRASKEWDA, 8, false, false, false, "Skewer Pokémon", PokemonType.WATER, null, 1.3, 30, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.PROPELLER_TAIL, 490, 61, 123, 60, 60, 50, 136, 60, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TOXEL, 8, false, false, false, "Baby Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 0.4, 11, AbilityId.RATTLED, AbilityId.STATIC, AbilityId.KLUTZ, 242, 40, 38, 35, 54, 35, 40, 75, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TOXTRICITY, 8, false, false, false, "Punk Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.PLUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Amped Form", "amped", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.PLUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), + new PokemonForm("Low-Key Form", "lowkey", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.MINUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, PokemonType.POISON, 24, 999.9, AbilityId.PUNK_ROCK, AbilityId.PUNK_ROCK, AbilityId.PUNK_ROCK, 602, 114, 105, 82, 137, 82, 82, 45, 50, 176) + ), + new PokemonSpecies(SpeciesId.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 0.7, 1, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 3, 120, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.BUG, 3, 120, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.BUG, 75, 999.9, AbilityId.FLASH_FIRE, AbilityId.FLASH_FIRE, AbilityId.FLASH_FIRE, 625, 130, 125, 75, 94, 100, 101, 75, 50, 184) + ), + new PokemonSpecies(SpeciesId.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", PokemonType.FIGHTING, null, 0.6, 4, AbilityId.LIMBER, AbilityId.NONE, AbilityId.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", PokemonType.FIGHTING, null, 1.6, 39, AbilityId.LIMBER, AbilityId.NONE, AbilityId.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SINISTEA, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true), + new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true) + ), + new PokemonSpecies(SpeciesId.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true), + new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true) + ), + new PokemonSpecies(SpeciesId.HATENNA, 8, false, false, false, "Calm Pokémon", PokemonType.PSYCHIC, null, 0.4, 3.4, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.HATTREM, 8, false, false, false, "Serene Pokémon", PokemonType.PSYCHIC, null, 0.6, 4.8, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.HATTERENE, 8, false, false, false, "Silent Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.PSYCHIC, PokemonType.FAIRY, 26, 999.9, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 610, 87, 100, 110, 146, 118, 49, 45, 50, 255) + ), + new PokemonSpecies(SpeciesId.IMPIDIMP, 8, false, false, false, "Wily Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.4, 5.5, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.MORGREM, 8, false, false, false, "Devious Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.8, 12.5, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.DARK, PokemonType.FAIRY, 32, 999.9, AbilityId.PRANKSTER, AbilityId.PRANKSTER, AbilityId.PRANKSTER, 610, 130, 138, 75, 110, 92, 65, 45, 50, 255) + ), + new PokemonSpecies(SpeciesId.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", PokemonType.DARK, PokemonType.NORMAL, 1.6, 46, AbilityId.RECKLESS, AbilityId.GUTS, AbilityId.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PERRSERKER, 8, false, false, false, "Viking Pokémon", PokemonType.STEEL, null, 0.8, 28, AbilityId.BATTLE_ARMOR, AbilityId.TOUGH_CLAWS, AbilityId.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CURSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 1, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.PERISH_BODY, 510, 60, 95, 50, 145, 130, 30, 30, 50, 179, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.SIRFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 117, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.SCRAPPY, 507, 62, 135, 95, 68, 82, 65, 45, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MR_RIME, 8, false, false, false, "Comedian Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.5, 58.2, AbilityId.TANGLED_FEET, AbilityId.SCREEN_CLEANER, AbilityId.ICE_BODY, 520, 80, 85, 75, 110, 100, 70, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RUNERIGUS, 8, false, false, false, "Grudge Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1.6, 66.6, AbilityId.WANDERING_SPIRIT, AbilityId.NONE, AbilityId.NONE, 483, 58, 95, 145, 50, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MILCERY, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.2, 0.3, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 270, 45, 40, 40, 50, 61, 34, 200, 50, 54, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ALCREMIE, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, GrowthRate.MEDIUM_FAST, 0, false, true, + new PokemonForm("Vanilla Cream", "vanilla-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, "", true), + new PokemonForm("Ruby Cream", "ruby-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Matcha Cream", "matcha-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Mint Cream", "mint-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Lemon Cream", "lemon-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Salted Cream", "salted-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Ruby Swirl", "ruby-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Caramel Swirl", "caramel-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Rainbow Swirl", "rainbow-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FAIRY, null, 30, 999.9, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 595, 105, 70, 85, 130, 141, 64, 100, 50, 173) + ), + new PokemonSpecies(SpeciesId.FALINKS, 8, false, false, false, "Formation Pokémon", PokemonType.FIGHTING, null, 3, 62, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", PokemonType.ELECTRIC, null, 0.3, 1, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SNOM, 8, false, false, false, "Worm Pokémon", PokemonType.ICE, PokemonType.BUG, 0.3, 3.8, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.ICE_SCALES, 185, 30, 25, 35, 45, 30, 20, 190, 50, 37, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FROSMOTH, 8, false, false, false, "Frost Moth Pokémon", PokemonType.ICE, PokemonType.BUG, 1.3, 42, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.ICE_SCALES, 475, 70, 65, 60, 125, 90, 65, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.STONJOURNER, 8, false, false, false, "Big Rock Pokémon", PokemonType.ROCK, null, 2.5, 520, AbilityId.POWER_SPOT, AbilityId.NONE, AbilityId.NONE, 470, 100, 125, 135, 20, 20, 70, 60, 50, 165, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EISCUE, 8, false, false, false, "Penguin Pokémon", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, GrowthRate.SLOW, 50, false, false, + new PokemonForm("Ice Face", "", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, false, null, true), + new PokemonForm("No Ice", "no-ice", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 70, 65, 50, 130, 60, 50, 165) + ), + new PokemonSpecies(SpeciesId.INDEEDEE, 8, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, GrowthRate.FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, false, "", true), + new PokemonForm("Female", "female", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.OWN_TEMPO, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 70, 55, 65, 95, 105, 85, 30, 140, 166, false, null, true) + ), + new PokemonSpecies(SpeciesId.MORPEKO, 8, false, false, false, "Two-Sided Pokémon", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Full Belly Mode", "full-belly", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, false, "", true), + new PokemonForm("Hangry Mode", "hangry", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153) + ), + new PokemonSpecies(SpeciesId.CUFANT, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 1.2, 100, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 3, 650, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, null, 3, 650, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.GROUND, 23, 999.9, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.MOLD_BREAKER, 600, 177, 155, 79, 90, 79, 20, 90, 50, 175) + ), + new PokemonSpecies(SpeciesId.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 1.8, 190, AbilityId.VOLT_ABSORB, AbilityId.HUSTLE, AbilityId.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.ICE, 2.3, 150, AbilityId.VOLT_ABSORB, AbilityId.STATIC, AbilityId.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DRACOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.DRAGON, 2.3, 215, AbilityId.WATER_ABSORB, AbilityId.STRONG_JAW, AbilityId.SAND_RUSH, 505, 90, 90, 100, 70, 80, 75, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.ICE, 2, 175, AbilityId.WATER_ABSORB, AbilityId.ICE_BODY, AbilityId.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DURALUDON, 8, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, AbilityId.LIGHT_METAL, AbilityId.HEAVY_METAL, AbilityId.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, AbilityId.LIGHT_METAL, AbilityId.HEAVY_METAL, AbilityId.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.DRAGON, 43, 999.9, AbilityId.LIGHTNING_ROD, AbilityId.LIGHTNING_ROD, AbilityId.LIGHTNING_ROD, 635, 100, 110, 120, 175, 60, 70, 45, 50, 187) + ), + new PokemonSpecies(SpeciesId.DREEPY, 8, false, false, false, "Lingering Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 0.5, 2, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 1.4, 11, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 3, 50, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ZACIAN, 8, false, true, false, "Warrior Pokémon", PokemonType.FAIRY, null, 2.8, 110, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.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", PokemonType.FAIRY, null, 2.8, 110, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), + new PokemonForm("Crowned", "crowned", PokemonType.FAIRY, PokemonType.STEEL, 2.8, 355, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360) + ), + new PokemonSpecies(SpeciesId.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", PokemonType.FIGHTING, null, 2.9, 210, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.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", PokemonType.FIGHTING, null, 2.9, 210, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), + new PokemonForm("Crowned", "crowned", PokemonType.FIGHTING, PokemonType.STEEL, 2.9, 785, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360) + ), + new PokemonSpecies(SpeciesId.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", PokemonType.POISON, PokemonType.DRAGON, 20, 950, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.POISON, PokemonType.DRAGON, 20, 950, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true), + new PokemonForm("E-Max", "eternamax", PokemonType.POISON, PokemonType.DRAGON, 100, 999.9, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345) + ), + new PokemonSpecies(SpeciesId.KUBFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, null, 0.6, 12, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.NONE, 385, 60, 90, 60, 53, 50, 72, 3, 50, 77, GrowthRate.SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.URSHIFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Single Strike Style", "single-strike", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), + new PokemonForm("Rapid Strike Style", "rapid-strike", PokemonType.FIGHTING, PokemonType.WATER, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), + new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, PokemonType.FIGHTING, PokemonType.DARK, 29, 999.9, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), + new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, PokemonType.FIGHTING, PokemonType.WATER, 26, 999.9, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275) + ), + new PokemonSpecies(SpeciesId.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), + new PokemonForm("Dada", "dada", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true) + ), + new PokemonSpecies(SpeciesId.REGIELEKI, 8, true, false, false, "Electron Pokémon", PokemonType.ELECTRIC, null, 1.2, 145, AbilityId.TRANSISTOR, AbilityId.NONE, AbilityId.NONE, 580, 80, 100, 50, 100, 50, 200, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.REGIDRAGO, 8, true, false, false, "Dragon Orb Pokémon", PokemonType.DRAGON, null, 2.1, 200, AbilityId.DRAGONS_MAW, AbilityId.NONE, AbilityId.NONE, 580, 200, 100, 50, 100, 50, 80, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GLASTRIER, 8, true, false, false, "Wild Horse Pokémon", PokemonType.ICE, null, 2.2, 800, AbilityId.CHILLING_NEIGH, AbilityId.NONE, AbilityId.NONE, 580, 100, 145, 130, 65, 110, 30, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", PokemonType.GHOST, null, 2, 44.5, AbilityId.GRIM_NEIGH, AbilityId.NONE, AbilityId.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CALYREX, 8, false, true, false, "King Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, AbilityId.UNNERVE, AbilityId.NONE, AbilityId.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, AbilityId.UNNERVE, AbilityId.NONE, AbilityId.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true), + new PokemonForm("Ice", "ice", PokemonType.PSYCHIC, PokemonType.ICE, 2.4, 809.1, AbilityId.AS_ONE_GLASTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), + new PokemonForm("Shadow", "shadow", PokemonType.PSYCHIC, PokemonType.GHOST, 2.4, 53.6, AbilityId.AS_ONE_SPECTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340) + ), + new PokemonSpecies(SpeciesId.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 45, 50, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, AbilityId.SWARM, AbilityId.SHEER_FORCE, AbilityId.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 15, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, AbilityId.GUTS, AbilityId.BULLETPROOF, AbilityId.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 20, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 45, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 45, 50, 265, false, "", true), + new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 45, 50, 265, false, null, true) + ), + new PokemonSpecies(SpeciesId.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, AbilityId.PRESSURE, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 20, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 45, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116) + ), + new PokemonSpecies(SpeciesId.SPRIGATITO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.4, 4.1, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 310, 40, 61, 54, 45, 45, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FLORAGATO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.9, 12.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 410, 61, 80, 63, 60, 63, 83, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MEOWSCARADA, 9, false, false, false, "Magician Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.5, 31.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 530, 76, 110, 70, 81, 70, 123, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FUECOCO, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 0.4, 9.8, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 310, 67, 45, 59, 63, 40, 36, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CROCALOR, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 1, 30.7, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 411, 81, 55, 78, 90, 58, 49, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SKELEDIRGE, 9, false, false, false, "Singer Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 326.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 530, 104, 75, 100, 110, 75, 66, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUAXLY, 9, false, false, false, "Duckling Pokémon", PokemonType.WATER, null, 0.5, 6.1, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 310, 55, 65, 45, 50, 45, 50, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUAXWELL, 9, false, false, false, "Practicing Pokémon", PokemonType.WATER, null, 1.2, 21.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 410, 70, 85, 65, 65, 60, 65, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUAQUAVAL, 9, false, false, false, "Dancer Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.8, 61.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 530, 85, 120, 80, 85, 75, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.LECHONK, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 0.5, 10.2, AbilityId.AROMA_VEIL, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 254, 54, 45, 40, 35, 45, 35, 255, 50, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.OINKOLOGNE, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 1, 120, AbilityId.LINGERING_AROMA, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.NORMAL, null, 1, 120, AbilityId.LINGERING_AROMA, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, false, "", true), + new PokemonForm("Female", "female", PokemonType.NORMAL, null, 1, 120, AbilityId.AROMA_VEIL, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 115, 90, 70, 59, 90, 65, 100, 50, 171, false, null, true) + ), + new PokemonSpecies(SpeciesId.TAROUNTULA, 9, false, false, false, "String Ball Pokémon", PokemonType.BUG, null, 0.3, 4, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.STAKEOUT, 210, 35, 41, 45, 29, 40, 20, 255, 50, 42, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.SPIDOPS, 9, false, false, false, "Trap Pokémon", PokemonType.BUG, null, 1, 16.5, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.STAKEOUT, 404, 60, 79, 92, 52, 86, 35, 120, 50, 141, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.NYMBLE, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, null, 0.2, 1, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 210, 33, 46, 40, 21, 25, 45, 190, 20, 42, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LOKIX, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, PokemonType.DARK, 1, 17.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 450, 71, 102, 78, 52, 55, 92, 30, 0, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PAWMI, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2.5, AbilityId.STATIC, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 240, 45, 50, 20, 40, 25, 60, 190, 50, 48, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PAWMO, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.4, 6.5, AbilityId.VOLT_ABSORB, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 350, 60, 75, 40, 50, 40, 85, 80, 50, 123, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PAWMOT, 9, false, false, false, "Hands-On Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.9, 41, AbilityId.VOLT_ABSORB, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 490, 70, 115, 70, 70, 60, 105, 45, 50, 245, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TANDEMAUS, 9, false, false, false, "Couple Pokémon", PokemonType.NORMAL, null, 0.3, 1.8, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.OWN_TEMPO, 305, 50, 50, 45, 40, 45, 75, 150, 50, 61, GrowthRate.FAST, null, false), + new PokemonSpecies(SpeciesId.MAUSHOLD, 9, false, false, false, "Family Pokémon", PokemonType.NORMAL, null, 0.3, 2.3, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165, GrowthRate.FAST, null, false, false, + new PokemonForm("Family of Four", "four", PokemonType.NORMAL, null, 0.3, 2.8, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), + new PokemonForm("Family of Three", "three", PokemonType.NORMAL, null, 0.3, 2.3, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165) + ), + new PokemonSpecies(SpeciesId.FIDOUGH, 9, false, false, false, "Puppy Pokémon", PokemonType.FAIRY, null, 0.3, 10.9, AbilityId.OWN_TEMPO, AbilityId.NONE, AbilityId.KLUTZ, 312, 37, 55, 70, 30, 55, 65, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DACHSBUN, 9, false, false, false, "Dog Pokémon", PokemonType.FAIRY, null, 0.5, 14.9, AbilityId.WELL_BAKED_BODY, AbilityId.NONE, AbilityId.AROMA_VEIL, 477, 57, 80, 115, 50, 80, 95, 90, 50, 167, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SMOLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.3, 6.5, AbilityId.EARLY_BIRD, AbilityId.NONE, AbilityId.HARVEST, 260, 41, 35, 45, 58, 51, 30, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DOLLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.6, 11.9, AbilityId.EARLY_BIRD, AbilityId.NONE, AbilityId.HARVEST, 354, 52, 53, 60, 78, 78, 33, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ARBOLIVA, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 1.4, 48.2, AbilityId.SEED_SOWER, AbilityId.NONE, AbilityId.HARVEST, 510, 78, 69, 90, 125, 109, 39, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SQUAWKABILLY, 9, false, false, false, "Parrot Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, GrowthRate.ERRATIC, 50, false, false, + new PokemonForm("Green Plumage", "green-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("Blue Plumage", "blue-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("Yellow Plumage", "yellow-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("White Plumage", "white-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true) + ), + new PokemonSpecies(SpeciesId.NACLI, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.4, 16, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 280, 55, 55, 75, 35, 35, 25, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.NACLSTACK, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.6, 105, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 355, 60, 60, 100, 35, 65, 35, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GARGANACL, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 2.3, 240, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 500, 100, 100, 130, 45, 90, 35, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CHARCADET, 9, false, false, false, "Fire Child Pokémon", PokemonType.FIRE, null, 0.6, 10.5, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.FLAME_BODY, 255, 40, 50, 40, 50, 40, 35, 90, 50, 51, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ARMAROUGE, 9, false, false, false, "Fire Warrior Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 85, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.WEAK_ARMOR, 525, 85, 60, 100, 125, 80, 75, 25, 20, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CERULEDGE, 9, false, false, false, "Fire Blades Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 62, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.WEAK_ARMOR, 525, 75, 125, 80, 60, 100, 85, 25, 20, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TADBULB, 9, false, false, false, "EleTadpole Pokémon", PokemonType.ELECTRIC, null, 0.3, 0.4, AbilityId.OWN_TEMPO, AbilityId.STATIC, AbilityId.DAMP, 272, 61, 31, 41, 59, 35, 45, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BELLIBOLT, 9, false, false, false, "EleFrog Pokémon", PokemonType.ELECTRIC, null, 1.2, 113, AbilityId.ELECTROMORPHOSIS, AbilityId.STATIC, AbilityId.DAMP, 495, 109, 64, 91, 103, 83, 45, 50, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WATTREL, 9, false, false, false, "Storm Petrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 3.6, AbilityId.WIND_POWER, AbilityId.VOLT_ABSORB, AbilityId.COMPETITIVE, 280, 40, 40, 35, 55, 40, 70, 180, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KILOWATTREL, 9, false, false, false, "Frigatebird Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.4, 38.6, AbilityId.WIND_POWER, AbilityId.VOLT_ABSORB, AbilityId.COMPETITIVE, 490, 70, 70, 60, 105, 60, 125, 90, 50, 172, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MASCHIFF, 9, false, false, false, "Rascal Pokémon", PokemonType.DARK, null, 0.5, 16, AbilityId.INTIMIDATE, AbilityId.RUN_AWAY, AbilityId.STAKEOUT, 340, 60, 78, 60, 40, 51, 51, 150, 50, 68, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MABOSSTIFF, 9, false, false, false, "Boss Pokémon", PokemonType.DARK, null, 1.1, 61, AbilityId.INTIMIDATE, AbilityId.GUARD_DOG, AbilityId.STAKEOUT, 505, 80, 120, 90, 60, 70, 85, 75, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHROODLE, 9, false, false, false, "Toxic Mouse Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.2, 0.7, AbilityId.UNBURDEN, AbilityId.PICKPOCKET, AbilityId.PRANKSTER, 290, 40, 65, 35, 40, 35, 75, 190, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GRAFAIAI, 9, false, false, false, "Toxic Monkey Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.7, 27.2, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, AbilityId.PRANKSTER, 485, 63, 95, 65, 80, 72, 110, 90, 50, 170, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.BRAMBLIN, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.6, 0.6, AbilityId.WIND_RIDER, AbilityId.NONE, AbilityId.INFILTRATOR, 275, 40, 65, 30, 45, 35, 60, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BRAMBLEGHAST, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.2, 6, AbilityId.WIND_RIDER, AbilityId.NONE, AbilityId.INFILTRATOR, 480, 55, 115, 70, 80, 70, 90, 45, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOEDSCOOL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 0.9, 33, AbilityId.MYCELIUM_MIGHT, AbilityId.NONE, AbilityId.NONE, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TOEDSCRUEL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 1.9, 58, AbilityId.MYCELIUM_MIGHT, AbilityId.NONE, AbilityId.NONE, 515, 80, 70, 65, 80, 120, 100, 90, 50, 180, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLAWF, 9, false, false, false, "Ambush Pokémon", PokemonType.ROCK, null, 1.3, 79, AbilityId.ANGER_SHELL, AbilityId.SHELL_ARMOR, AbilityId.REGENERATOR, 450, 70, 100, 115, 35, 55, 75, 120, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CAPSAKID, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, null, 0.3, 3, AbilityId.CHLOROPHYLL, AbilityId.INSOMNIA, AbilityId.KLUTZ, 304, 50, 62, 40, 62, 40, 50, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCOVILLAIN, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, PokemonType.FIRE, 0.9, 15, AbilityId.CHLOROPHYLL, AbilityId.INSOMNIA, AbilityId.MOODY, 486, 65, 108, 65, 108, 65, 75, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RELLOR, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, null, 0.2, 1, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.SHED_SKIN, 270, 41, 50, 60, 31, 58, 30, 190, 50, 54, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.RABSCA, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.3, 3.5, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.TELEPATHY, 470, 75, 50, 85, 115, 100, 45, 45, 50, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.FLITTLE, 9, false, false, false, "Frill Pokémon", PokemonType.PSYCHIC, null, 0.2, 1.5, AbilityId.ANTICIPATION, AbilityId.FRISK, AbilityId.SPEED_BOOST, 255, 30, 35, 30, 55, 30, 75, 120, 50, 51, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ESPATHRA, 9, false, false, false, "Ostrich Pokémon", PokemonType.PSYCHIC, null, 1.9, 90, AbilityId.OPPORTUNIST, AbilityId.FRISK, AbilityId.SPEED_BOOST, 481, 95, 60, 60, 101, 60, 105, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TINKATINK, 9, false, false, false, "Metalsmith Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.4, 8.9, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 297, 50, 45, 45, 35, 64, 58, 190, 50, 59, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.TINKATUFF, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 59.1, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 380, 65, 55, 55, 45, 82, 78, 90, 50, 133, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.TINKATON, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 112.8, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 506, 85, 75, 77, 70, 105, 94, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.WIGLETT, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 1.8, AbilityId.GOOEY, AbilityId.RATTLED, AbilityId.SAND_VEIL, 245, 10, 55, 25, 35, 25, 95, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WUGTRIO, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 5.4, AbilityId.GOOEY, AbilityId.RATTLED, AbilityId.SAND_VEIL, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BOMBIRDIER, 9, false, false, false, "Item Drop Pokémon", PokemonType.FLYING, PokemonType.DARK, 1.5, 42.9, AbilityId.BIG_PECKS, AbilityId.KEEN_EYE, AbilityId.ROCKY_PAYLOAD, 485, 70, 103, 85, 60, 85, 82, 25, 50, 243, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.FINIZEN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, AbilityId.WATER_VEIL, AbilityId.NONE, AbilityId.NONE, 315, 70, 45, 40, 45, 40, 75, 200, 50, 63, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PALAFIN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.NONE, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Zero Form", "zero", PokemonType.WATER, null, 1.3, 60.2, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.ZERO_TO_HERO, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, false, null, true), + new PokemonForm("Hero Form", "hero", PokemonType.WATER, null, 1.8, 97.4, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.ZERO_TO_HERO, 650, 100, 160, 97, 106, 87, 100, 45, 50, 160) + ), + new PokemonSpecies(SpeciesId.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1, 35, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true), + new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, AbilityId.STAMINA, AbilityId.NONE, AbilityId.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true) + ), + new PokemonSpecies(SpeciesId.CYCLIZAR, 9, false, false, false, "Mount Pokémon", PokemonType.DRAGON, PokemonType.NORMAL, 1.6, 63, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", PokemonType.STEEL, null, 2.5, 310, AbilityId.EARTH_EATER, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLIMMET, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 0.7, 8, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.CORROSION, 350, 48, 35, 42, 105, 60, 60, 70, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLIMMORA, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.5, 45, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.CORROSION, 525, 83, 55, 90, 130, 81, 86, 25, 50, 184, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GREAVARD, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 0.6, 35, AbilityId.PICKUP, AbilityId.NONE, AbilityId.FLUFFY, 290, 50, 61, 60, 30, 55, 34, 120, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HOUNDSTONE, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 2, 15, AbilityId.SAND_RUSH, AbilityId.NONE, AbilityId.FLUFFY, 488, 72, 101, 100, 50, 97, 68, 60, 50, 171, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLAMIGO, 9, false, false, false, "Synchronize Pokémon", PokemonType.FLYING, PokemonType.FIGHTING, 1.6, 37, AbilityId.SCRAPPY, AbilityId.TANGLED_FEET, AbilityId.COSTAR, 500, 82, 115, 74, 75, 64, 90, 100, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CETODDLE, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 1.2, 45, AbilityId.THICK_FAT, AbilityId.SNOW_CLOAK, AbilityId.SHEER_FORCE, 334, 108, 68, 45, 30, 40, 43, 150, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CETITAN, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 4.5, 700, AbilityId.THICK_FAT, AbilityId.SLUSH_RUSH, AbilityId.SHEER_FORCE, 521, 170, 113, 65, 45, 55, 73, 50, 50, 182, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VELUZA, 9, false, false, false, "Jettison Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2.5, 90, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHARPNESS, 478, 90, 102, 73, 78, 65, 70, 100, 50, 167, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.DONDOZO, 9, false, false, false, "Big Catfish Pokémon", PokemonType.WATER, null, 12, 220, AbilityId.UNAWARE, AbilityId.OBLIVIOUS, AbilityId.WATER_VEIL, 530, 150, 100, 115, 65, 65, 35, 25, 50, 265, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TATSUGIRI, 9, false, false, false, "Mimicry Pokémon", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, GrowthRate.MEDIUM_SLOW, 50, false, false, + new PokemonForm("Curly Form", "curly", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + new PokemonForm("Droopy Form", "droopy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + new PokemonForm("Stretchy Form", "stretchy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true) + ), + new PokemonSpecies(SpeciesId.ANNIHILAPE, 9, false, false, false, "Rage Monkey Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 1.2, 56, AbilityId.VITAL_SPIRIT, AbilityId.INNER_FOCUS, AbilityId.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CLODSIRE, 9, false, false, false, "Spiny Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.8, 223, AbilityId.POISON_POINT, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 430, 130, 75, 60, 45, 100, 20, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FARIGIRAF, 9, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 3.2, 160, AbilityId.CUD_CHEW, AbilityId.ARMOR_TAIL, AbilityId.SAP_SIPPER, 520, 120, 90, 70, 110, 70, 60, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUDUNSPARCE, 9, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 3.6, 39.2, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Two-Segment Form", "two-segment", PokemonType.NORMAL, null, 3.6, 39.2, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, false, ""), + new PokemonForm("Three-Segment Form", "three-segment", PokemonType.NORMAL, null, 4.5, 47.4, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182) + ), + new PokemonSpecies(SpeciesId.KINGAMBIT, 9, false, false, false, "Big Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 2, 120, AbilityId.DEFIANT, AbilityId.SUPREME_OVERLORD, AbilityId.PRESSURE, 550, 100, 135, 120, 60, 85, 50, 25, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GREAT_TUSK, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.FIGHTING, 2.2, 320, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 115, 131, 131, 53, 53, 87, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SCREAM_TAIL, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.PSYCHIC, 1.2, 8, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 115, 65, 99, 65, 115, 111, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.BRUTE_BONNET, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.2, 21, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 111, 127, 99, 79, 99, 55, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.FLUTTER_MANE, 9, false, false, false, "Paradox Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 1.4, 4, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 55, 55, 55, 135, 135, 135, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SLITHER_WING, 9, false, false, false, "Paradox Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 3.2, 92, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 85, 135, 79, 85, 105, 81, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SANDY_SHOCKS, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.GROUND, 2.3, 60, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 85, 81, 97, 121, 85, 101, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_TREADS, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.9, 240, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 90, 112, 120, 72, 70, 106, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_BUNDLE, 9, false, false, false, "Paradox Pokémon", PokemonType.ICE, PokemonType.WATER, 0.6, 11, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 56, 80, 114, 124, 60, 136, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_HANDS, 9, false, false, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.ELECTRIC, 1.8, 380.7, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 154, 140, 108, 50, 68, 50, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_JUGULIS, 9, false, false, false, "Paradox Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.3, 111, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 94, 80, 86, 122, 80, 108, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_MOTH, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.POISON, 1.2, 36, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 80, 70, 60, 140, 110, 110, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_THORNS, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.6, 303, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 100, 134, 110, 70, 84, 72, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.FRIGIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.5, 17, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 320, 65, 75, 45, 35, 45, 55, 45, 50, 64, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ARCTIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.8, 30, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 423, 90, 95, 66, 45, 65, 62, 25, 50, 148, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.BAXCALIBUR, 9, false, false, false, "Ice Dragon Pokémon", PokemonType.DRAGON, PokemonType.ICE, 2.1, 210, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 600, 115, 145, 92, 75, 86, 87, 10, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GIMMIGHOUL, 9, false, false, false, "Coin Chest Pokémon", PokemonType.GHOST, null, 0.3, 5, AbilityId.RATTLED, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, GrowthRate.SLOW, null, false, false, + new PokemonForm("Chest Form", "chest", PokemonType.GHOST, null, 0.3, 5, AbilityId.RATTLED, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, false, "", true), + new PokemonForm("Roaming Form", "roaming", PokemonType.GHOST, null, 0.1, 1, AbilityId.RUN_AWAY, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 25, 75, 45, 80, 45, 50, 60, false, null, true) + ), + new PokemonSpecies(SpeciesId.GHOLDENGO, 9, false, false, false, "Coin Entity Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.2, 30, AbilityId.GOOD_AS_GOLD, AbilityId.NONE, AbilityId.NONE, 550, 87, 60, 95, 133, 91, 84, 45, 50, 275, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.WO_CHIEN, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.5, 74.2, AbilityId.TABLETS_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 85, 85, 100, 95, 135, 70, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CHIEN_PAO, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.ICE, 1.9, 152.2, AbilityId.SWORD_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 80, 120, 80, 90, 65, 135, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TING_LU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GROUND, 2.7, 699.7, AbilityId.VESSEL_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 155, 110, 125, 55, 80, 45, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CHI_YU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.4, 4.9, AbilityId.BEADS_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 55, 80, 80, 135, 120, 100, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ROARING_MOON, 9, false, false, false, "Paradox Pokémon", PokemonType.DRAGON, PokemonType.DARK, 2, 380, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 105, 139, 71, 55, 101, 119, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_VALIANT, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.FIGHTING, 1.4, 35, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 74, 130, 90, 120, 60, 116, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.KORAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, AbilityId.ORICHALCUM_PULSE, AbilityId.NONE, AbilityId.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Apex Build", "apex-build", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, AbilityId.ORICHALCUM_PULSE, AbilityId.NONE, AbilityId.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, false, null, true) + ), + new PokemonSpecies(SpeciesId.MIRAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, AbilityId.HADRON_ENGINE, AbilityId.NONE, AbilityId.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Ultimate Mode", "ultimate-mode", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, AbilityId.HADRON_ENGINE, AbilityId.NONE, AbilityId.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, false, null, true) + ), + new PokemonSpecies(SpeciesId.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", PokemonType.WATER, PokemonType.DRAGON, 3.5, 280, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt + new PokemonSpecies(SpeciesId.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 1.5, 125, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown + new PokemonSpecies(SpeciesId.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 4.4, AbilityId.SUPERSWEET_SYRUP, AbilityId.GLUTTONY, AbilityId.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, + new PokemonForm("Counterfeit Form", "counterfeit", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), + new PokemonForm("Artisan Form", "artisan", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "counterfeit", true) + ), + new PokemonSpecies(SpeciesId.SINISTCHA, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, GrowthRate.SLOW, null, false, false, + new PokemonForm("Unremarkable Form", "unremarkable", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, false, null, true), + new PokemonForm("Masterpiece Form", "masterpiece", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, false, "unremarkable", true) + ), + new PokemonSpecies(SpeciesId.OKIDOGI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.8, 92.2, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.GUARD_DOG, 555, 88, 128, 115, 58, 86, 80, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.MUNKIDORI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1, 12.2, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.FRISK, 555, 88, 75, 66, 130, 90, 106, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.FEZANDIPITI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FAIRY, 1.4, 30.1, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.TECHNICIAN, 555, 88, 91, 82, 70, 125, 99, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.OGERPON, 9, true, false, false, "Mask Pokémon", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, GrowthRate.SLOW, 0, false, false, + new PokemonForm("Teal Mask", "teal-mask", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, false, null, true), + new PokemonForm("Wellspring Mask", "wellspring-mask", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Hearthflame Mask", "hearthflame-mask", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Cornerstone Mask", "cornerstone-mask", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Teal Mask Terastallized", "teal-mask-tera", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.EMBODY_ASPECT_TEAL, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Wellspring Mask Terastallized", "wellspring-mask-tera", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, AbilityId.EMBODY_ASPECT_WELLSPRING, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Hearthflame Mask Terastallized", "hearthflame-mask-tera", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, AbilityId.EMBODY_ASPECT_HEARTHFLAME, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Cornerstone Mask Terastallized", "cornerstone-mask-tera", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, AbilityId.EMBODY_ASPECT_CORNERSTONE, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275) + ), + new PokemonSpecies(SpeciesId.ARCHALUDON, 9, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 2, 60, AbilityId.STAMINA, AbilityId.STURDY, AbilityId.STALWART, 600, 90, 105, 130, 125, 65, 85, 10, 50, 300, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HYDRAPPLE, 9, false, false, false, "Apple Hydra Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 1.8, 93, AbilityId.SUPERSWEET_SYRUP, AbilityId.REGENERATOR, AbilityId.STICKY_HOLD, 540, 106, 80, 110, 120, 80, 44, 10, 50, 270, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.GOUGING_FIRE, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 3.5, 590, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 105, 115, 121, 65, 93, 91, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.RAGING_BOLT, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 5.2, 480, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 125, 73, 91, 137, 89, 75, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_BOULDER, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.5, 162.5, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 120, 80, 68, 108, 124, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 156, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TERAPAGOS, 9, false, true, false, "Tera Pokémon", PokemonType.NORMAL, null, 0.2, 6.5, AbilityId.TERA_SHIFT, AbilityId.NONE, AbilityId.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false, + new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.2, 6.5, AbilityId.TERA_SHIFT, AbilityId.NONE, AbilityId.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true), + new PokemonForm("Terastal Form", "terastal", PokemonType.NORMAL, null, 0.3, 16, AbilityId.TERA_SHELL, AbilityId.NONE, AbilityId.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120), + new PokemonForm("Stellar Form", "stellar", PokemonType.NORMAL, null, 1.7, 77, AbilityId.TERAFORM_ZERO, AbilityId.NONE, AbilityId.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140) + ), + new PokemonSpecies(SpeciesId.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", PokemonType.POISON, PokemonType.GHOST, 0.3, 0.3, AbilityId.POISON_PUPPETEER, AbilityId.NONE, AbilityId.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.3, 3.8, AbilityId.GLUTTONY, AbilityId.HUSTLE, AbilityId.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_RATICATE, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.7, 25.5, AbilityId.GLUTTONY, AbilityId.HUSTLE, AbilityId.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_RAICHU, 7, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.PSYCHIC, 0.7, 21, AbilityId.SURGE_SURFER, AbilityId.NONE, AbilityId.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_SANDSHREW, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 0.7, 40, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_SANDSLASH, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 1.2, 55, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_VULPIX, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, null, 0.6, 9.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.ALOLA_NINETALES, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, PokemonType.FAIRY, 1.1, 19.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SNOW_WARNING, 505, 73, 67, 75, 81, 100, 109, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.ALOLA_DIGLETT, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.2, 1, AbilityId.SAND_VEIL, AbilityId.TANGLING_HAIR, AbilityId.SAND_FORCE, 265, 10, 55, 30, 35, 45, 90, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_DUGTRIO, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 66.6, AbilityId.SAND_VEIL, AbilityId.TANGLING_HAIR, AbilityId.SAND_FORCE, 425, 35, 100, 60, 50, 70, 110, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_MEOWTH, 7, false, false, false, "Scratch Cat Pokémon", PokemonType.DARK, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.RATTLED, 290, 40, 35, 35, 50, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_PERSIAN, 7, false, false, false, "Classy Cat Pokémon", PokemonType.DARK, null, 1.1, 33, AbilityId.FUR_COAT, AbilityId.TECHNICIAN, AbilityId.RATTLED, 440, 65, 60, 60, 75, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GEODUDE, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 0.4, 20.3, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GRAVELER, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1, 110, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GOLEM, 7, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.7, 316, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GRIMER, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 0.7, 42, AbilityId.POISON_TOUCH, AbilityId.GLUTTONY, AbilityId.POWER_OF_ALCHEMY, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 52, AbilityId.POISON_TOUCH, AbilityId.GLUTTONY, AbilityId.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 10.9, 415.6, AbilityId.FRISK, AbilityId.NONE, AbilityId.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1, 34, AbilityId.CURSED_BODY, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.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(SpeciesId.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", PokemonType.STEEL, null, 0.4, 7.5, AbilityId.PICKUP, AbilityId.TOUGH_CLAWS, AbilityId.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, null, 0.8, 24, AbilityId.RUN_AWAY, AbilityId.PASTEL_VEIL, AbilityId.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.7, 80, AbilityId.RUN_AWAY, AbilityId.PASTEL_VEIL, AbilityId.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_SLOWPOKE, 8, false, false, false, "Dopey Pokémon", PokemonType.PSYCHIC, null, 1.2, 36, AbilityId.GLUTTONY, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_SLOWBRO, 8, false, false, false, "Hermit Crab Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.6, 70.5, AbilityId.QUICK_DRAW, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 100, 95, 100, 70, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_FARFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 42, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.SCRAPPY, 377, 52, 95, 55, 58, 62, 55, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_WEEZING, 8, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, PokemonType.FAIRY, 3, 16, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.MISTY_SURGE, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_MR_MIME, 8, false, false, false, "Barrier Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 56.8, AbilityId.VITAL_SPIRIT, AbilityId.SCREEN_CLEANER, AbilityId.ICE_BODY, 460, 50, 65, 65, 90, 90, 100, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_ARTICUNO, 8, true, false, false, "Freeze Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 50.9, AbilityId.COMPETITIVE, AbilityId.NONE, AbilityId.NONE, 580, 90, 85, 85, 125, 100, 95, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GALAR_ZAPDOS, 8, true, false, false, "Electric Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 1.6, 58.2, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 580, 90, 125, 90, 85, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GALAR_MOLTRES, 8, true, false, false, "Flame Pokémon", PokemonType.DARK, PokemonType.FLYING, 2, 66, AbilityId.BERSERK, AbilityId.NONE, AbilityId.NONE, 580, 90, 85, 90, 100, 125, 90, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GALAR_SLOWKING, 8, false, false, false, "Royal Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.8, 79.5, AbilityId.CURIOUS_MEDICINE, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 65, 80, 110, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_CORSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 0.6, 0.5, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 410, 60, 55, 100, 65, 100, 30, 60, 50, 144, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.GALAR_ZIGZAGOON, 8, false, false, false, "Tiny Raccoon Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.4, 17.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_LINOONE, 8, false, false, false, "Rushing Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.5, 32.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_DARUMAKA, 8, false, false, false, "Zen Charm Pokémon", PokemonType.ICE, null, 0.7, 40, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GALAR_DARMANITAN, 8, false, false, false, "Blazing Pokémon", PokemonType.ICE, null, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Standard Mode", "", PokemonType.ICE, null, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), + new PokemonForm("Zen Mode", "zen", PokemonType.ICE, PokemonType.FIRE, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 540, 105, 160, 55, 30, 55, 135, 60, 50, 189) + ), + new PokemonSpecies(SpeciesId.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", PokemonType.GROUND, PokemonType.GHOST, 0.5, 1.5, AbilityId.WANDERING_SPIRIT, AbilityId.NONE, AbilityId.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 20.5, AbilityId.MIMICRY, AbilityId.NONE, AbilityId.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 22.7, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", PokemonType.FIRE, PokemonType.ROCK, 2, 168, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 0.5, 13, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 1.2, 81, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 69.8, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", PokemonType.DARK, PokemonType.POISON, 0.5, 3.9, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 0.9, 27, AbilityId.INNER_FOCUS, AbilityId.KEEN_EYE, AbilityId.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 58.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 19.2, AbilityId.CHLOROPHYLL, AbilityId.HUSTLE, AbilityId.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 0.7, 12.5, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 1.6, 83, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 43.4, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 0.7, 68.5, AbilityId.SAP_SIPPER, AbilityId.SHELL_ARMOR, AbilityId.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.7, 334.1, AbilityId.SAP_SIPPER, AbilityId.SHELL_ARMOR, AbilityId.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", PokemonType.ICE, PokemonType.ROCK, 1.4, 262.4, AbilityId.STRONG_JAW, AbilityId.ICE_BODY, AbilityId.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 37, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PALDEA_TAUROS, 9, false, false, false, "Wild Bull Pokémon", PokemonType.FIGHTING, null, 1.4, 115, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, GrowthRate.SLOW, 100, false, false, + new PokemonForm("Combat Breed", "combat", PokemonType.FIGHTING, null, 1.4, 115, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, "", true), + new PokemonForm("Blaze Breed", "blaze", PokemonType.FIGHTING, PokemonType.FIRE, 1.4, 85, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), + new PokemonForm("Aqua Breed", "aqua", PokemonType.FIGHTING, PokemonType.WATER, 1.4, 110, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true) + ), + new PokemonSpecies(SpeciesId.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 0.4, 11, AbilityId.POISON_POINT, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.7, 333, AbilityId.MINDS_EYE, AbilityId.NONE, AbilityId.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false) + ); +} diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index d26f0700f7f..55a3cc4e916 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -3,12 +3,13 @@ import { allMoves } from "#data/data-lists"; import type { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { EncounterAnim } from "#enums/encounter-anims"; -import { MoveFlags } from "#enums/MoveFlags"; import { AnimBlendType, AnimFocus, AnimFrameTarget, ChargeAnim, CommonAnim } from "#enums/move-anims-common"; +import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; import type { Pokemon } from "#field/pokemon"; -import { animationFileName, coerceArray, getFrameMs, isNullOrUndefined, type nil } from "#utils/common"; +import { coerceArray, getFrameMs, isNullOrUndefined, type nil } from "#utils/common"; import { getEnumKeys, getEnumValues } from "#utils/enums"; +import { toKebabCase } from "#utils/strings"; import Phaser from "phaser"; export class AnimConfig { @@ -412,7 +413,7 @@ export function initCommonAnims(): Promise { const commonAnimId = commonAnimIds[ca]; commonAnimFetches.push( globalScene - .cachedFetch(`./battle-anims/common-${commonAnimNames[ca].toLowerCase().replace(/_/g, "-")}.json`) + .cachedFetch(`./battle-anims/common-${toKebabCase(commonAnimNames[ca])}.json`) .then(response => response.json()) .then(cas => commonAnims.set(commonAnimId, new AnimConfig(cas))), ); @@ -450,7 +451,7 @@ export function initMoveAnim(move: MoveId): Promise { const fetchAnimAndResolve = (move: MoveId) => { globalScene - .cachedFetch(`./battle-anims/${animationFileName(move)}.json`) + .cachedFetch(`./battle-anims/${toKebabCase(MoveId[move])}.json`) .then(response => { const contentType = response.headers.get("content-type"); if (!response.ok || contentType?.indexOf("application/json") === -1) { @@ -506,7 +507,7 @@ function useDefaultAnim(move: MoveId, defaultMoveAnim: MoveId) { * @remarks use {@linkcode useDefaultAnim} to use a default animation */ function logMissingMoveAnim(move: MoveId, ...optionalParams: any[]) { - const moveName = animationFileName(move); + const moveName = toKebabCase(MoveId[move]); console.warn(`Could not load animation file for move '${moveName}'`, ...optionalParams); } @@ -524,7 +525,7 @@ export async function initEncounterAnims(encounterAnim: EncounterAnim | Encounte } encounterAnimFetches.push( globalScene - .cachedFetch(`./battle-anims/encounter-${encounterAnimNames[anim].toLowerCase().replace(/_/g, "-")}.json`) + .cachedFetch(`./battle-anims/encounter-${toKebabCase(encounterAnimNames[anim])}.json`) .then(response => response.json()) .then(cas => encounterAnims.set(anim, new AnimConfig(cas))), ); @@ -548,7 +549,7 @@ export function initMoveChargeAnim(chargeAnim: ChargeAnim): Promise { } else { chargeAnims.set(chargeAnim, null); globalScene - .cachedFetch(`./battle-anims/${ChargeAnim[chargeAnim].toLowerCase().replace(/_/g, "-")}.json`) + .cachedFetch(`./battle-anims/${toKebabCase(ChargeAnim[chargeAnim])}.json`) .then(response => response.json()) .then(ca => { if (Array.isArray(ca)) { @@ -1405,7 +1406,9 @@ export async function populateAnims() { const chargeAnimIds = getEnumValues(ChargeAnim); const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/; const moveNameToId = {}; + // Exclude MoveId.NONE; for (const move of getEnumValues(MoveId).slice(1)) { + // KARATE_CHOP => KARATECHOP const moveName = MoveId[move].toUpperCase().replace(/_/g, ""); moveNameToId[moveName] = move; } diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 060b17e889b..455beec6901 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -8,12 +8,13 @@ import { SpeciesFormChangeAbilityTrigger } from "#data/form-change-triggers"; import { getStatusEffectHealText } from "#data/status-effect"; import { TerrainType } from "#data/terrain"; import { AbilityId } from "#enums/ability-id"; +import type { BattlerIndex } from "#enums/battler-index"; import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { HitResult } from "#enums/hit-result"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveFlags } from "#enums/MoveFlags"; import { ChargeAnim, CommonAnim } from "#enums/move-anims-common"; +import { MoveCategory } from "#enums/move-category"; +import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; @@ -31,41 +32,126 @@ import type { MoveEffectPhase } from "#phases/move-effect-phase"; import type { MovePhase } from "#phases/move-phase"; import type { StatStageChangeCallback } from "#phases/stat-stage-change-phase"; import i18next from "#plugins/i18n"; +import type { + AbilityBattlerTagType, + BattlerTagTypeData, + ContactSetStatusProtectedTagType, + ContactStatStageChangeProtectedTagType, + CritStageBoostTagType, + DamageProtectedTagType, + EndureTagType, + HighestStatBoostTagType, + MoveRestrictionBattlerTagType, + ProtectionBattlerTagType, + RemovedTypeTagType, + SemiInvulnerableTagType, + TrappingBattlerTagType, + TypeBoostTagType, +} from "#types/battler-tags"; +import type { Mutable } from "#types/type-helpers"; import { BooleanHolder, coerceArray, getFrameMs, isNullOrUndefined, NumberHolder, toDmgValue } from "#utils/common"; +/** + * @module + * BattlerTags are used to represent semi-persistent effects that can be attached to a Pokemon. + * Note that before serialization, a new tag object is created, and then `loadTag` is called on the + * tag with the object that was serialized. + * + * This means it is straightforward to avoid serializing fields. + * Fields that are not set in the constructor and not set in `loadTag` will thus not be serialized. + * + * Any battler tag that can persist across sessions must extend SerializableBattlerTag in its class definition signature. + * Only tags that persist across waves (meaning their effect can last >1 turn) should be considered + * serializable. + * + * Serializable battler tags have strict requirements for their fields. + * Properties that are not necessary to reconstruct the tag must not be serialized. This can be avoided + * by using a private property. If access to the property is needed outside of the class, then + * a getter (and potentially, a setter) should be used instead. + * + * If a property that is intended to be private must be serialized, then it should instead + * be declared as a public readonly propety. Then, in the `loadTag` method (or any method inside the class that needs to adjust the property) + * use `(this as Mutable).propertyName = value;` + * These rules ensure that Typescript is aware of the shape of the serialized version of the class. + * + * If any new serializable fields *are* added, then the class *must* override the + * `loadTag` method to set the new fields. Its signature *must* match the example below: + * ``` + * class ExampleTag extends SerializableBattlerTag { + * // Example, if we add 2 new fields that should be serialized: + * public a: string; + * public b: number; + * // Then we must also define a loadTag method with one of the following signatures + * public override loadTag(source: BaseBattlerTag & Pick(source: BaseBattlerTag & Pick): void; + * } + * ``` + * Notes + * - If the class has any subclasses, then the second form of `loadTag` *must* be used. + */ + +/** Interface containing the serializable fields of BattlerTag */ +interface BaseBattlerTag { + /** The tag's remaining duration */ + turnCount: number; + /** The {@linkcode MoveId} that created this tag, or `undefined` if not set by a move */ + sourceMove?: MoveId; + /** The {@linkcode Pokemon.id | PID} of the Pokemon that added this tag, or `undefined` if not set by a pokemon */ + sourceId?: number; +} + /** * A {@linkcode BattlerTag} represents a semi-persistent effect that can be attached to a {@linkcode Pokemon}. * Tags can trigger various effects throughout a turn, and are cleared on switching out * or through their respective {@linkcode BattlerTag.lapse | lapse} methods. */ -export class BattlerTag { - public tagType: BattlerTagType; - public lapseTypes: BattlerTagLapseType[]; +export class BattlerTag implements BaseBattlerTag { + public readonly tagType: BattlerTagType; + public turnCount: number; - public sourceMove: MoveId; + public sourceMove?: MoveId; public sourceId?: number; - public isBatonPassable: boolean; + + //#region non-serializable fields + // Fields that should never be serialized, as they must not change after instantiation + #isBatonPassable = false; + public get isBatonPassable(): boolean { + return this.#isBatonPassable; + } + + #lapseTypes: readonly [BattlerTagLapseType, ...BattlerTagLapseType[]]; + public get lapseTypes(): readonly BattlerTagLapseType[] { + return this.#lapseTypes; + } + //#endregion non-serializable fields constructor( tagType: BattlerTagType, - lapseType: BattlerTagLapseType | BattlerTagLapseType[], + lapseType: BattlerTagLapseType | [BattlerTagLapseType, ...BattlerTagLapseType[]], turnCount: number, sourceMove?: MoveId, sourceId?: number, isBatonPassable = false, ) { this.tagType = tagType; - this.lapseTypes = coerceArray(lapseType); + this.#lapseTypes = coerceArray(lapseType); this.turnCount = turnCount; - this.sourceMove = sourceMove!; // TODO: is this bang correct? + // We intentionally don't want to set source move to `MoveId.NONE` here, so a raw boolean comparison is OK. + if (sourceMove) { + this.sourceMove = sourceMove; + } this.sourceId = sourceId; - this.isBatonPassable = isBatonPassable; + this.#isBatonPassable = isBatonPassable; } canAdd(_pokemon: Pokemon): boolean { return true; } + /** + * Apply effects that occur when the tag is added to a {@linkcode Pokemon} + * @param _pokemon - The {@linkcode Pokemon} the tag was added to + */ onAdd(_pokemon: Pokemon): void {} onRemove(_pokemon: Pokemon): void {} @@ -99,9 +185,9 @@ export class BattlerTag { /** * Load the data for a given {@linkcode BattlerTag} or JSON representation thereof. * Should be inherited from by any battler tag with custom attributes. - * @param source The battler tag to load + * @param source - An object containing the fields needed to reconstruct this tag. */ - loadTag(source: BattlerTag | any): void { + public loadTag(source: BaseBattlerTag & Pick): void { this.turnCount = source.turnCount; this.sourceMove = source.sourceMove; this.sourceId = source.sourceId; @@ -116,12 +202,22 @@ export class BattlerTag { } } -export interface WeatherBattlerTag { - weatherTypes: WeatherType[]; +export class SerializableBattlerTag extends BattlerTag { + /** Nonexistent, dummy field to allow typescript to distinguish this class from `BattlerTag` */ + private declare __SerializableBattlerTag: never; } -export interface TerrainBattlerTag { - terrainTypes: TerrainType[]; +/** + * Interface for a generic serializable battler tag, i.e. one that does not have a + * dedicated subclass. + * + * @remarks + * Used to ensure type safety when serializing battler tags, + * allowing typescript to properly infer the type of the tag. + * @see BattlerTagTypeMap + */ +interface GenericSerializableBattlerTag extends SerializableBattlerTag { + tagType: T; } /** @@ -132,8 +228,8 @@ export interface TerrainBattlerTag { * match a condition. A restricted move gets cancelled before it is used. * Players and enemies should not be allowed to select restricted moves. */ -export abstract class MoveRestrictionBattlerTag extends BattlerTag { - /** @override */ +export abstract class MoveRestrictionBattlerTag extends SerializableBattlerTag { + public declare readonly tagType: MoveRestrictionBattlerTagType; override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { // Cancel the affected pokemon's selected move @@ -154,32 +250,32 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { } /** - * Gets whether this tag is restricting a move. + * Determine whether a move's usage is restricted by this tag * - * @param move - {@linkcode MoveId} ID to check restriction for. + * @param move - The {@linkcode MoveId} being checked * @param user - The {@linkcode Pokemon} involved * @returns `true` if the move is restricted by this tag, otherwise `false`. */ public abstract isMoveRestricted(move: MoveId, user?: Pokemon): boolean; /** - * Checks if this tag is restricting a move based on a user's decisions during the target selection phase + * Check if this tag is restricting a move based on a user's decisions during the target selection phase * - * @param {MoveId} _move {@linkcode MoveId} move ID to check restriction for - * @param {Pokemon} _user {@linkcode Pokemon} the user of the above move - * @param {Pokemon} _target {@linkcode Pokemon} the target of the above move - * @returns {boolean} `false` unless overridden by the child tag + * @param _move - {@linkcode MoveId} to check restriction for + * @param _user - The user of the move + * @param _target - The pokemon targeted by the move + * @returns Whether the move is restricted by this tag */ isMoveTargetRestricted(_move: MoveId, _user: Pokemon, _target: Pokemon): boolean { return false; } /** - * Gets the text to display when the player attempts to select a move that is restricted by this tag. + * Get the text to display when the player attempts to select a move that is restricted by this tag. * - * @param {Pokemon} pokemon {@linkcode Pokemon} for which the player is attempting to select the restricted move - * @param {MoveId} move {@linkcode MoveId} ID of the move that is having its selection denied - * @returns {string} text to display when the player attempts to select the restricted move + * @param pokemon - The pokemon for which the player is attempting to select the restricted move + * @param move - The {@linkcode MoveId | ID} of the Move that is having its selection denied + * @returns The text to display when the player attempts to select the restricted move */ abstract selectionDeniedText(pokemon: Pokemon, move: MoveId): string; @@ -188,9 +284,9 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { * Because restriction effects also prevent selection of the move, this situation can only arise if a * pokemon first selects a move, then gets outsped by a pokemon using a move that restricts the selected move. * - * @param {Pokemon} _pokemon {@linkcode Pokemon} attempting to use the restricted move - * @param {MoveId} _move {@linkcode MoveId} ID of the move being interrupted - * @returns {string} text to display when the move is interrupted + * @param _pokemon - The pokemon attempting to use the restricted move + * @param _move - The {@linkcode MoveId | ID} of the move being interrupted + * @returns The text to display when the move is interrupted */ interruptedText(_pokemon: Pokemon, _move: MoveId): string { return ""; @@ -200,9 +296,10 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { /** * Tag representing the "Throat Chop" effect. Pokemon with this tag cannot use sound-based moves. * @see {@link https://bulbapedia.bulbagarden.net/wiki/Throat_Chop_(move) | Throat Chop} - * @extends MoveRestrictionBattlerTag + * @sealed */ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.THROAT_CHOPPED; constructor() { super( BattlerTagType.THROAT_CHOPPED, @@ -213,10 +310,9 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { } /** - * Checks if a {@linkcode MoveId | move} is restricted by Throat Chop. - * @override - * @param {MoveId} move the {@linkcode MoveId | move} to check for sound-based restriction - * @returns true if the move is sound-based + * Check if a move is restricted by Throat Chop. + * @param move - The {@linkcode MoveId | ID } of the move to check for sound-based restriction + * @returns Whether the move is sound based */ override isMoveRestricted(move: MoveId): boolean { return allMoves[move].hasFlag(MoveFlags.SOUND_BASED); @@ -224,10 +320,9 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { /** * Shows a message when the player attempts to select a move that is restricted by Throat Chop. - * @override - * @param {Pokemon} _pokemon the {@linkcode Pokemon} that is attempting to select the restricted move - * @param {MoveId} move the {@linkcode MoveId | move} that is being restricted - * @returns the message to display when the player attempts to select the restricted move + * @param _pokemon - The {@linkcode Pokemon} that is attempting to select the restricted move + * @param move - The {@linkcode MoveId | move} that is being restricted + * @returns The message to display when the player attempts to select the restricted move */ override selectionDeniedText(_pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveCannotBeSelected", { @@ -237,10 +332,9 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { /** * Shows a message when a move is interrupted by Throat Chop. - * @override - * @param {Pokemon} pokemon the interrupted {@linkcode Pokemon} - * @param {MoveId} _move the {@linkcode MoveId | move} that was interrupted - * @returns the message to display when the move is interrupted + * @param pokemon - The interrupted {@linkcode Pokemon} + * @param _move - The {@linkcode MoveId | ID } of the move that was interrupted + * @returns The message to display when the move is interrupted */ override interruptedText(pokemon: Pokemon, _move: MoveId): string { return i18next.t("battle:throatChopInterruptedMove", { @@ -252,10 +346,13 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { /** * Tag representing the "disabling" effect performed by {@linkcode MoveId.DISABLE} and {@linkcode AbilityId.CURSED_BODY}. * When the tag is added, the last-used move of the tag holder is set as the disabled move. + * + * @sealed */ export class DisabledTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.DISABLED; /** The move being disabled. Gets set when {@linkcode onAdd} is called for this tag. */ - private moveId: MoveId = MoveId.NONE; + public readonly moveId: MoveId = MoveId.NONE; constructor(sourceId: number) { super( @@ -267,14 +364,11 @@ export class DisabledTag extends MoveRestrictionBattlerTag { ); } - /** @override */ override isMoveRestricted(move: MoveId): boolean { return move === this.moveId; } /** - * @override - * * Attempt to disable the target's last move by setting this tag's {@linkcode moveId} * and showing a message. */ @@ -287,7 +381,7 @@ export class DisabledTag extends MoveRestrictionBattlerTag { } super.onAdd(pokemon); - this.moveId = move.move; + (this as Mutable).moveId = move.move; globalScene.phaseManager.queueMessage( i18next.t("battlerTags:disabledOnAdd", { @@ -297,7 +391,6 @@ export class DisabledTag extends MoveRestrictionBattlerTag { ); } - /** @override */ override onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); @@ -309,16 +402,14 @@ export class DisabledTag extends MoveRestrictionBattlerTag { ); } - /** @override */ override selectionDeniedText(_pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabled", { moveName: allMoves[move].name }); } /** - * @override - * @param {Pokemon} pokemon {@linkcode Pokemon} attempting to use the restricted move - * @param {MoveId} move {@linkcode MoveId} ID of the move being interrupted - * @returns {string} text to display when the move is interrupted + * @param pokemon - {@linkcode Pokemon} attempting to use the restricted move + * @param move - {@linkcode MoveId | ID} of the move being interrupted + * @returns The text to display when the move is interrupted */ override interruptedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:disableInterruptedMove", { @@ -327,19 +418,21 @@ export class DisabledTag extends MoveRestrictionBattlerTag { }); } - /** @override */ - override loadTag(source: BattlerTag | any): void { + public override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); - this.moveId = source.moveId; + (this as Mutable).moveId = source.moveId; } } /** * Tag used by Gorilla Tactics to restrict the user to using only one move. + * + * @sealed */ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { - private moveId = MoveId.NONE; - + public override readonly tagType = BattlerTagType.GORILLA_TACTICS; + /** ID of the move that the user is locked into using*/ + public readonly moveId: MoveId = MoveId.NONE; constructor() { super(BattlerTagType.GORILLA_TACTICS, BattlerTagLapseType.CUSTOM, 0); } @@ -367,18 +460,17 @@ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { super.onAdd(pokemon); // Bang is justified as tag is not added if prior move doesn't exist - this.moveId = pokemon.getLastNonVirtualMove()!.move; + (this as Mutable).moveId = pokemon.getLastNonVirtualMove()!.move; pokemon.setStat(Stat.ATK, pokemon.getStat(Stat.ATK, false) * 1.5, false); } /** * Loads the Gorilla Tactics Battler Tag along with its unique class variable moveId - * @override - * @param source Gorilla Tactics' {@linkcode BattlerTag} information + * @param source - Object containing the fields needed to reconstruct this tag. */ - public override loadTag(source: BattlerTag | any): void { + public override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); - this.moveId = source.moveId; + (this as Mutable).moveId = source.moveId; } /** @@ -397,7 +489,8 @@ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { /** * BattlerTag that represents the "recharge" effects of moves like Hyper Beam. */ -export class RechargingTag extends BattlerTag { +export class RechargingTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.RECHARGING; constructor(sourceMove: MoveId) { super(BattlerTagType.RECHARGING, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 2, sourceMove); } @@ -430,6 +523,8 @@ export class RechargingTag extends BattlerTag { * @see {@link https://bulbapedia.bulbagarden.net/wiki/Beak_Blast_(move) | Beak Blast} */ export class BeakBlastChargingTag extends BattlerTag { + public override readonly tagType = BattlerTagType.BEAK_BLAST_CHARGING; + public declare readonly sourceMove: MoveId.BEAK_BLAST; constructor() { super( BattlerTagType.BEAK_BLAST_CHARGING, @@ -454,8 +549,8 @@ export class BeakBlastChargingTag extends BattlerTag { /** * Inflicts `BURN` status on attackers that make contact, and causes this tag * to be removed after the source makes a move (or the turn ends, whichever comes first) - * @param pokemon {@linkcode Pokemon} the owner of this tag - * @param lapseType {@linkcode BattlerTagLapseType} the type of functionality invoked in battle + * @param pokemon - The owner of this tag + * @param lapseType - The type of functionality invoked in battle * @returns `true` if invoked with the `AFTER_HIT` lapse type */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -482,6 +577,7 @@ export class BeakBlastChargingTag extends BattlerTag { * @see {@link https://bulbapedia.bulbagarden.net/wiki/Shell_Trap_(move) | Shell Trap} */ export class ShellTrapTag extends BattlerTag { + public override readonly tagType = BattlerTagType.SHELL_TRAP; public activated = false; constructor() { @@ -498,8 +594,8 @@ export class ShellTrapTag extends BattlerTag { /** * "Activates" the shell trap, causing the tag owner to move next. - * @param pokemon {@linkcode Pokemon} the owner of this tag - * @param lapseType {@linkcode BattlerTagLapseType} the type of functionality invoked in battle + * @param pokemon - The owner of this tag + * @param lapseType - The type of functionality invoked in battle * @returns `true` if invoked with the `AFTER_HIT` lapse type */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -529,7 +625,8 @@ export class ShellTrapTag extends BattlerTag { } } -export class TrappedTag extends BattlerTag { +export class TrappedTag extends SerializableBattlerTag { + public declare readonly tagType: TrappingBattlerTagType; constructor( tagType: BattlerTagType, lapseType: BattlerTagLapseType, @@ -546,13 +643,13 @@ export class TrappedTag extends BattlerTag { console.warn(`Failed to get source Pokemon for TrappedTag canAdd; id: ${this.sourceId}`); return false; } - - const move = allMoves[this.sourceMove]; + if (this.sourceMove && allMoves[this.sourceMove]?.hitsSubstitute(source, pokemon)) { + return false; + } const isGhost = pokemon.isOfType(PokemonType.GHOST); const isTrapped = pokemon.getTag(TrappedTag); - const hasSubstitute = move.hitsSubstitute(source, pokemon); - return !isTrapped && !isGhost && !hasSubstitute; + return !isTrapped && !isGhost; } onAdd(pokemon: Pokemon): void { @@ -591,9 +688,9 @@ export class TrappedTag extends BattlerTag { * BattlerTag implementing No Retreat's trapping effect. * This is treated separately from other trapping effects to prevent * Ghost-type Pokemon from being able to reuse the move. - * @extends TrappedTag */ class NoRetreatTag extends TrappedTag { + public override readonly tagType = BattlerTagType.NO_RETREAT; constructor(sourceId: number) { super(BattlerTagType.NO_RETREAT, BattlerTagLapseType.CUSTOM, 0, MoveId.NO_RETREAT, sourceId); } @@ -608,6 +705,7 @@ class NoRetreatTag extends TrappedTag { * BattlerTag that represents the {@link https://bulbapedia.bulbagarden.net/wiki/Flinch Flinch} status condition */ export class FlinchedTag extends BattlerTag { + public override readonly tagType = BattlerTagType.FLINCHED; constructor(sourceMove: MoveId) { super(BattlerTagType.FLINCHED, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 1, sourceMove); } @@ -639,6 +737,7 @@ export class FlinchedTag extends BattlerTag { } export class InterruptedTag extends BattlerTag { + public override readonly tagType = BattlerTagType.INTERRUPTED; constructor(sourceMove: MoveId) { super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove); } @@ -668,7 +767,8 @@ export class InterruptedTag extends BattlerTag { /** * BattlerTag that represents the {@link https://bulbapedia.bulbagarden.net/wiki/Confusion_(status_condition) Confusion} status condition */ -export class ConfusedTag extends BattlerTag { +export class ConfusedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.CONFUSED; constructor(turnCount: number, sourceMove: MoveId) { super(BattlerTagType.CONFUSED, BattlerTagLapseType.MOVE, turnCount, sourceMove, undefined, true); } @@ -752,10 +852,10 @@ export class ConfusedTag extends BattlerTag { /** * Tag applied to the {@linkcode Move.DESTINY_BOND} user. - * @extends BattlerTag * @see {@linkcode apply} */ -export class DestinyBondTag extends BattlerTag { +export class DestinyBondTag extends SerializableBattlerTag { + public readonly tagType = BattlerTagType.DESTINY_BOND; constructor(sourceMove: MoveId, sourceId: number) { super(BattlerTagType.DESTINY_BOND, BattlerTagLapseType.PRE_MOVE, 1, sourceMove, sourceId, true); } @@ -765,9 +865,9 @@ export class DestinyBondTag extends BattlerTag { * or after receiving fatal damage. When the damage is fatal, * the attacking Pokemon is taken down as well, unless it's a boss. * - * @param {Pokemon} pokemon Pokemon that is attacking the Destiny Bond user. - * @param {BattlerTagLapseType} lapseType CUSTOM or PRE_MOVE - * @returns false if the tag source fainted or one turn has passed since the application + * @param pokemon - The Pokemon that is attacking the Destiny Bond user. + * @param lapseType - CUSTOM or PRE_MOVE + * @returns `false` if the tag source fainted or one turn has passed since the application */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType !== BattlerTagLapseType.CUSTOM) { @@ -811,7 +911,9 @@ export class DestinyBondTag extends BattlerTag { } } -export class InfatuatedTag extends BattlerTag { +// Technically serializable as in a double battle, a pokemon could be infatuated by its ally +export class InfatuatedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.INFATUATED; constructor(sourceMove: number, sourceId: number) { super(BattlerTagType.INFATUATED, BattlerTagLapseType.MOVE, 1, sourceMove, sourceId); } @@ -901,8 +1003,15 @@ export class InfatuatedTag extends BattlerTag { } } -export class SeedTag extends BattlerTag { - private sourceIndex: number; +/** + * Battler tag for the "Seeded" effect applied by {@linkcode MoveId.LEECH_SEED | Leech Seed} and + * {@linkcode MoveId.SAPPY_SEED | Sappy Seed} + * + * @sealed + */ +export class SeedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.SEEDED; + public readonly sourceIndex: BattlerIndex; constructor(sourceId: number) { super(BattlerTagType.SEEDED, BattlerTagLapseType.TURN_END, 1, MoveId.LEECH_SEED, sourceId, true); @@ -910,11 +1019,11 @@ export class SeedTag extends BattlerTag { /** * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag + * @param source - An object containing the fields needed to reconstruct this tag. */ - loadTag(source: BattlerTag | any): void { + public override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); - this.sourceIndex = source.sourceIndex; + (this as Mutable).sourceIndex = source.sourceIndex; } canAdd(pokemon: Pokemon): boolean { @@ -935,7 +1044,7 @@ export class SeedTag extends BattlerTag { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - this.sourceIndex = source.getBattlerIndex(); + (this as Mutable).sourceIndex = source.getBattlerIndex(); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -990,9 +1099,10 @@ export class SeedTag extends BattlerTag { /** * BattlerTag representing the effects of {@link https://bulbapedia.bulbagarden.net/wiki/Powder_(move) | Powder}. * When the afflicted Pokemon uses a Fire-type move, the move is cancelled, and the - * Pokemon takes damage equal to 1/4 of it's maximum HP (rounded down). + * Pokemon takes damage equal to 1/4 of its maximum HP (rounded down). */ export class PowderTag extends BattlerTag { + public override readonly tagType = BattlerTagType.POWDER; constructor() { super(BattlerTagType.POWDER, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 1); } @@ -1051,7 +1161,8 @@ export class PowderTag extends BattlerTag { } } -export class NightmareTag extends BattlerTag { +export class NightmareTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.NIGHTMARE; constructor() { super(BattlerTagType.NIGHTMARE, BattlerTagLapseType.TURN_END, 1, MoveId.NIGHTMARE); } @@ -1104,7 +1215,8 @@ export class NightmareTag extends BattlerTag { } } -export class FrenzyTag extends BattlerTag { +export class FrenzyTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.FRENZY; constructor(turnCount: number, sourceMove: MoveId, sourceId: number) { super(BattlerTagType.FRENZY, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); } @@ -1122,8 +1234,11 @@ export class FrenzyTag extends BattlerTag { /** * Applies the effects of {@linkcode MoveId.ENCORE} onto the target Pokemon. * Encore forces the target Pokemon to use its most-recent move for 3 turns. + * @sealed */ export class EncoreTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.ENCORE; + /** The ID of the move the user is locked into using */ public moveId: MoveId; constructor(sourceId: number) { @@ -1136,12 +1251,12 @@ export class EncoreTag extends MoveRestrictionBattlerTag { ); } - loadTag(source: BattlerTag | any): void { + public override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); - this.moveId = source.moveId as MoveId; + this.moveId = source.moveId; } - canAdd(pokemon: Pokemon): boolean { + override canAdd(pokemon: Pokemon): boolean { const lastMove = pokemon.getLastNonVirtualMove(); if (!lastMove) { return false; @@ -1156,10 +1271,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { return true; } - onAdd(pokemon: Pokemon): void { - // TODO: shouldn't this be `onAdd`? - super.onRemove(pokemon); - + override onAdd(pokemon: Pokemon): void { globalScene.phaseManager.queueMessage( i18next.t("battlerTags:encoreOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), @@ -1199,7 +1311,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { /** * Checks if the move matches the moveId stored within the tag and returns a boolean value - * @param move {@linkcode MoveId} the move selected + * @param move - The ID of the move selected * @param user N/A * @returns `true` if the move does not match with the moveId stored and as a result, restricted */ @@ -1223,6 +1335,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { } export class HelpingHandTag extends BattlerTag { + public override readonly tagType = BattlerTagType.HELPING_HAND; constructor(sourceId: number) { super(BattlerTagType.HELPING_HAND, BattlerTagLapseType.TURN_END, 1, MoveId.HELPING_HAND, sourceId); } @@ -1245,16 +1358,16 @@ export class HelpingHandTag extends BattlerTag { /** * Applies the Ingrain tag to a pokemon - * @extends TrappedTag */ export class IngrainTag extends TrappedTag { + public override readonly tagType = BattlerTagType.INGRAIN; constructor(sourceId: number) { super(BattlerTagType.INGRAIN, BattlerTagLapseType.TURN_END, 1, MoveId.INGRAIN, sourceId); } /** * Check if the Ingrain tag can be added to the pokemon - * @param pokemon {@linkcode Pokemon} The pokemon to check if the tag can be added to + * @param pokemon - The pokemon to check if the tag can be added to * @returns boolean True if the tag can be added, false otherwise */ canAdd(pokemon: Pokemon): boolean { @@ -1295,6 +1408,7 @@ export class IngrainTag extends TrappedTag { * end of each turn. */ export class OctolockTag extends TrappedTag { + public override readonly tagType = BattlerTagType.OCTOLOCK; constructor(sourceId: number) { super(BattlerTagType.OCTOLOCK, BattlerTagLapseType.TURN_END, 1, MoveId.OCTOLOCK, sourceId); } @@ -1317,7 +1431,8 @@ export class OctolockTag extends TrappedTag { } } -export class AquaRingTag extends BattlerTag { +export class AquaRingTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.AQUA_RING; constructor() { super(BattlerTagType.AQUA_RING, BattlerTagLapseType.TURN_END, 1, MoveId.AQUA_RING, undefined, true); } @@ -1353,7 +1468,8 @@ export class AquaRingTag extends BattlerTag { } /** Tag used to allow moves that interact with {@link MoveId.MINIMIZE} to function */ -export class MinimizeTag extends BattlerTag { +export class MinimizeTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.MINIMIZED; constructor() { super(BattlerTagType.MINIMIZED, BattlerTagLapseType.TURN_END, 1, MoveId.MINIMIZE); } @@ -1371,7 +1487,8 @@ export class MinimizeTag extends BattlerTag { } } -export class DrowsyTag extends BattlerTag { +export class DrowsyTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.DROWSY; constructor() { super(BattlerTagType.DROWSY, BattlerTagLapseType.TURN_END, 2, MoveId.YAWN); } @@ -1405,7 +1522,9 @@ export class DrowsyTag extends BattlerTag { } export abstract class DamagingTrapTag extends TrappedTag { - private commonAnim: CommonAnim; + public declare readonly tagType: TrappingBattlerTagType; + /** The animation to play during the damage sequence */ + #commonAnim: CommonAnim; constructor( tagType: BattlerTagType, @@ -1416,16 +1535,7 @@ export abstract class DamagingTrapTag extends TrappedTag { ) { super(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove, sourceId); - this.commonAnim = commonAnim; - } - - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.commonAnim = source.commonAnim as CommonAnim; + this.#commonAnim = commonAnim; } canAdd(pokemon: Pokemon): boolean { @@ -1443,7 +1553,7 @@ export abstract class DamagingTrapTag extends TrappedTag { moveName: this.getMoveName(), }), ); - phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, this.commonAnim); + phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, this.#commonAnim); const cancelled = new BooleanHolder(false); applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon, cancelled }); @@ -1459,6 +1569,7 @@ export abstract class DamagingTrapTag extends TrappedTag { // TODO: Condense all these tags into 1 singular tag with a modified message func export class BindTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.BIND; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.BIND, CommonAnim.BIND, turnCount, MoveId.BIND, sourceId); } @@ -1479,6 +1590,7 @@ export class BindTag extends DamagingTrapTag { } export class WrapTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.WRAP; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.WRAP, CommonAnim.WRAP, turnCount, MoveId.WRAP, sourceId); } @@ -1507,18 +1619,21 @@ export abstract class VortexTrapTag extends DamagingTrapTag { } export class FireSpinTag extends VortexTrapTag { + public override readonly tagType = BattlerTagType.FIRE_SPIN; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.FIRE_SPIN, CommonAnim.FIRE_SPIN, turnCount, MoveId.FIRE_SPIN, sourceId); } } export class WhirlpoolTag extends VortexTrapTag { + public override readonly tagType = BattlerTagType.WHIRLPOOL; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.WHIRLPOOL, CommonAnim.WHIRLPOOL, turnCount, MoveId.WHIRLPOOL, sourceId); } } export class ClampTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.CLAMP; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.CLAMP, CommonAnim.CLAMP, turnCount, MoveId.CLAMP, sourceId); } @@ -1538,6 +1653,7 @@ export class ClampTag extends DamagingTrapTag { } export class SandTombTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.SAND_TOMB; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.SAND_TOMB, CommonAnim.SAND_TOMB, turnCount, MoveId.SAND_TOMB, sourceId); } @@ -1551,6 +1667,7 @@ export class SandTombTag extends DamagingTrapTag { } export class MagmaStormTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.MAGMA_STORM; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.MAGMA_STORM, CommonAnim.MAGMA_STORM, turnCount, MoveId.MAGMA_STORM, sourceId); } @@ -1563,6 +1680,7 @@ export class MagmaStormTag extends DamagingTrapTag { } export class SnapTrapTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.SNAP_TRAP; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.SNAP_TRAP, CommonAnim.SNAP_TRAP, turnCount, MoveId.SNAP_TRAP, sourceId); } @@ -1575,6 +1693,7 @@ export class SnapTrapTag extends DamagingTrapTag { } export class ThunderCageTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.THUNDER_CAGE; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.THUNDER_CAGE, CommonAnim.THUNDER_CAGE, turnCount, MoveId.THUNDER_CAGE, sourceId); } @@ -1594,6 +1713,7 @@ export class ThunderCageTag extends DamagingTrapTag { } export class InfestationTag extends DamagingTrapTag { + public override readonly tagType = BattlerTagType.INFESTATION; constructor(turnCount: number, sourceId: number) { super(BattlerTagType.INFESTATION, CommonAnim.INFESTATION, turnCount, MoveId.INFESTATION, sourceId); } @@ -1613,7 +1733,8 @@ export class InfestationTag extends DamagingTrapTag { } export class ProtectedTag extends BattlerTag { - constructor(sourceMove: MoveId, tagType: BattlerTagType = BattlerTagType.PROTECTED) { + public declare readonly tagType: ProtectionBattlerTagType; + constructor(sourceMove: MoveId, tagType: ProtectionBattlerTagType = BattlerTagType.PROTECTED) { super(tagType, BattlerTagLapseType.TURN_END, 0, sourceMove); } @@ -1649,14 +1770,13 @@ export class ProtectedTag extends BattlerTag { } /** Class for `BattlerTag`s that apply some effect when hit by a contact move */ -export class ContactProtectedTag extends ProtectedTag { +export abstract class ContactProtectedTag extends ProtectedTag { /** * Function to call when a contact move hits the pokemon with this tag. * @param _attacker - The pokemon using the contact move * @param _user - The pokemon that is being attacked and has the tag - * @param _move - The move used by the attacker */ - onContact(_attacker: Pokemon, _user: Pokemon) {} + abstract onContact(_attacker: Pokemon, _user: Pokemon): void; /** * Lapse the tag and apply `onContact` if the move makes contact and @@ -1686,22 +1806,16 @@ export class ContactProtectedTag extends ProtectedTag { /** * `BattlerTag` class for moves that block damaging moves damage the enemy if the enemy's move makes contact * Used by {@linkcode MoveId.SPIKY_SHIELD} + * + * @sealed */ export class ContactDamageProtectedTag extends ContactProtectedTag { - private damageRatio: number; + public override readonly tagType = BattlerTagType.SPIKY_SHIELD; + #damageRatio: number; constructor(sourceMove: MoveId, damageRatio: number) { super(sourceMove, BattlerTagType.SPIKY_SHIELD); - this.damageRatio = damageRatio; - } - - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.damageRatio = source.damageRatio; + this.#damageRatio = damageRatio; } /** @@ -1713,7 +1827,7 @@ export class ContactDamageProtectedTag extends ContactProtectedTag { const cancelled = new BooleanHolder(false); applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon: user, cancelled }); if (!cancelled.value) { - attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { + attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.#damageRatio)), { result: HitResult.INDIRECT, }); } @@ -1721,20 +1835,22 @@ export class ContactDamageProtectedTag extends ContactProtectedTag { } /** Base class for `BattlerTag`s that block damaging moves but not status moves */ -export class DamageProtectedTag extends ContactProtectedTag {} +export abstract class DamageProtectedTag extends ContactProtectedTag { + public declare readonly tagType: DamageProtectedTagType; +} export class ContactSetStatusProtectedTag extends DamageProtectedTag { + public declare readonly tagType: ContactSetStatusProtectedTagType; + /** The status effect applied to attackers */ + #statusEffect: StatusEffect; /** - * @param sourceMove The move that caused the tag to be applied - * @param tagType The type of the tag - * @param statusEffect The status effect to apply to the attacker + * @param sourceMove - The move that caused the tag to be applied + * @param tagType - The type of the tag + * @param statusEffect - The status effect applied to attackers */ - constructor( - sourceMove: MoveId, - tagType: BattlerTagType, - private statusEffect: StatusEffect, - ) { + constructor(sourceMove: MoveId, tagType: ContactSetStatusProtectedTagType, statusEffect: StatusEffect) { super(sourceMove, tagType); + this.#statusEffect = statusEffect; } /** @@ -1743,7 +1859,7 @@ export class ContactSetStatusProtectedTag extends DamageProtectedTag { * @param user - The pokemon that is being attacked and has the tag */ override onContact(attacker: Pokemon, user: Pokemon): void { - attacker.trySetStatus(this.statusEffect, true, user); + attacker.trySetStatus(this.#statusEffect, true, user); } } @@ -1752,24 +1868,15 @@ export class ContactSetStatusProtectedTag extends DamageProtectedTag { * Used by {@linkcode MoveId.KINGS_SHIELD}, {@linkcode MoveId.OBSTRUCT}, {@linkcode MoveId.SILK_TRAP} */ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { - private stat: BattleStat; - private levels: number; + public declare readonly tagType: ContactStatStageChangeProtectedTagType; + #stat: BattleStat; + #levels: number; - constructor(sourceMove: MoveId, tagType: BattlerTagType, stat: BattleStat, levels: number) { + constructor(sourceMove: MoveId, tagType: ContactStatStageChangeProtectedTagType, stat: BattleStat, levels: number) { super(sourceMove, tagType); - this.stat = stat; - this.levels = levels; - } - - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - override loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.stat = source.stat; - this.levels = source.levels; + this.#stat = stat; + this.#levels = levels; } /** @@ -1782,19 +1889,19 @@ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { "StatStageChangePhase", attacker.getBattlerIndex(), false, - [this.stat], - this.levels, + [this.#stat], + this.#levels, ); } } /** * `BattlerTag` class for effects that cause the affected Pokemon to survive lethal attacks at 1 HP. - * Used for {@link https://bulbapedia.bulbagarden.net/wiki/Endure_(move) | Endure} and - * Endure Tokens. + * Used for {@link https://bulbapedia.bulbagarden.net/wiki/Endure_(move) | Endure} and endure tokens. */ export class EnduringTag extends BattlerTag { - constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { + public declare readonly tagType: EndureTagType; + constructor(tagType: EndureTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { super(tagType, lapseType, 0, sourceMove); } @@ -1823,6 +1930,7 @@ export class EnduringTag extends BattlerTag { } export class SturdyTag extends BattlerTag { + public override readonly tagType = BattlerTagType.STURDY; constructor(sourceMove: MoveId) { super(BattlerTagType.STURDY, BattlerTagLapseType.TURN_END, 0, sourceMove); } @@ -1841,7 +1949,8 @@ export class SturdyTag extends BattlerTag { } } -export class PerishSongTag extends BattlerTag { +export class PerishSongTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.PERISH_SONG; constructor(turnCount: number) { super(BattlerTagType.PERISH_SONG, BattlerTagLapseType.TURN_END, turnCount, MoveId.PERISH_SONG, undefined, true); } @@ -1873,6 +1982,7 @@ export class PerishSongTag extends BattlerTag { * @see {@link https://bulbapedia.bulbagarden.net/wiki/Center_of_attention | Center of Attention} */ export class CenterOfAttentionTag extends BattlerTag { + public override readonly tagType = BattlerTagType.CENTER_OF_ATTENTION; public powder: boolean; constructor(sourceMove: MoveId) { @@ -1899,30 +2009,26 @@ export class CenterOfAttentionTag extends BattlerTag { } } -export class AbilityBattlerTag extends BattlerTag { - public ability: AbilityId; - - constructor(tagType: BattlerTagType, ability: AbilityId, lapseType: BattlerTagLapseType, turnCount: number) { - super(tagType, lapseType, turnCount); - - this.ability = ability; +export class AbilityBattlerTag extends SerializableBattlerTag { + public declare readonly tagType: AbilityBattlerTagType; + #ability: AbilityId; + /** The ability that the tag corresponds to */ + public get ability(): AbilityId { + return this.#ability; } - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.ability = source.ability as AbilityId; + constructor(tagType: AbilityBattlerTagType, ability: AbilityId, lapseType: BattlerTagLapseType, turnCount: number) { + super(tagType, lapseType, turnCount); + + this.#ability = ability; } } /** * Tag used by Unburden to double speed - * @extends AbilityBattlerTag */ export class UnburdenTag extends AbilityBattlerTag { + public override readonly tagType = BattlerTagType.UNBURDEN; constructor() { super(BattlerTagType.UNBURDEN, AbilityId.UNBURDEN, BattlerTagLapseType.CUSTOM, 1); } @@ -1935,6 +2041,7 @@ export class UnburdenTag extends AbilityBattlerTag { } export class TruantTag extends AbilityBattlerTag { + public override readonly tagType = BattlerTagType.TRUANT; constructor() { super(BattlerTagType.TRUANT, AbilityId.TRUANT, BattlerTagLapseType.MOVE, 1); } @@ -1947,8 +2054,8 @@ export class TruantTag extends AbilityBattlerTag { const lastMove = pokemon.getLastXMoves()[0]; - if (!lastMove) { - // Don't interrupt move if last move was `Moves.NONE` OR no prior move was found + if (!lastMove || lastMove.move === MoveId.NONE) { + // Don't interrupt move if last move was `MoveId.NONE` OR no prior move was found return true; } @@ -1969,6 +2076,7 @@ export class TruantTag extends AbilityBattlerTag { } export class SlowStartTag extends AbilityBattlerTag { + public override readonly tagType = BattlerTagType.SLOW_START; constructor() { super(BattlerTagType.SLOW_START, AbilityId.SLOW_START, BattlerTagLapseType.TURN_END, 5); } @@ -2006,18 +2114,19 @@ export class SlowStartTag extends AbilityBattlerTag { } export class HighestStatBoostTag extends AbilityBattlerTag { + public declare readonly tagType: HighestStatBoostTagType; public stat: Stat; public multiplier: number; - constructor(tagType: BattlerTagType, ability: AbilityId) { + constructor(tagType: HighestStatBoostTagType, ability: AbilityId) { super(tagType, ability, BattlerTagLapseType.CUSTOM, 1); } /** * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag + * @param source - An object containing the fields needed to reconstruct this tag. */ - loadTag(source: BattlerTag | any): void { + public override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); this.stat = source.stat as Stat; this.multiplier = source.multiplier; @@ -2065,43 +2174,32 @@ export class HighestStatBoostTag extends AbilityBattlerTag { } } -export class WeatherHighestStatBoostTag extends HighestStatBoostTag implements WeatherBattlerTag { - public weatherTypes: WeatherType[]; - - constructor(tagType: BattlerTagType, ability: AbilityId, ...weatherTypes: WeatherType[]) { - super(tagType, ability); - this.weatherTypes = weatherTypes; +export class WeatherHighestStatBoostTag extends HighestStatBoostTag { + #weatherTypes: WeatherType[]; + public get weatherTypes(): WeatherType[] { + return this.#weatherTypes; } - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.weatherTypes = source.weatherTypes.map(w => w as WeatherType); + constructor(tagType: HighestStatBoostTagType, ability: AbilityId, ...weatherTypes: WeatherType[]) { + super(tagType, ability); + this.#weatherTypes = weatherTypes; } } -export class TerrainHighestStatBoostTag extends HighestStatBoostTag implements TerrainBattlerTag { - public terrainTypes: TerrainType[]; - - constructor(tagType: BattlerTagType, ability: AbilityId, ...terrainTypes: TerrainType[]) { - super(tagType, ability); - this.terrainTypes = terrainTypes; +export class TerrainHighestStatBoostTag extends HighestStatBoostTag { + #terrainTypes: TerrainType[]; + public get terrainTypes(): TerrainType[] { + return this.#terrainTypes; } - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.terrainTypes = source.terrainTypes.map(w => w as TerrainType); + constructor(tagType: HighestStatBoostTagType, ability: AbilityId, ...terrainTypes: TerrainType[]) { + super(tagType, ability); + this.#terrainTypes = terrainTypes; } } -export class SemiInvulnerableTag extends BattlerTag { +export class SemiInvulnerableTag extends SerializableBattlerTag { + public declare readonly tagType: SemiInvulnerableTagType; constructor(tagType: BattlerTagType, turnCount: number, sourceMove: MoveId) { super(tagType, BattlerTagLapseType.MOVE_EFFECT, turnCount, sourceMove); } @@ -2121,22 +2219,16 @@ export class SemiInvulnerableTag extends BattlerTag { } } -export class TypeImmuneTag extends BattlerTag { - public immuneType: PokemonType; +export abstract class TypeImmuneTag extends SerializableBattlerTag { + #immuneType: PokemonType; + public get immuneType(): PokemonType { + return this.#immuneType; + } constructor(tagType: BattlerTagType, sourceMove: MoveId, immuneType: PokemonType, length = 1) { super(tagType, BattlerTagLapseType.TURN_END, length, sourceMove, undefined, true); - this.immuneType = immuneType; - } - - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.immuneType = source.immuneType as PokemonType; + this.#immuneType = immuneType; } } @@ -2146,6 +2238,7 @@ export class TypeImmuneTag extends BattlerTag { * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | MoveId.TELEKINESIS} */ export class FloatingTag extends TypeImmuneTag { + public override readonly tagType = BattlerTagType.FLOATING; constructor(tagType: BattlerTagType, sourceMove: MoveId, turnCount: number) { super(tagType, sourceMove, PokemonType.GROUND, turnCount); } @@ -2174,10 +2267,21 @@ export class FloatingTag extends TypeImmuneTag { } } -export class TypeBoostTag extends BattlerTag { - public boostedType: PokemonType; - public boostValue: number; - public oneUse: boolean; +export class TypeBoostTag extends SerializableBattlerTag { + public declare readonly tagType: TypeBoostTagType; + #boostedType: PokemonType; + #boostValue: number; + #oneUse: boolean; + + public get boostedType(): PokemonType { + return this.#boostedType; + } + public get boostValue(): number { + return this.#boostValue; + } + public get oneUse(): boolean { + return this.#oneUse; + } constructor( tagType: BattlerTagType, @@ -2188,20 +2292,9 @@ export class TypeBoostTag extends BattlerTag { ) { super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove); - this.boostedType = boostedType; - this.boostValue = boostValue; - this.oneUse = oneUse; - } - - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.boostedType = source.boostedType as PokemonType; - this.boostValue = source.boostValue; - this.oneUse = source.oneUse; + this.#boostedType = boostedType; + this.#boostValue = boostValue; + this.#oneUse = oneUse; } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -2224,14 +2317,25 @@ export class TypeBoostTag extends BattlerTag { } } -export class CritBoostTag extends BattlerTag { - constructor(tagType: BattlerTagType, sourceMove: MoveId) { +export class CritBoostTag extends SerializableBattlerTag { + public declare readonly tagType: CritStageBoostTagType; + /** The number of stages boosted by this tag */ + public readonly critStages: number = 1; + + constructor(tagType: CritStageBoostTagType, sourceMove: MoveId) { super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove, undefined, true); } onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); + // Dragon cheer adds +2 crit stages if the pokemon is a Dragon type when the tag is added + if (this.tagType === BattlerTagType.DRAGON_CHEER && pokemon.getTypes(true).includes(PokemonType.DRAGON)) { + (this as Mutable).critStages = 2; + } else { + (this as Mutable).critStages = 1; + } + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:critBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), @@ -2252,43 +2356,21 @@ export class CritBoostTag extends BattlerTag { }), ); } -} -/** - * Tag for the effects of Dragon Cheer, which boosts the critical hit ratio of the user's allies. - * @extends {CritBoostTag} - */ -export class DragonCheerTag extends CritBoostTag { - /** The types of the user's ally when the tag is added */ - public typesOnAdd: PokemonType[]; - - constructor() { - super(BattlerTagType.CRIT_BOOST, MoveId.DRAGON_CHEER); - } - - onAdd(pokemon: Pokemon): void { - super.onAdd(pokemon); - - this.typesOnAdd = pokemon.getTypes(true); + public override loadTag(source: BaseBattlerTag & Pick): void { + super.loadTag(source); + // TODO: Remove the nullish coalescing once Zod Schemas come in + // For now, this is kept for backwards compatibility with older save files + (this as Mutable).critStages = source.critStages ?? 1; } } -export class SaltCuredTag extends BattlerTag { - private sourceIndex: number; - +export class SaltCuredTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.SALT_CURED; constructor(sourceId: number) { super(BattlerTagType.SALT_CURED, BattlerTagLapseType.TURN_END, 1, MoveId.SALT_CURE, sourceId); } - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.sourceIndex = source.sourceIndex; - } - onAdd(pokemon: Pokemon): void { const source = this.getSourcePokemon(); if (!source) { @@ -2302,7 +2384,6 @@ export class SaltCuredTag extends BattlerTag { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - this.sourceIndex = source.getBattlerIndex(); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -2338,22 +2419,12 @@ export class SaltCuredTag extends BattlerTag { } } -export class CursedTag extends BattlerTag { - private sourceIndex: number; - +export class CursedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.CURSED; constructor(sourceId: number) { super(BattlerTagType.CURSED, BattlerTagLapseType.TURN_END, 1, MoveId.CURSE, sourceId, true); } - /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.sourceIndex = source.sourceIndex; - } - onAdd(pokemon: Pokemon): void { const source = this.getSourcePokemon(); if (!source) { @@ -2362,7 +2433,6 @@ export class CursedTag extends BattlerTag { } super.onAdd(pokemon); - this.sourceIndex = source.getBattlerIndex(); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -2392,11 +2462,13 @@ export class CursedTag extends BattlerTag { return ret; } } + /** * Battler tag for attacks that remove a type post use. */ -export class RemovedTypeTag extends BattlerTag { - constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { +export class RemovedTypeTag extends SerializableBattlerTag { + public declare readonly tagType: RemovedTypeTagType; + constructor(tagType: RemovedTypeTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { super(tagType, lapseType, 1, sourceMove); } } @@ -2405,8 +2477,9 @@ export class RemovedTypeTag extends BattlerTag { * Battler tag for effects that ground the source, allowing Ground-type moves to hit them. * @description `IGNORE_FLYING`: Persistent grounding effects (i.e. from Smack Down and Thousand Waves) */ -export class GroundedTag extends BattlerTag { - constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { +export class GroundedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.IGNORE_FLYING; + constructor(tagType: BattlerTagType.IGNORE_FLYING, lapseType: BattlerTagLapseType, sourceMove: MoveId) { super(tagType, lapseType, 1, sourceMove); } } @@ -2478,15 +2551,16 @@ export class RoostedTag extends BattlerTag { } /** Common attributes of form change abilities that block damage */ -export class FormBlockDamageTag extends BattlerTag { - constructor(tagType: BattlerTagType) { +export class FormBlockDamageTag extends SerializableBattlerTag { + public declare readonly tagType: BattlerTagType.ICE_FACE | BattlerTagType.DISGUISE; + constructor(tagType: BattlerTagType.ICE_FACE | BattlerTagType.DISGUISE) { super(tagType, BattlerTagLapseType.CUSTOM, 1); } /** * Determines if the tag can be added to the Pokémon. - * @param {Pokemon} pokemon The Pokémon to which the tag might be added. - * @returns {boolean} True if the tag can be added, false otherwise. + * @param pokemon - The Pokémon to which the tag might be added. + * @returns `true` if the tag can be added, `false` otherwise. */ canAdd(pokemon: Pokemon): boolean { return pokemon.formIndex === 0; @@ -2508,7 +2582,7 @@ export class FormBlockDamageTag extends BattlerTag { /** * Removes the tag from the Pokémon. * Triggers a form change when the tag is removed. - * @param {Pokemon} pokemon The Pokémon from which the tag is removed. + * @param pokemon - The Pokémon from which the tag is removed. */ onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); @@ -2516,12 +2590,14 @@ export class FormBlockDamageTag extends BattlerTag { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); } } + /** Provides the additional weather-based effects of the Ice Face ability */ export class IceFaceBlockDamageTag extends FormBlockDamageTag { + public override readonly tagType = BattlerTagType.ICE_FACE; /** * Determines if the tag can be added to the Pokémon. - * @param {Pokemon} pokemon The Pokémon to which the tag might be added. - * @returns {boolean} True if the tag can be added, false otherwise. + * @param pokemon - The Pokémon to which the tag might be added. + * @returns `true` if the tag can be added, `false` otherwise. */ canAdd(pokemon: Pokemon): boolean { const weatherType = globalScene.arena.weather?.weatherType; @@ -2534,21 +2610,19 @@ export class IceFaceBlockDamageTag extends FormBlockDamageTag { /** * Battler tag indicating a Tatsugiri with {@link https://bulbapedia.bulbagarden.net/wiki/Commander_(Ability) | Commander} * has entered the tagged Pokemon's mouth. + * @sealed */ -export class CommandedTag extends BattlerTag { - private _tatsugiriFormKey: string; +export class CommandedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.COMMANDED; + public readonly tatsugiriFormKey: string; constructor(sourceId: number) { super(BattlerTagType.COMMANDED, BattlerTagLapseType.CUSTOM, 0, MoveId.NONE, sourceId); } - public get tatsugiriFormKey(): string { - return this._tatsugiriFormKey; - } - /** Caches the Tatsugiri's form key and sharply boosts the tagged Pokemon's stats */ override onAdd(pokemon: Pokemon): void { - this._tatsugiriFormKey = this.getSourcePokemon()?.getFormKey() ?? "curly"; + (this as Mutable).tatsugiriFormKey = this.getSourcePokemon()?.getFormKey() ?? "curly"; globalScene.phaseManager.unshiftNew( "StatStageChangePhase", pokemon.getBattlerIndex(), @@ -2565,9 +2639,9 @@ export class CommandedTag extends BattlerTag { } } - override loadTag(source: BattlerTag | any): void { + override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); - this._tatsugiriFormKey = source._tatsugiriFormKey; + (this as Mutable).tatsugiriFormKey = source.tatsugiriFormKey; } } @@ -2580,8 +2654,10 @@ export class CommandedTag extends BattlerTag { * - Stat changes on removal of (all) stacks. * - Removing stacks decreases DEF and SPDEF, independently, by one stage for each stack that successfully changed * the stat when added. + * @sealed */ -export class StockpilingTag extends BattlerTag { +export class StockpilingTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.STOCKPILING; public stockpiledCount = 0; public statChangeCounts: { [Stat.DEF]: number; [Stat.SPDEF]: number } = { [Stat.DEF]: 0, @@ -2604,7 +2680,9 @@ export class StockpilingTag extends BattlerTag { } }; - loadTag(source: BattlerTag | any): void { + public override loadTag( + source: BaseBattlerTag & Pick, + ): void { super.loadTag(source); this.stockpiledCount = source.stockpiledCount || 0; this.statChangeCounts = { @@ -2687,10 +2765,10 @@ export class StockpilingTag extends BattlerTag { /** * Battler tag for Gulp Missile used by Cramorant. - * @extends BattlerTag */ -export class GulpMissileTag extends BattlerTag { - constructor(tagType: BattlerTagType, sourceMove: MoveId) { +export class GulpMissileTag extends SerializableBattlerTag { + public declare readonly tagType: BattlerTagType.GULP_MISSILE_ARROKUDA | BattlerTagType.GULP_MISSILE_PIKACHU; + constructor(tagType: BattlerTagType.GULP_MISSILE_ARROKUDA | BattlerTagType.GULP_MISSILE_PIKACHU, sourceMove: MoveId) { super(tagType, BattlerTagLapseType.HIT, 0, sourceMove); } @@ -2729,11 +2807,12 @@ export class GulpMissileTag extends BattlerTag { /** * Gulp Missile's initial form changes are triggered by using Surf and Dive. - * @param {Pokemon} pokemon The Pokemon with Gulp Missile ability. + * @param pokemon - The Pokemon with Gulp Missile ability. * @returns Whether the BattlerTag can be added. */ canAdd(pokemon: Pokemon): boolean { - const isSurfOrDive = [MoveId.SURF, MoveId.DIVE].includes(this.sourceMove); + // Bang here is OK as if sourceMove was undefined, this would just evaluate to false + const isSurfOrDive = [MoveId.SURF, MoveId.DIVE].includes(this.sourceMove!); const isNormalForm = pokemon.formIndex === 0 && !pokemon.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA) && @@ -2755,52 +2834,46 @@ export class GulpMissileTag extends BattlerTag { } /** - * Tag that makes the target drop all of it type immunities + * Tag that makes the target drop the immunities granted by a particular type * and all accuracy checks ignore its evasiveness stat. * * Applied by moves: {@linkcode MoveId.ODOR_SLEUTH | Odor Sleuth}, * {@linkcode MoveId.MIRACLE_EYE | Miracle Eye} and {@linkcode MoveId.FORESIGHT | Foresight}. * - * @extends BattlerTag * @see {@linkcode ignoreImmunity} */ -export class ExposedTag extends BattlerTag { - private defenderType: PokemonType; - private allowedTypes: PokemonType[]; +export class ExposedTag extends SerializableBattlerTag { + public declare readonly tagType: BattlerTagType.IGNORE_DARK | BattlerTagType.IGNORE_GHOST; + #defenderType: PokemonType; + #allowedTypes: readonly PokemonType[]; - constructor(tagType: BattlerTagType, sourceMove: MoveId, defenderType: PokemonType, allowedTypes: PokemonType[]) { + constructor( + tagType: BattlerTagType.IGNORE_DARK | BattlerTagType.IGNORE_GHOST, + sourceMove: MoveId, + defenderType: PokemonType, + allowedTypes: PokemonType[], + ) { super(tagType, BattlerTagLapseType.CUSTOM, 1, sourceMove); - this.defenderType = defenderType; - this.allowedTypes = allowedTypes; + this.#defenderType = defenderType; + this.#allowedTypes = allowedTypes; } /** - * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag - */ - loadTag(source: BattlerTag | any): void { - super.loadTag(source); - this.defenderType = source.defenderType as PokemonType; - this.allowedTypes = source.allowedTypes as PokemonType[]; - } - - /** - * @param types {@linkcode PokemonType} of the defending Pokemon - * @param moveType {@linkcode PokemonType} of the move targetting it + * @param type - The defending type to check against + * @param moveType - The pokemon type of the move being used * @returns `true` if the move should be allowed to target the defender. */ ignoreImmunity(type: PokemonType, moveType: PokemonType): boolean { - return type === this.defenderType && this.allowedTypes.includes(moveType); + return type === this.#defenderType && this.#allowedTypes.includes(moveType); } } /** * Tag that prevents HP recovery from held items and move effects. It also blocks the usage of recovery moves. * Applied by moves: {@linkcode MoveId.HEAL_BLOCK | Heal Block (5 turns)}, {@linkcode MoveId.PSYCHIC_NOISE | Psychic Noise (2 turns)} - * - * @extends MoveRestrictionBattlerTag */ export class HealBlockTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.HEAL_BLOCK; constructor(turnCount: number, sourceMove: MoveId) { super( BattlerTagType.HEAL_BLOCK, @@ -2818,7 +2891,7 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { /** * Checks if a move is disabled under Heal Block - * @param {MoveId} move {@linkcode MoveId} the move ID + * @param move - {@linkcode MoveId | ID} of the move being used * @returns `true` if the move has a TRIAGE_MOVE flag and is a status move */ override isMoveRestricted(move: MoveId): boolean { @@ -2828,9 +2901,9 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { /** * Checks if a move is disabled under Heal Block because of its choice of target * Implemented b/c of Pollen Puff - * @param {MoveId} move {@linkcode MoveId} the move ID - * @param {Pokemon} user {@linkcode Pokemon} the move user - * @param {Pokemon} target {@linkcode Pokemon} the target of the move + * @param move - {@linkcode MoveId | ID} of the move being used + * @param user - The pokemon using the move + * @param target - The target of the move * @returns `true` if the move cannot be used because the target is an ally */ override isMoveTargetRestricted(move: MoveId, user: Pokemon, target: Pokemon) { @@ -2851,10 +2924,9 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { } /** - * @override - * @param {Pokemon} pokemon {@linkcode Pokemon} attempting to use the restricted move - * @param {MoveId} move {@linkcode MoveId} ID of the move being interrupted - * @returns {string} text to display when the move is interrupted + * @param pokemon - {@linkcode Pokemon} attempting to use the restricted move + * @param move - {@linkcode MoveId | ID} of the move being interrupted + * @returns Text to display when the move is interrupted */ override interruptedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledHealBlock", { @@ -2880,17 +2952,17 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { /** * Tag that doubles the type effectiveness of Fire-type moves. - * @extends BattlerTag */ -export class TarShotTag extends BattlerTag { +export class TarShotTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.TAR_SHOT; constructor() { super(BattlerTagType.TAR_SHOT, BattlerTagLapseType.CUSTOM, 0); } /** * If the Pokemon is terastallized, the tag cannot be added. - * @param {Pokemon} pokemon the {@linkcode Pokemon} to which the tag is added - * @returns whether the tag is applied + * @param pokemon - The pokemon to check + * @returns Whether the tag can be added */ override canAdd(pokemon: Pokemon): boolean { return !pokemon.isTerastallized; @@ -2910,6 +2982,7 @@ export class TarShotTag extends BattlerTag { * While this tag is in effect, the afflicted Pokemon's moves are changed to Electric type. */ export class ElectrifiedTag extends BattlerTag { + public override readonly tagType = BattlerTagType.ELECTRIFIED; constructor() { super(BattlerTagType.ELECTRIFIED, BattlerTagLapseType.TURN_END, 1, MoveId.ELECTRIFY); } @@ -2928,7 +3001,8 @@ export class ElectrifiedTag extends BattlerTag { * Battler Tag that keeps track of how many times the user has Autotomized * Each count of Autotomization reduces the weight by 100kg */ -export class AutotomizedTag extends BattlerTag { +export class AutotomizedTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.AUTOTOMIZED; public autotomizeCount = 0; constructor(sourceMove: MoveId = MoveId.AUTOTOMIZE) { super(BattlerTagType.AUTOTOMIZED, BattlerTagLapseType.CUSTOM, 1, sourceMove); @@ -2954,20 +3028,45 @@ export class AutotomizedTag extends BattlerTag { onOverlap(pokemon: Pokemon): void { this.onAdd(pokemon); } + + public override loadTag(source: BaseBattlerTag & Pick): void { + super.loadTag(source); + this.autotomizeCount = source.autotomizeCount; + } } /** * Tag implementing the {@link https://bulbapedia.bulbagarden.net/wiki/Substitute_(doll)#Effect | Substitute Doll} effect, * for use with the moves Substitute and Shed Tail. Pokemon with this tag deflect most forms of received attack damage * onto the tag. This tag also grants immunity to most Status moves and several move effects. + * + * @sealed */ -export class SubstituteTag extends BattlerTag { +export class SubstituteTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.SUBSTITUTE; /** The substitute's remaining HP. If HP is depleted, the Substitute fades. */ public hp: number; + + //#region non-serializable properties /** A reference to the sprite representing the Substitute doll */ - public sprite: Phaser.GameObjects.Sprite; + #sprite: Phaser.GameObjects.Sprite; + /** A reference to the sprite representing the Substitute doll */ + public get sprite(): Phaser.GameObjects.Sprite { + return this.#sprite; + } + public set sprite(value: Phaser.GameObjects.Sprite) { + this.#sprite = value; + } /** Is the source Pokemon "in focus," i.e. is it fully visible on the field? */ - public sourceInFocus: boolean; + #sourceInFocus: boolean; + /** Is the source Pokemon "in focus," i.e. is it fully visible on the field? */ + public get sourceInFocus(): boolean { + return this.#sourceInFocus; + } + public set sourceInFocus(value: boolean) { + this.#sourceInFocus = value; + } + //#endregion non-serializable properties constructor(sourceMove: MoveId, sourceId: number) { super( @@ -3078,9 +3177,9 @@ export class SubstituteTag extends BattlerTag { /** * When given a battler tag or json representing one, load the data for it. - * @param {BattlerTag | any} source A battler tag + * @param source - An object containing the necessary properties to load the tag */ - loadTag(source: BattlerTag | any): void { + public override loadTag(source: BaseBattlerTag & Pick): void { super.loadTag(source); this.hp = source.hp; } @@ -3093,6 +3192,7 @@ export class SubstituteTag extends BattlerTag { * Currently used only in MysteryEncounters to provide start of fight stat buffs. */ export class MysteryEncounterPostSummonTag extends BattlerTag { + public override readonly tagType = BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON; constructor() { super(BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON, BattlerTagLapseType.CUSTOM, 1); } @@ -3126,15 +3226,11 @@ export class MysteryEncounterPostSummonTag extends BattlerTag { * Torment does not interrupt the move if the move is performed consecutively in the same turn and right after Torment is applied */ export class TormentTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.TORMENT; constructor(sourceId: number) { super(BattlerTagType.TORMENT, BattlerTagLapseType.AFTER_MOVE, 1, MoveId.TORMENT, sourceId); } - /** - * Adds the battler tag to the target Pokemon and defines the private class variable 'target' - * 'Target' is used to track the Pokemon's current status - * @param {Pokemon} pokemon the Pokemon tormented - */ override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); globalScene.phaseManager.queueMessage( @@ -3147,7 +3243,7 @@ export class TormentTag extends MoveRestrictionBattlerTag { /** * Torment only ends when the affected Pokemon leaves the battle field - * @param {Pokemon} pokemon the Pokemon under the effects of Torment + * @param pokemon - The Pokemon under the effects of Torment * @param _tagType * @returns `true` if still present | `false` if not */ @@ -3156,8 +3252,8 @@ export class TormentTag extends MoveRestrictionBattlerTag { } /** - * This checks if the current move used is identical to the last used move with a {@linkcode MoveResult} of `SUCCESS`/`MISS` - * @param {MoveId} move the move under investigation + * Check if the current move used is identical to the last used move with a {@linkcode MoveResult} of `SUCCESS`/`MISS` + * @param move - The move under investigation * @returns `true` if there is valid consecutive usage | `false` if the moves are different from each other */ public override isMoveRestricted(move: MoveId, user: Pokemon): boolean { @@ -3189,6 +3285,7 @@ export class TormentTag extends MoveRestrictionBattlerTag { * The tag is removed after 4 turns. */ export class TauntTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.TAUNT; constructor() { super(BattlerTagType.TAUNT, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], 4, MoveId.TAUNT); } @@ -3214,8 +3311,8 @@ export class TauntTag extends MoveRestrictionBattlerTag { } /** - * Checks if a move is a status move and determines its restriction status on that basis - * @param {MoveId} move the move under investigation + * Check if a move is a status move and determines its restriction status on that basis + * @param move - The move under investigation * @returns `true` if the move is a status move */ override isMoveRestricted(move: MoveId): boolean { @@ -3243,6 +3340,7 @@ export class TauntTag extends MoveRestrictionBattlerTag { * The tag is only removed when the source-user is removed from the field. */ export class ImprisonTag extends MoveRestrictionBattlerTag { + public override readonly tagType = BattlerTagType.IMPRISON; constructor(sourceId: number) { super( BattlerTagType.IMPRISON, @@ -3255,8 +3353,7 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { /** * Checks if the source of Imprison is still active - * @override - * @param pokemon The pokemon this tag is attached to + * @param pokemon - The pokemon this tag is attached to * @returns `true` if the source is still active */ public override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -3273,8 +3370,7 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { /** * Checks if the source of the tag has the parameter move in its moveset and that the source is still active - * @override - * @param {MoveId} move the move under investigation + * @param move - The move under investigation * @returns `false` if either condition is not met */ public override isMoveRestricted(move: MoveId, _user: Pokemon): boolean { @@ -3306,7 +3402,8 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { * For three turns, starting from the turn of hit, at the end of each turn, the target Pokemon's speed will decrease by 1. * The tag can also expire by taking the target Pokemon off the field, or the Pokemon that originally used the move. */ -export class SyrupBombTag extends BattlerTag { +export class SyrupBombTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.SYRUP_BOMB; constructor(sourceId: number) { super(BattlerTagType.SYRUP_BOMB, BattlerTagLapseType.TURN_END, 3, MoveId.SYRUP_BOMB, sourceId); } @@ -3368,7 +3465,8 @@ export class SyrupBombTag extends BattlerTag { * The effects of Telekinesis can be baton passed to a teammate. * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | MoveId.TELEKINESIS} */ -export class TelekinesisTag extends BattlerTag { +export class TelekinesisTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.TELEKINESIS; constructor(sourceMove: MoveId) { super( BattlerTagType.TELEKINESIS, @@ -3391,9 +3489,9 @@ export class TelekinesisTag extends BattlerTag { /** * Tag that swaps the user's base ATK stat with its base DEF stat. - * @extends BattlerTag */ -export class PowerTrickTag extends BattlerTag { +export class PowerTrickTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.POWER_TRICK; constructor(sourceMove: MoveId, sourceId: number) { super(BattlerTagType.POWER_TRICK, BattlerTagLapseType.CUSTOM, 0, sourceMove, sourceId, true); } @@ -3418,7 +3516,7 @@ export class PowerTrickTag extends BattlerTag { /** * Removes the Power Trick tag and reverts any stat changes if the tag is already applied. - * @param {Pokemon} pokemon The {@linkcode Pokemon} that already has the Power Trick tag. + * @param pokemon - The {@linkcode Pokemon} that already has the Power Trick tag. */ onOverlap(pokemon: Pokemon): void { pokemon.removeTag(this.tagType); @@ -3426,7 +3524,7 @@ export class PowerTrickTag extends BattlerTag { /** * Swaps the user's base ATK stat with its base DEF stat. - * @param {Pokemon} pokemon The {@linkcode Pokemon} whose stats will be swapped. + * @param pokemon - The {@linkcode Pokemon} whose stats will be swapped. */ swapStat(pokemon: Pokemon): void { const temp = pokemon.getStat(Stat.ATK, false); @@ -3440,7 +3538,8 @@ export class PowerTrickTag extends BattlerTag { * If this tag is active when the bearer faints from an opponent's move, the tag reduces that move's PP to 0. * Otherwise, it lapses when the bearer makes another move. */ -export class GrudgeTag extends BattlerTag { +export class GrudgeTag extends SerializableBattlerTag { + public override readonly tagType = BattlerTagType.GRUDGE; constructor() { super(BattlerTagType.GRUDGE, [BattlerTagLapseType.CUSTOM, BattlerTagLapseType.PRE_MOVE], 1, MoveId.GRUDGE); } @@ -3458,9 +3557,10 @@ export class GrudgeTag extends BattlerTag { * Activates Grudge's special effect on the attacking Pokemon and lapses the tag. * @param pokemon * @param lapseType - * @param sourcePokemon {@linkcode Pokemon} the source of the move that fainted the tag's bearer + * @param sourcePokemon - The source of the move that fainted the tag's bearer * @returns `false` if Grudge activates its effect or lapses */ + // TODO: Confirm whether this should interact with copying moves override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType, sourcePokemon?: Pokemon): boolean { if (lapseType === BattlerTagLapseType.CUSTOM && sourcePokemon) { if (sourcePokemon.isActive() && pokemon.isOpponent(sourcePokemon)) { @@ -3486,6 +3586,7 @@ export class GrudgeTag extends BattlerTag { * Tag used to heal the user of Psycho Shift of its status effect if Psycho Shift succeeds in transferring its status effect to the target Pokemon */ export class PsychoShiftTag extends BattlerTag { + public override readonly tagType = BattlerTagType.PSYCHO_SHIFT; constructor() { super(BattlerTagType.PSYCHO_SHIFT, BattlerTagLapseType.AFTER_MOVE, 1, MoveId.PSYCHO_SHIFT); } @@ -3510,6 +3611,7 @@ export class PsychoShiftTag extends BattlerTag { * Tag associated with the move Magic Coat. */ export class MagicCoatTag extends BattlerTag { + public override readonly tagType = BattlerTagType.MAGIC_COAT; constructor() { super(BattlerTagType.MAGIC_COAT, BattlerTagLapseType.TURN_END, 1, MoveId.MAGIC_COAT); } @@ -3563,7 +3665,7 @@ export function getBattlerTag( case BattlerTagType.FRENZY: return new FrenzyTag(turnCount, sourceMove, sourceId); case BattlerTagType.CHARGING: - return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, 1, sourceMove, sourceId); + return new SerializableBattlerTag(tagType, BattlerTagLapseType.CUSTOM, 1, sourceMove, sourceId); case BattlerTagType.ENCORE: return new EncoreTag(sourceId); case BattlerTagType.HELPING_HAND: @@ -3643,15 +3745,14 @@ export function getBattlerTag( case BattlerTagType.FIRE_BOOST: return new TypeBoostTag(tagType, sourceMove, PokemonType.FIRE, 1.5, false); case BattlerTagType.CRIT_BOOST: - return new CritBoostTag(tagType, sourceMove); case BattlerTagType.DRAGON_CHEER: - return new DragonCheerTag(); + return new CritBoostTag(tagType, sourceMove); case BattlerTagType.ALWAYS_CRIT: case BattlerTagType.IGNORE_ACCURACY: - return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, 2, sourceMove); + return new SerializableBattlerTag(tagType, BattlerTagLapseType.TURN_END, 2, sourceMove); case BattlerTagType.ALWAYS_GET_HIT: case BattlerTagType.RECEIVE_DOUBLE_DAMAGE: - return new BattlerTag(tagType, BattlerTagLapseType.PRE_MOVE, 1, sourceMove); + return new SerializableBattlerTag(tagType, BattlerTagLapseType.PRE_MOVE, 1, sourceMove); case BattlerTagType.BYPASS_SLEEP: return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove); case BattlerTagType.IGNORE_FLYING: @@ -3729,19 +3830,18 @@ export function getBattlerTag( return new PsychoShiftTag(); case BattlerTagType.MAGIC_COAT: return new MagicCoatTag(); - case BattlerTagType.NONE: - default: - return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); } } /** * When given a battler tag or json representing one, creates an actual BattlerTag object with the same data. - * @param {BattlerTag | any} source A battler tag - * @return {BattlerTag} The valid battler tag + * @param source - An object containing the data necessary to reconstruct the BattlerTag. + * @returns The valid battler tag */ -export function loadBattlerTag(source: BattlerTag | any): BattlerTag { - const tag = getBattlerTag(source.tagType, source.turnCount, source.sourceMove, source.sourceId); +export function loadBattlerTag(source: BattlerTag | BattlerTagTypeData): BattlerTag { + // TODO: Remove this bang by fixing the signature of `getBattlerTag` + // to allow undefined sourceIds and sourceMoves (with appropriate fallback for tags that require it) + const tag = getBattlerTag(source.tagType, source.turnCount, source.sourceMove!, source.sourceId!); tag.loadTag(source); return tag; } @@ -3749,8 +3849,8 @@ export function loadBattlerTag(source: BattlerTag | any): BattlerTag { /** * Helper function to verify that the current phase is a MoveEffectPhase and provide quick access to commonly used fields * - * @param _pokemon {@linkcode Pokemon} The Pokémon used to access the current phase - * @returns null if current phase is not MoveEffectPhase, otherwise Object containing the {@linkcode MoveEffectPhase}, and its + * @param _pokemon - The Pokémon used to access the current phase (unused) + * @returns `null` if current phase is not MoveEffectPhase, otherwise Object containing the {@linkcode MoveEffectPhase}, and its * corresponding {@linkcode Move} and user {@linkcode Pokemon} */ function getMoveEffectPhaseData(_pokemon: Pokemon): { phase: MoveEffectPhase; attacker: Pokemon; move: Move } | null { @@ -3764,3 +3864,104 @@ function getMoveEffectPhaseData(_pokemon: Pokemon): { phase: MoveEffectPhase; at } return null; } + +/** + * Map from {@linkcode BattlerTagType} to the corresponding {@linkcode BattlerTag} class. + */ +export type BattlerTagTypeMap = { + [BattlerTagType.RECHARGING]: RechargingTag; + [BattlerTagType.SHELL_TRAP]: ShellTrapTag; + [BattlerTagType.FLINCHED]: FlinchedTag; + [BattlerTagType.INTERRUPTED]: InterruptedTag; + [BattlerTagType.CONFUSED]: ConfusedTag; + [BattlerTagType.INFATUATED]: InfatuatedTag; + [BattlerTagType.SEEDED]: SeedTag; + [BattlerTagType.POWDER]: PowderTag; + [BattlerTagType.NIGHTMARE]: NightmareTag; + [BattlerTagType.FRENZY]: FrenzyTag; + [BattlerTagType.CHARGING]: GenericSerializableBattlerTag; + [BattlerTagType.ENCORE]: EncoreTag; + [BattlerTagType.HELPING_HAND]: HelpingHandTag; + [BattlerTagType.INGRAIN]: IngrainTag; + [BattlerTagType.AQUA_RING]: AquaRingTag; + [BattlerTagType.DROWSY]: DrowsyTag; + [BattlerTagType.TRAPPED]: TrappedTag; + [BattlerTagType.NO_RETREAT]: NoRetreatTag; + [BattlerTagType.BIND]: BindTag; + [BattlerTagType.WRAP]: WrapTag; + [BattlerTagType.FIRE_SPIN]: FireSpinTag; + [BattlerTagType.WHIRLPOOL]: WhirlpoolTag; + [BattlerTagType.CLAMP]: ClampTag; + [BattlerTagType.SAND_TOMB]: SandTombTag; + [BattlerTagType.MAGMA_STORM]: MagmaStormTag; + [BattlerTagType.SNAP_TRAP]: SnapTrapTag; + [BattlerTagType.THUNDER_CAGE]: ThunderCageTag; + [BattlerTagType.INFESTATION]: InfestationTag; + [BattlerTagType.PROTECTED]: ProtectedTag; + [BattlerTagType.SPIKY_SHIELD]: ContactDamageProtectedTag; + [BattlerTagType.KINGS_SHIELD]: ContactStatStageChangeProtectedTag; + [BattlerTagType.OBSTRUCT]: ContactStatStageChangeProtectedTag; + [BattlerTagType.SILK_TRAP]: ContactStatStageChangeProtectedTag; + [BattlerTagType.BANEFUL_BUNKER]: ContactSetStatusProtectedTag; + [BattlerTagType.BURNING_BULWARK]: ContactSetStatusProtectedTag; + [BattlerTagType.ENDURING]: EnduringTag; + [BattlerTagType.ENDURE_TOKEN]: EnduringTag; + [BattlerTagType.STURDY]: SturdyTag; + [BattlerTagType.PERISH_SONG]: PerishSongTag; + [BattlerTagType.CENTER_OF_ATTENTION]: CenterOfAttentionTag; + [BattlerTagType.TRUANT]: TruantTag; + [BattlerTagType.SLOW_START]: SlowStartTag; + [BattlerTagType.PROTOSYNTHESIS]: WeatherHighestStatBoostTag; + [BattlerTagType.QUARK_DRIVE]: TerrainHighestStatBoostTag; + [BattlerTagType.FLYING]: SemiInvulnerableTag; + [BattlerTagType.UNDERGROUND]: SemiInvulnerableTag; + [BattlerTagType.UNDERWATER]: SemiInvulnerableTag; + [BattlerTagType.HIDDEN]: SemiInvulnerableTag; + [BattlerTagType.FIRE_BOOST]: TypeBoostTag; + [BattlerTagType.CRIT_BOOST]: CritBoostTag; + [BattlerTagType.DRAGON_CHEER]: CritBoostTag; + [BattlerTagType.ALWAYS_CRIT]: GenericSerializableBattlerTag; + [BattlerTagType.IGNORE_ACCURACY]: GenericSerializableBattlerTag; + [BattlerTagType.ALWAYS_GET_HIT]: GenericSerializableBattlerTag; + [BattlerTagType.RECEIVE_DOUBLE_DAMAGE]: GenericSerializableBattlerTag; + [BattlerTagType.BYPASS_SLEEP]: BattlerTag; + [BattlerTagType.IGNORE_FLYING]: GroundedTag; + [BattlerTagType.ROOSTED]: RoostedTag; + [BattlerTagType.BURNED_UP]: RemovedTypeTag; + [BattlerTagType.DOUBLE_SHOCKED]: RemovedTypeTag; + [BattlerTagType.SALT_CURED]: SaltCuredTag; + [BattlerTagType.CURSED]: CursedTag; + [BattlerTagType.CHARGED]: TypeBoostTag; + [BattlerTagType.FLOATING]: FloatingTag; + [BattlerTagType.MINIMIZED]: MinimizeTag; + [BattlerTagType.DESTINY_BOND]: DestinyBondTag; + [BattlerTagType.ICE_FACE]: IceFaceBlockDamageTag; + [BattlerTagType.DISGUISE]: FormBlockDamageTag; + [BattlerTagType.COMMANDED]: CommandedTag; + [BattlerTagType.STOCKPILING]: StockpilingTag; + [BattlerTagType.OCTOLOCK]: OctolockTag; + [BattlerTagType.DISABLED]: DisabledTag; + [BattlerTagType.IGNORE_GHOST]: ExposedTag; + [BattlerTagType.IGNORE_DARK]: ExposedTag; + [BattlerTagType.GULP_MISSILE_ARROKUDA]: GulpMissileTag; + [BattlerTagType.GULP_MISSILE_PIKACHU]: GulpMissileTag; + [BattlerTagType.BEAK_BLAST_CHARGING]: BeakBlastChargingTag; + [BattlerTagType.TAR_SHOT]: TarShotTag; + [BattlerTagType.ELECTRIFIED]: ElectrifiedTag; + [BattlerTagType.THROAT_CHOPPED]: ThroatChoppedTag; + [BattlerTagType.GORILLA_TACTICS]: GorillaTacticsTag; + [BattlerTagType.UNBURDEN]: UnburdenTag; + [BattlerTagType.SUBSTITUTE]: SubstituteTag; + [BattlerTagType.AUTOTOMIZED]: AutotomizedTag; + [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON]: MysteryEncounterPostSummonTag; + [BattlerTagType.HEAL_BLOCK]: HealBlockTag; + [BattlerTagType.TORMENT]: TormentTag; + [BattlerTagType.TAUNT]: TauntTag; + [BattlerTagType.IMPRISON]: ImprisonTag; + [BattlerTagType.SYRUP_BOMB]: SyrupBombTag; + [BattlerTagType.TELEKINESIS]: TelekinesisTag; + [BattlerTagType.POWER_TRICK]: PowerTrickTag; + [BattlerTagType.GRUDGE]: GrudgeTag; + [BattlerTagType.PSYCHO_SHIFT]: PsychoShiftTag; + [BattlerTagType.MAGIC_COAT]: MagicCoatTag; +}; diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 938ee482d01..1a1a3774f8f 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -6,7 +6,6 @@ import { pokemonEvolutions } from "#balance/pokemon-evolutions"; import { speciesStarterCosts } from "#balance/starters"; import { pokemonFormChanges } from "#data/pokemon-forms"; import type { PokemonSpecies } from "#data/pokemon-species"; -import { getPokemonSpeciesForm } from "#data/pokemon-species"; import { BattleType } from "#enums/battle-type"; import { ChallengeType } from "#enums/challenge-type"; import { Challenges } from "#enums/challenges"; @@ -24,9 +23,10 @@ import type { Pokemon } from "#field/pokemon"; import { Trainer } from "#field/trainer"; import { PokemonMove } from "#moves/pokemon-move"; import type { DexAttrProps, GameData } from "#system/game-data"; -import { BooleanHolder, type NumberHolder, randSeedItem } from "#utils/common"; +import { BooleanHolder, isBetween, type NumberHolder, randSeedItem } from "#utils/common"; import { deepCopy } from "#utils/data"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; +import { toCamelCase, toSnakeCase } from "#utils/strings"; import i18next from "i18next"; /** A constant for the default max cost of the starting party before a run */ @@ -67,14 +67,11 @@ export abstract class Challenge { } /** - * Gets the localisation key for the challenge - * @returns {@link string} The i18n key for this challenge + * Gets the localization key for the challenge + * @returns The i18n key for this challenge as camel case. */ geti18nKey(): string { - return Challenges[this.id] - .split("_") - .map((f, i) => (i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase())) - .join(""); + return toCamelCase(Challenges[this.id]); } /** @@ -105,23 +102,22 @@ export abstract class Challenge { } /** - * Returns the textual representation of a challenge's current value. - * @param overrideValue {@link number} The value to check for. If undefined, gets the current value. - * @returns {@link string} The localised name for the current value. + * Return the textual representation of a challenge's current value. + * @param overrideValue - The value to check for; default {@linkcode this.value} + * @returns The localised text for the current value. */ - getValue(overrideValue?: number): string { - const value = overrideValue ?? this.value; - return i18next.t(`challenges:${this.geti18nKey()}.value.${value}`); + getValue(overrideValue: number = this.value): string { + return i18next.t(`challenges:${this.geti18nKey()}.value.${overrideValue}`); } /** - * Returns the description of a challenge's current value. - * @param overrideValue {@link number} The value to check for. If undefined, gets the current value. - * @returns {@link string} The localised description for the current value. + * Return the description of a challenge's current value. + * @param overrideValue - The value to check for; default {@linkcode this.value} + * @returns The localised description for the current value. */ - getDescription(overrideValue?: number): string { - const value = overrideValue ?? this.value; - return `${i18next.t([`challenges:${this.geti18nKey()}.desc.${value}`, `challenges:${this.geti18nKey()}.desc`])}`; + // TODO: Do we need an override value here? it's currently unused + getDescription(overrideValue: number = this.value): string { + return `${i18next.t([`challenges:${this.geti18nKey()}.desc.${overrideValue}`, `challenges:${this.geti18nKey()}.desc`])}`; } /** @@ -579,31 +575,19 @@ export class SingleGenerationChallenge extends Challenge { return this.value > 0 ? 1 : 0; } - /** - * Returns the textual representation of a challenge's current value. - * @param {value} overrideValue The value to check for. If undefined, gets the current value. - * @returns {string} The localised name for the current value. - */ - getValue(overrideValue?: number): string { - const value = overrideValue ?? this.value; - if (value === 0) { + getValue(overrideValue: number = this.value): string { + if (overrideValue === 0) { return i18next.t("settings:off"); } - return i18next.t(`starterSelectUiHandler:gen${value}`); + return i18next.t(`starterSelectUiHandler:gen${overrideValue}`); } - /** - * Returns the description of a challenge's current value. - * @param {value} overrideValue The value to check for. If undefined, gets the current value. - * @returns {string} The localised description for the current value. - */ - getDescription(overrideValue?: number): string { - const value = overrideValue ?? this.value; - if (value === 0) { + getDescription(overrideValue: number = this.value): string { + if (overrideValue === 0) { return i18next.t("challenges:singleGeneration.desc_default"); } return i18next.t("challenges:singleGeneration.desc", { - gen: i18next.t(`challenges:singleGeneration.gen_${value}`), + gen: i18next.t(`challenges:singleGeneration.gen_${overrideValue}`), }); } @@ -671,29 +655,13 @@ export class SingleTypeChallenge extends Challenge { return this.value > 0 ? 1 : 0; } - /** - * Returns the textual representation of a challenge's current value. - * @param {value} overrideValue The value to check for. If undefined, gets the current value. - * @returns {string} The localised name for the current value. - */ - getValue(overrideValue?: number): string { - if (overrideValue === undefined) { - overrideValue = this.value; - } - return PokemonType[this.value - 1].toLowerCase(); + getValue(overrideValue: number = this.value): string { + return toSnakeCase(PokemonType[overrideValue - 1]); } - /** - * Returns the description of a challenge's current value. - * @param {value} overrideValue The value to check for. If undefined, gets the current value. - * @returns {string} The localised description for the current value. - */ - getDescription(overrideValue?: number): string { - if (overrideValue === undefined) { - overrideValue = this.value; - } - const type = i18next.t(`pokemonInfo:Type.${PokemonType[this.value - 1]}`); - const typeColor = `[color=${TypeColor[PokemonType[this.value - 1]]}][shadow=${TypeShadow[PokemonType[this.value - 1]]}]${type}[/shadow][/color]`; + getDescription(overrideValue: number = this.value): string { + const type = i18next.t(`pokemonInfo:Type.${PokemonType[overrideValue - 1]}`); + const typeColor = `[color=${TypeColor[PokemonType[overrideValue - 1]]}][shadow=${TypeShadow[PokemonType[this.value - 1]]}]${type}[/shadow][/color]`; const defaultDesc = i18next.t("challenges:singleType.desc_default"); const typeDesc = i18next.t("challenges:singleType.desc", { type: typeColor, @@ -714,11 +682,11 @@ export class SingleTypeChallenge extends Challenge { */ export class FreshStartChallenge extends Challenge { constructor() { - super(Challenges.FRESH_START, 1); + super(Challenges.FRESH_START, 2); } applyStarterChoice(pokemon: PokemonSpecies, valid: BooleanHolder): boolean { - if (!defaultStarterSpecies.includes(pokemon.speciesId)) { + if (this.value === 1 && !defaultStarterSpecies.includes(pokemon.speciesId)) { valid.value = false; return true; } @@ -726,27 +694,45 @@ export class FreshStartChallenge extends Challenge { } applyStarterCost(species: SpeciesId, cost: NumberHolder): boolean { - if (defaultStarterSpecies.includes(species)) { - cost.value = speciesStarterCosts[species]; - return true; - } - return false; + cost.value = speciesStarterCosts[species]; + return true; } applyStarterModify(pokemon: Pokemon): boolean { - pokemon.abilityIndex = 0; // Always base ability, not hidden ability + pokemon.abilityIndex = pokemon.abilityIndex % 2; // Always base ability, if you set it to hidden it wraps to first ability pokemon.passive = false; // Passive isn't unlocked pokemon.nature = Nature.HARDY; // Neutral nature - pokemon.moveset = pokemon.species + let validMoves = pokemon.species .getLevelMoves() - .filter(m => m[0] <= 5) - .map(lm => lm[1]) - .slice(0, 4) - .map(m => new PokemonMove(m)); // No egg moves + .filter(m => isBetween(m[0], 1, 5)) + .map(lm => lm[1]); + // Filter egg moves out of the moveset + pokemon.moveset = pokemon.moveset.filter(pm => validMoves.includes(pm.moveId)); + if (pokemon.moveset.length < 4) { + // If there's empty slots fill with remaining valid moves + const existingMoveIds = pokemon.moveset.map(pm => pm.moveId); + validMoves = validMoves.filter(m => !existingMoveIds.includes(m)); + pokemon.moveset = pokemon.moveset.concat(validMoves.map(m => new PokemonMove(m))).slice(0, 4); + } pokemon.luck = 0; // No luck pokemon.shiny = false; // Not shiny pokemon.variant = 0; // Not shiny - pokemon.formIndex = 0; // Froakie should be base form + if (pokemon.species.speciesId === SpeciesId.ZYGARDE && pokemon.formIndex >= 2) { + pokemon.formIndex -= 2; // Sets 10%-PC to 10%-AB and 50%-PC to 50%-AB + } else if ( + pokemon.formIndex > 0 && + [ + SpeciesId.PIKACHU, + SpeciesId.EEVEE, + SpeciesId.PICHU, + SpeciesId.ROTOM, + SpeciesId.MELOETTA, + SpeciesId.FROAKIE, + SpeciesId.ROCKRUFF, + ].includes(pokemon.species.speciesId) + ) { + pokemon.formIndex = 0; // These mons are set to form 0 because they're meant to be unlocks or mid-run form changes + } pokemon.ivs = [15, 15, 15, 15, 15, 15]; // Default IVs of 15 for all stats (Updated to 15 from 10 in 1.2.0) pokemon.teraType = pokemon.species.type1; // Always primary tera type return true; @@ -832,13 +818,7 @@ export class LowerStarterMaxCostChallenge extends Challenge { super(Challenges.LOWER_MAX_STARTER_COST, 9); } - /** - * @override - */ - getValue(overrideValue?: number): string { - if (overrideValue === undefined) { - overrideValue = this.value; - } + getValue(overrideValue: number = this.value): string { return (DEFAULT_PARTY_MAX_COST - overrideValue).toString(); } @@ -866,13 +846,7 @@ export class LowerStarterPointsChallenge extends Challenge { super(Challenges.LOWER_STARTER_POINTS, 9); } - /** - * @override - */ - getValue(overrideValue?: number): string { - if (overrideValue === undefined) { - overrideValue = this.value; - } + getValue(overrideValue: number = this.value): string { return (DEFAULT_PARTY_MAX_COST - overrideValue).toString(); } diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index 9a6f560933a..b5fb0aa8c07 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -2,7 +2,7 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; import { speciesStarterCosts } from "#balance/starters"; import type { PokemonSpeciesForm } from "#data/pokemon-species"; -import { getPokemonSpeciesForm, PokemonSpecies } from "#data/pokemon-species"; +import { PokemonSpecies } from "#data/pokemon-species"; import { BiomeId } from "#enums/biome-id"; import { PartyMemberStrength } from "#enums/party-member-strength"; import type { SpeciesId } from "#enums/species-id"; @@ -10,7 +10,7 @@ import { PlayerPokemon } from "#field/pokemon"; import type { Starter } from "#ui/starter-select-ui-handler"; import { randSeedGauss, randSeedInt, randSeedItem } from "#utils/common"; import { getEnumValues } from "#utils/enums"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; export interface DailyRunConfig { seed: number; diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 406e72ee82b..361d005e83b 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -1,6 +1,7 @@ import { BattleSpec } from "#enums/battle-spec"; import { TrainerType } from "#enums/trainer-type"; import { trainerConfigs } from "#trainers/trainer-config"; +import { capitalizeFirstLetter } from "#utils/strings"; export interface TrainerTypeMessages { encounter?: string | string[]; @@ -1755,8 +1756,7 @@ export function initTrainerTypeDialogue(): void { trainerConfigs[trainerType][`${messageType}Messages`] = messages[0][messageType]; } if (messages.length > 1) { - trainerConfigs[trainerType][`female${messageType.slice(0, 1).toUpperCase()}${messageType.slice(1)}Messages`] = - messages[1][messageType]; + trainerConfigs[trainerType][`female${capitalizeFirstLetter(messageType)}Messages`] = messages[1][messageType]; } } else { trainerConfigs[trainerType][`${messageType}Messages`] = messages[messageType]; diff --git a/src/data/moves/invalid-moves.ts b/src/data/moves/invalid-moves.ts index 6d97d8faf1e..e55eedc29aa 100644 --- a/src/data/moves/invalid-moves.ts +++ b/src/data/moves/invalid-moves.ts @@ -256,7 +256,7 @@ export const noAbilityTypeOverrideMoves: ReadonlySet = new Set([ MoveId.HIDDEN_POWER, ]); -/** Set of all moves that cannot be copied by {@linkcode Moves.SKETCH}. */ +/** Set of all moves that cannot be copied by {@linkcode MoveId.SKETCH}. */ export const invalidSketchMoves: ReadonlySet = new Set([ MoveId.NONE, MoveId.CHATTER, @@ -270,7 +270,7 @@ export const invalidSketchMoves: ReadonlySet = new Set([ MoveId.BREAKNECK_BLITZ__SPECIAL, ]); -/** Set of all moves that cannot be locked into by {@linkcode Moves.ENCORE}. */ +/** Set of all moves that cannot be locked into by {@linkcode MoveId.ENCORE}. */ export const invalidEncoreMoves: ReadonlySet = new Set([ MoveId.MIMIC, MoveId.MIRROR_MOVE, diff --git a/src/data/moves/move-utils.ts b/src/data/moves/move-utils.ts index 39891f595aa..241144599e5 100644 --- a/src/data/moves/move-utils.ts +++ b/src/data/moves/move-utils.ts @@ -1,8 +1,8 @@ import { allMoves } from "#data/data-lists"; import type { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveTarget } from "#enums/MoveTarget"; import type { MoveId } from "#enums/move-id"; +import { MoveTarget } from "#enums/move-target"; import { PokemonType } from "#enums/pokemon-type"; import type { Pokemon } from "#field/pokemon"; import { applyMoveAttrs } from "#moves/apply-attrs"; @@ -27,6 +27,28 @@ export function isFieldTargeted(move: Move): boolean { return false; } +/** + * Determine whether a move is a spread move. + * + * @param move - The {@linkcode Move} to check + * @returns Whether {@linkcode move} is spread-targeted. + * @remarks + * Examples include: + * - Moves targeting all adjacent Pokemon (like Surf) + * - Moves targeting all adjacent enemies (like Air Cutter) + */ + +export function isSpreadMove(move: Move): boolean { + switch (move.moveTarget) { + case MoveTarget.ALL_ENEMIES: + case MoveTarget.ALL_NEAR_ENEMIES: + case MoveTarget.ALL_OTHERS: + case MoveTarget.ALL_NEAR_OTHERS: + return true; + } + return false; +} + export function getMoveTargets(user: Pokemon, move: MoveId, replaceTarget?: MoveTarget): MoveTargetSet { const variableTarget = new NumberHolder(0); user.getOpponents(false).forEach(p => applyMoveAttrs("VariableTargetAttr", user, p, allMoves[move], variableTarget)); diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index d8863016002..0dfbc78d7ae 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -25,6 +25,7 @@ import { getBerryEffectFunc } from "#data/berry"; import { applyChallenges } from "#data/challenge"; import { allAbilities, allMoves } from "#data/data-lists"; import { SpeciesFormChangeRevertWeatherFormTrigger } from "#data/form-change-triggers"; +import { DelayedAttackTag } from "#data/positional-tags/positional-tag"; import { getNonVolatileStatusEffects, getStatusEffectHealText, @@ -48,12 +49,13 @@ import { ChargeAnim } from "#enums/move-anims-common"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { isVirtual, MoveUseMode } from "#enums/move-use-mode"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveEffectTrigger } from "#enums/MoveEffectTrigger"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveTarget } from "#enums/MoveTarget"; -import { MultiHitType } from "#enums/MultiHitType"; +import { MoveCategory } from "#enums/move-category"; +import { MoveEffectTrigger } from "#enums/move-effect-trigger"; +import { MoveFlags } from "#enums/move-flags"; +import { MoveTarget } from "#enums/move-target"; +import { MultiHitType } from "#enums/multi-hit-type"; import { PokemonType } from "#enums/pokemon-type"; +import { PositionalTagType } from "#enums/positional-tag-type"; import { SpeciesId } from "#enums/species-id"; import { BATTLE_STATS, @@ -87,8 +89,9 @@ import type { AttackMoveResult } from "#types/attack-move-result"; import type { Localizable } from "#types/locales"; import type { ChargingMove, MoveAttrMap, MoveAttrString, MoveClassMap, MoveKindString } from "#types/move-types"; import type { TurnMove } from "#types/turn-move"; -import { BooleanHolder, type Constructor, isNullOrUndefined, NumberHolder, randSeedFloat, randSeedInt, randSeedItem, toDmgValue, toReadableString } from "#utils/common"; +import { BooleanHolder, type Constructor, isNullOrUndefined, NumberHolder, randSeedFloat, randSeedInt, randSeedItem, toDmgValue } from "#utils/common"; import { getEnumValues } from "#utils/enums"; +import { toTitleCase } from "#utils/strings"; import i18next from "i18next"; /** @@ -422,9 +425,8 @@ export abstract class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.MAKES_CONTACT} flag for the calling Move - * @param setFlag Default `true`, set to `false` if the move doesn't make contact - * @see {@linkcode AbilityId.STATIC} - * @returns The {@linkcode Move} that called this function + * @param setFlag - Whether the move should make contact; default `true` + * @returns `this` */ makesContact(setFlag: boolean = true): this { this.setFlag(MoveFlags.MAKES_CONTACT, setFlag); @@ -808,16 +810,14 @@ export abstract class Move implements Localizable { } const power = new NumberHolder(this.power); + + applyMoveAttrs("VariablePowerAttr", source, target, this, power); + const typeChangeMovePowerMultiplier = new NumberHolder(1); const typeChangeHolder = new NumberHolder(this.type); applyAbAttrs("MoveTypeChangeAbAttr", {pokemon: source, opponent: target, move: this, simulated: true, moveType: typeChangeHolder, power: typeChangeMovePowerMultiplier}); - const sourceTeraType = source.getTeraType(); - if (source.isTerastallized && sourceTeraType === this.type && power.value < 60 && this.priority <= 0 && !this.hasAttr("MultiHitAttr") && !globalScene.findModifier(m => m instanceof PokemonMultiHitModifier && m.pokemonId === source.id)) { - power.value = 60; - } - const abAttrParams: PreAttackModifyPowerAbAttrParams = { pokemon: source, opponent: target, @@ -832,6 +832,13 @@ export abstract class Move implements Localizable { applyAbAttrs("AllyMoveCategoryPowerBoostAbAttr", {...abAttrParams, pokemon: ally}); } + // Non-priority, single-hit moves of the user's Tera Type are always a bare minimum of 60 power + + const sourceTeraType = source.getTeraType(); + if (source.isTerastallized && sourceTeraType === this.type && power.value < 60 && this.priority <= 0 && !this.hasAttr("MultiHitAttr") && !globalScene.findModifier(m => m instanceof PokemonMultiHitModifier && m.pokemonId === source.id)) { + power.value = 60; + } + const fieldAuras = new Set( globalScene.getField(true) .map((p) => p.getAbilityAttrs("FieldMoveTypePowerBoostAbAttr").filter(attr => { @@ -855,7 +862,6 @@ export abstract class Move implements Localizable { power.value *= typeBoost.boostValue; } - applyMoveAttrs("VariablePowerAttr", source, target, this, power); if (!this.hasAttr("TypelessAttr")) { globalScene.arena.applyTags(WeakenMoveTypeTag, simulated, typeChangeHolder.value, power); @@ -2581,7 +2587,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { } /** - * Applies the effect of {@linkcode Moves.PSYCHO_SHIFT} to its target. + * Applies the effect of {@linkcode MoveId.PSYCHO_SHIFT} to its target. * Psycho Shift takes the user's status effect and passes it onto the target. * The user is then healed after the move has been successfully executed. * @param user - The {@linkcode Pokemon} using the move @@ -2921,7 +2927,7 @@ export class HealStatusEffectAttr extends MoveEffectAttr { /** * Attribute to add the {@linkcode BattlerTagType.BYPASS_SLEEP | BYPASS_SLEEP Battler Tag} for 1 turn to the user before move use. - * Used by {@linkcode Moves.SNORE} and {@linkcode Moves.SLEEP_TALK}. + * Used by {@linkcode MoveId.SNORE} and {@linkcode MoveId.SLEEP_TALK}. */ // TODO: Should this use a battler tag? // TODO: Give this `userSleptOrComatoseCondition` by default @@ -3118,54 +3124,110 @@ export class OverrideMoveEffectAttr extends MoveAttr { * Its sole purpose is to ensure that typescript is able to properly narrow when the `is` method is called. */ declare private _: never; - override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + /** + * Apply the move attribute to override other effects of this move. + * @param user - The {@linkcode Pokemon} using the move + * @param target - The {@linkcode Pokemon} targeted by the move + * @param move - The {@linkcode Move} being used + * @param args - + * `[0]`: A {@linkcode BooleanHolder} containing whether move effects were successfully overridden; should be set to `true` on success \ + * `[1]`: The {@linkcode MoveUseMode} dictating how this move was used. + * @returns `true` if the move effect was successfully overridden. + */ + public override apply(_user: Pokemon, _target: Pokemon, _move: Move, _args: [overridden: BooleanHolder, useMode: MoveUseMode]): boolean { return true; } } +/** Abstract class for moves that add {@linkcode PositionalTag}s to the field. */ +abstract class AddPositionalTagAttr extends OverrideMoveEffectAttr { + protected abstract readonly tagType: PositionalTagType; + + public override getCondition(): MoveConditionFunc { + // Check the arena if another similar positional tag is active and affecting the same slot + return (_user, target, move) => globalScene.arena.positionalTagManager.canAddTag(this.tagType, target.getBattlerIndex()) + } +} + /** - * Attack Move that doesn't hit the turn it is played and doesn't allow for multiple - * uses on the same target. Examples are Future Sight or Doom Desire. - * @extends OverrideMoveEffectAttr - * @param tagType The {@linkcode ArenaTagType} that will be placed on the field when the move is used - * @param chargeAnim The {@linkcode ChargeAnim | Charging Animation} used for the move - * @param chargeText The text to display when the move is used + * Attribute to implement delayed attacks, such as {@linkcode MoveId.FUTURE_SIGHT} or {@linkcode MoveId.DOOM_DESIRE}. + * Delays the attack's effect with a {@linkcode DelayedAttackTag}, + * activating against the given slot after the given turn count has elapsed. */ export class DelayedAttackAttr extends OverrideMoveEffectAttr { - public tagType: ArenaTagType; public chargeAnim: ChargeAnim; private chargeText: string; - constructor(tagType: ArenaTagType, chargeAnim: ChargeAnim, chargeText: string) { + /** + * @param chargeAnim - The {@linkcode ChargeAnim | charging animation} used for the move's charging phase. + * @param chargeKey - The `i18next` locales **key** to show when the delayed attack is used. + * In the displayed text, `{{pokemonName}}` will be populated with the user's name. + */ + constructor(chargeAnim: ChargeAnim, chargeKey: string) { super(); - this.tagType = tagType; this.chargeAnim = chargeAnim; - this.chargeText = chargeText; + this.chargeText = chargeKey; } - apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - // Edge case for the move applied on a pokemon that has fainted - if (!target) { - return true; + public override apply(user: Pokemon, target: Pokemon, move: Move, args: [overridden: BooleanHolder, useMode: MoveUseMode]): boolean { + const useMode = args[1]; + if (useMode === MoveUseMode.DELAYED_ATTACK) { + // don't trigger if already queueing an indirect attack + return false; } - const overridden = args[0] as BooleanHolder; - const virtual = args[1] as boolean; + const overridden = args[0]; + overridden.value = true; - if (!virtual) { - overridden.value = true; - globalScene.phaseManager.unshiftNew("MoveAnimPhase", new MoveChargeAnim(this.chargeAnim, move.id, user)); - globalScene.phaseManager.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); - user.pushMoveHistory({ move: move.id, targets: [ target.getBattlerIndex() ], result: MoveResult.OTHER, useMode: MoveUseMode.NORMAL }); - const side = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - globalScene.arena.addTag(this.tagType, 3, move.id, user.id, side, false, target.getBattlerIndex()); - } else { - globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(target.id) ?? undefined), moveName: move.name })); - } + // Display the move animation to foresee an attack + globalScene.phaseManager.unshiftNew("MoveAnimPhase", new MoveChargeAnim(this.chargeAnim, move.id, user)); + globalScene.phaseManager.queueMessage( + i18next.t( + this.chargeText, + { pokemonName: getPokemonNameWithAffix(user) } + ) + ) + user.pushMoveHistory({move: move.id, targets: [target.getBattlerIndex()], result: MoveResult.OTHER, useMode, turn: globalScene.currentBattle.turn}) + user.pushMoveHistory({move: move.id, targets: [target.getBattlerIndex()], result: MoveResult.OTHER, useMode, turn: globalScene.currentBattle.turn}) + // Queue up an attack on the given slot. + globalScene.arena.positionalTagManager.addTag({ + tagType: PositionalTagType.DELAYED_ATTACK, + sourceId: user.id, + targetIndex: target.getBattlerIndex(), + sourceMove: move.id, + turnCount: 3 + }) return true; } + + public override getCondition(): MoveConditionFunc { + // Check the arena if another similar attack is active and affecting the same slot + return (_user, target) => globalScene.arena.positionalTagManager.canAddTag(PositionalTagType.DELAYED_ATTACK, target.getBattlerIndex()) + } +} + +/** + * Attribute to queue a {@linkcode WishTag} to activate in 2 turns. + * The tag whill heal + */ +export class WishAttr extends MoveEffectAttr { + public override apply(user: Pokemon, target: Pokemon, _move: Move): boolean { + globalScene.arena.positionalTagManager.addTag({ + tagType: PositionalTagType.WISH, + healHp: toDmgValue(user.getMaxHp() / 2), + targetIndex: target.getBattlerIndex(), + turnCount: 2, + pokemonName: getPokemonNameWithAffix(user), + }); + return true; + } + + public override getCondition(): MoveConditionFunc { + // Check the arena if another wish is active and affecting the same slot + return (_user, target) => globalScene.arena.positionalTagManager.canAddTag(PositionalTagType.WISH, target.getBattlerIndex()) + } } /** @@ -3183,8 +3245,8 @@ export class AwaitCombinedPledgeAttr extends OverrideMoveEffectAttr { * @param user the {@linkcode Pokemon} using this move * @param target n/a * @param move the {@linkcode Move} being used - * @param args - * - [0] a {@linkcode BooleanHolder} indicating whether the move's base + * @param args - + * `[0]`: A {@linkcode BooleanHolder} indicating whether the move's base * effects should be overridden this turn. * @returns `true` if base move effects were overridden; `false` otherwise */ @@ -3571,8 +3633,7 @@ export class CutHpStatStageBoostAttr extends StatStageChangeAttr { /** * Attribute implementing the stat boosting effect of {@link https://bulbapedia.bulbagarden.net/wiki/Order_Up_(move) | Order Up}. * If the user has a Pokemon with {@link https://bulbapedia.bulbagarden.net/wiki/Commander_(Ability) | Commander} in their mouth, - * one of the user's stats are increased by 1 stage, depending on the "commanding" Pokemon's form. This effect does not respect - * effect chance, but Order Up itself may be boosted by Sheer Force. + * one of the user's stats are increased by 1 stage, depending on the "commanding" Pokemon's form. */ export class OrderUpStatBoostAttr extends MoveEffectAttr { constructor() { @@ -5851,20 +5912,21 @@ export class ProtectAttr extends AddBattlerTagAttr { getCondition(): MoveConditionFunc { return ((user, target, move): boolean => { let timesUsed = 0; - const moveHistory = user.getLastXMoves(); - let turnMove: TurnMove | undefined; - while (moveHistory.length) { - turnMove = moveHistory.shift(); - if (!allMoves[turnMove?.move ?? MoveId.NONE].hasAttr("ProtectAttr") || turnMove?.result !== MoveResult.SUCCESS) { + for (const turnMove of user.getLastXMoves(-1).slice()) { + if ( + // Quick & Wide guard increment the Protect counter without using it for fail chance + !(allMoves[turnMove.move].hasAttr("ProtectAttr") || + [MoveId.QUICK_GUARD, MoveId.WIDE_GUARD].includes(turnMove.move)) || + turnMove.result !== MoveResult.SUCCESS + ) { break; } - timesUsed++; + + timesUsed++ } - if (timesUsed) { - return !user.randBattleSeedInt(Math.pow(3, timesUsed)); - } - return true; + + return timesUsed === 0 || user.randBattleSeedInt(Math.pow(3, timesUsed)) === 0; }); } } @@ -7078,7 +7140,7 @@ export class CopyMoveAttr extends CallMoveAttr { /** * Attribute used for moves that cause the target to repeat their last used move. * - * Used by {@linkcode Moves.INSTRUCT | Instruct}. + * Used by {@linkcode MoveId.INSTRUCT | Instruct}. * @see [Instruct on Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Instruct_(move)) */ export class RepeatMoveAttr extends MoveEffectAttr { @@ -7341,7 +7403,7 @@ const targetMoveCopiableCondition: MoveConditionFunc = (user, target, move) => { /** * Attribute to temporarily copy the last move in the target's moveset. - * Used by {@linkcode Moves.MIMIC}. + * Used by {@linkcode MoveId.MIMIC}. */ export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { @@ -7905,7 +7967,7 @@ export class VariableTargetAttr extends MoveAttr { /** * Attribute to cause the target to move immediately after the user. * - * Used by {@linkcode Moves.AFTER_YOU}. + * Used by {@linkcode MoveId.AFTER_YOU}. */ export class AfterYouAttr extends MoveEffectAttr { /** @@ -8133,7 +8195,7 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { } const type = validTypes[user.randBattleSeedInt(validTypes.length)]; user.summonData.types = [ type ]; - globalScene.phaseManager.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: toReadableString(PokemonType[type]) })); + globalScene.phaseManager.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: toTitleCase(PokemonType[type]) })); user.updateInfo(); return true; @@ -9200,9 +9262,12 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), new AttackMove(MoveId.FUTURE_SIGHT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) - .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field + .attr(DelayedAttackAttr, ChargeAnim.FUTURE_SIGHT_CHARGING, "moveTriggers:foresawAnAttack") .ignoresProtect() - .attr(DelayedAttackAttr, ArenaTagType.FUTURE_SIGHT, ChargeAnim.FUTURE_SIGHT_CHARGING, i18next.t("moveTriggers:foresawAnAttack", { pokemonName: "{USER}" })), + /* + * Should not apply abilities or held items if user is off the field + */ + .edgeCase(), new AttackMove(MoveId.ROCK_SMASH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), new AttackMove(MoveId.WHIRLPOOL, PokemonType.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2) @@ -9223,7 +9288,7 @@ export function initMoves() { new SelfStatusMove(MoveId.STOCKPILE, PokemonType.NORMAL, -1, 20, -1, 0, 3) .condition(user => (user.getTag(StockpilingTag)?.stockpiledCount ?? 0) < 3) .attr(AddBattlerTagAttr, BattlerTagType.STOCKPILING, true), - new AttackMove(MoveId.SPIT_UP, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 10, -1, 0, 3) + new AttackMove(MoveId.SPIT_UP, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 3) .condition(hasStockpileStacksCondition) .attr(SpitUpPowerAttr, 100) .attr(RemoveBattlerTagAttr, [ BattlerTagType.STOCKPILING ], true), @@ -9288,8 +9353,8 @@ export function initMoves() { .ignoresSubstitute() .attr(AbilityCopyAttr), new SelfStatusMove(MoveId.WISH, PokemonType.NORMAL, -1, 10, -1, 0, 3) - .triageMove() - .attr(AddArenaTagAttr, ArenaTagType.WISH, 2, true), + .attr(WishAttr) + .triageMove(), new SelfStatusMove(MoveId.ASSIST, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(RandomMovesetMoveAttr, invalidAssistMoves, true), new SelfStatusMove(MoveId.INGRAIN, PokemonType.GRASS, -1, 20, -1, 0, 3) @@ -9466,7 +9531,7 @@ export function initMoves() { new AttackMove(MoveId.SAND_TOMB, PokemonType.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 3) .attr(TrapAttr, BattlerTagType.SAND_TOMB) .makesContact(false), - new AttackMove(MoveId.SHEER_COLD, PokemonType.ICE, MoveCategory.SPECIAL, 200, 20, 5, -1, 0, 3) + new AttackMove(MoveId.SHEER_COLD, PokemonType.ICE, MoveCategory.SPECIAL, 200, 30, 5, -1, 0, 3) .attr(IceNoEffectTypeAttr) .attr(OneHitKOAttr) .attr(SheerColdAccuracyAttr), @@ -9538,9 +9603,12 @@ export function initMoves() { .attr(ConfuseAttr) .pulseMove(), new AttackMove(MoveId.DOOM_DESIRE, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) - .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field + .attr(DelayedAttackAttr, ChargeAnim.DOOM_DESIRE_CHARGING, "moveTriggers:choseDoomDesireAsDestiny") .ignoresProtect() - .attr(DelayedAttackAttr, ArenaTagType.DOOM_DESIRE, ChargeAnim.DOOM_DESIRE_CHARGING, i18next.t("moveTriggers:choseDoomDesireAsDestiny", { pokemonName: "{USER}" })), + /* + * Should not apply abilities or held items if user is off the field + */ + .edgeCase(), new AttackMove(MoveId.PSYCHO_BOOST, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), new SelfStatusMove(MoveId.ROOST, PokemonType.FLYING, -1, 5, -1, 0, 4) @@ -10388,7 +10456,7 @@ export function initMoves() { .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLYING, BattlerTagType.FLOATING, BattlerTagType.TELEKINESIS ]) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(MoveId.THOUSAND_WAVES, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(MoveId.THOUSAND_WAVES, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 6) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), @@ -10795,7 +10863,7 @@ export function initMoves() { new SelfStatusMove(MoveId.NO_RETREAT, PokemonType.FIGHTING, -1, 5, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .attr(AddBattlerTagAttr, BattlerTagType.NO_RETREAT, true, false) - .condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== MoveId.NO_RETREAT), // fails if the user is currently trapped by No Retreat + .condition((user, target, move) => user.getTag(TrappedTag)?.tagType !== BattlerTagType.NO_RETREAT), // fails if the user is currently trapped by No Retreat new StatusMove(MoveId.TAR_SHOT, PokemonType.ROCK, 100, 15, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .attr(AddBattlerTagAttr, BattlerTagType.TAR_SHOT, false) @@ -10923,7 +10991,8 @@ export function initMoves() { new StatusMove(MoveId.LIFE_DEW, PokemonType.WATER, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .target(MoveTarget.USER_AND_ALLIES) - .ignoresProtect(), + .ignoresProtect() + .triageMove(), new SelfStatusMove(MoveId.OBSTRUCT, PokemonType.DARK, 100, 10, -1, 4, 8) .attr(ProtectAttr, BattlerTagType.OBSTRUCT) .condition(failIfLastCondition), @@ -11001,7 +11070,8 @@ export function initMoves() { new StatusMove(MoveId.JUNGLE_HEALING, PokemonType.GRASS, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) - .target(MoveTarget.USER_AND_ALLIES), + .target(MoveTarget.USER_AND_ALLIES) + .triageMove(), new AttackMove(MoveId.WICKED_BLOW, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) .attr(CritOnlyAttr) .punchingMove(), @@ -11229,7 +11299,7 @@ export function initMoves() { .makesContact(false), new AttackMove(MoveId.LUMINA_CRASH, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), - new AttackMove(MoveId.ORDER_UP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) + new AttackMove(MoveId.ORDER_UP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 9) .attr(OrderUpStatBoostAttr) .makesContact(false), new AttackMove(MoveId.JET_PUNCH, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 15, -1, 1, 9) @@ -11412,7 +11482,7 @@ export function initMoves() { .attr(IvyCudgelTypeAttr) .attr(HighCritAttr) .makesContact(false), - new ChargingAttackMove(MoveId.ELECTRO_SHOT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, 100, 0, 9) + new ChargingAttackMove(MoveId.ELECTRO_SHOT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, -1, 0, 9) .chargeText(i18next.t("moveTriggers:absorbedElectricity", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index 1c3335b859f..1c85cb7595c 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -8,9 +8,9 @@ import { BattlerIndex } from "#enums/battler-index"; import { BerryType } from "#enums/berry-type"; import { Challenges } from "#enums/challenges"; import { EncounterAnim } from "#enums/encounter-anims"; -import { MoveCategory } from "#enums/MoveCategory"; import { ModifierPoolType } from "#enums/modifier-pool-type"; import { ModifierTier } from "#enums/modifier-tier"; +import { MoveCategory } from "#enums/move-category"; import { MoveId } from "#enums/move-id"; import { MoveUseMode } from "#enums/move-use-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; diff --git a/src/data/mystery-encounters/encounters/field-trip-encounter.ts b/src/data/mystery-encounters/encounters/field-trip-encounter.ts index 84374c87e58..9c655e70b8c 100644 --- a/src/data/mystery-encounters/encounters/field-trip-encounter.ts +++ b/src/data/mystery-encounters/encounters/field-trip-encounter.ts @@ -1,7 +1,7 @@ import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { globalScene } from "#app/global-scene"; import { modifierTypes } from "#data/data-lists"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index b914927123a..347092fe0b4 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -39,6 +39,7 @@ import { addPokemonDataToDexAndValidateAchievements } from "#mystery-encounters/ import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { PartySizeRequirement } from "#mystery-encounters/mystery-encounter-requirements"; import { PokemonData } from "#system/pokemon-data"; import { MusicPreference } from "#system/settings"; import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; @@ -151,7 +152,8 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = MysteryEncounterBuil return true; }) .withOption( - MysteryEncounterOptionBuilder.newOptionWithMode(MysteryEncounterOptionMode.DEFAULT) + MysteryEncounterOptionBuilder.newOptionWithMode(MysteryEncounterOptionMode.DISABLED_OR_DEFAULT) + .withSceneRequirement(new PartySizeRequirement([2, 6], true)) // Requires 2 valid party members .withHasDexProgress(true) .withDialogue({ buttonLabel: `${namespace}:option.1.label`, @@ -257,7 +259,8 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = MysteryEncounterBuil .build(), ) .withOption( - MysteryEncounterOptionBuilder.newOptionWithMode(MysteryEncounterOptionMode.DEFAULT) + MysteryEncounterOptionBuilder.newOptionWithMode(MysteryEncounterOptionMode.DISABLED_OR_DEFAULT) + .withSceneRequirement(new PartySizeRequirement([2, 6], true)) // Requires 2 valid party members .withHasDexProgress(true) .withDialogue({ buttonLabel: `${namespace}:option.2.label`, diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index b547064fd66..d77326837cd 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -59,7 +59,7 @@ export const TeleportingHijinksEncounter: MysteryEncounter = MysteryEncounterBui ) .withEncounterTier(MysteryEncounterTier.COMMON) .withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES) - .withSceneRequirement(new WaveModulusRequirement([1, 2, 3], 10)) // Must be in first 3 waves after boss wave + .withSceneRequirement(new WaveModulusRequirement([2, 3, 4], 10)) // Must be in first 3 waves after boss wave .withSceneRequirement(new MoneyRequirement(0, MONEY_COST_MULTIPLIER)) // Must be able to pay teleport cost .withAutoHideIntroVisuals(false) .withCatchAllowed(true) diff --git a/src/data/mystery-encounters/mystery-encounter-dialogue.ts b/src/data/mystery-encounters/mystery-encounter-dialogue.ts index 42383940755..385ccb5c246 100644 --- a/src/data/mystery-encounters/mystery-encounter-dialogue.ts +++ b/src/data/mystery-encounters/mystery-encounter-dialogue.ts @@ -1,4 +1,4 @@ -import type { TextStyle } from "#ui/text"; +import type { TextStyle } from "#enums/text-style"; export class TextDisplay { speaker?: string; diff --git a/src/data/mystery-encounters/mystery-encounter.ts b/src/data/mystery-encounters/mystery-encounter.ts index a2ca2b20ce7..47dfe58cace 100644 --- a/src/data/mystery-encounters/mystery-encounter.ts +++ b/src/data/mystery-encounters/mystery-encounter.ts @@ -25,7 +25,8 @@ import { StatusEffectRequirement, WaveRangeRequirement, } from "#mystery-encounters/mystery-encounter-requirements"; -import { capitalizeFirstLetter, coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common"; +import { coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common"; +import { capitalizeFirstLetter } from "#utils/strings"; export interface EncounterStartOfBattleEffect { sourcePokemon?: Pokemon; diff --git a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts index 4f4af94a88d..1ae0659b29e 100644 --- a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; +import type { TextStyle } from "#enums/text-style"; import { UiTheme } from "#enums/ui-theme"; -import type { TextStyle } from "#ui/text"; import { getTextWithColors } from "#ui/text"; import { isNullOrUndefined } from "#utils/common"; import i18next from "i18next"; diff --git a/src/data/nature.ts b/src/data/nature.ts index 4f4e627daf3..b085faebb80 100644 --- a/src/data/nature.ts +++ b/src/data/nature.ts @@ -1,8 +1,9 @@ import { Nature } from "#enums/nature"; import { EFFECTIVE_STATS, getShortenedStatKey, Stat } from "#enums/stat"; +import { TextStyle } from "#enums/text-style"; import { UiTheme } from "#enums/ui-theme"; -import { getBBCodeFrag, TextStyle } from "#ui/text"; -import { toReadableString } from "#utils/common"; +import { getBBCodeFrag } from "#ui/text"; +import { toTitleCase } from "#utils/strings"; import i18next from "i18next"; export function getNatureName( @@ -12,7 +13,7 @@ export function getNatureName( ignoreBBCode = false, uiTheme: UiTheme = UiTheme.DEFAULT, ): string { - let ret = toReadableString(Nature[nature]); + let ret = toTitleCase(Nature[nature]); //Translating nature if (i18next.exists(`nature:${ret}`)) { ret = i18next.t(`nature:${ret}` as any); diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index 6d1db296e55..5a50713c5a9 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -18,7 +18,7 @@ import { } from "#data/form-change-triggers"; import { AbilityId } from "#enums/ability-id"; import { FormChangeItem } from "#enums/form-change-item"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { MoveId } from "#enums/move-id"; import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesId } from "#enums/species-id"; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 140b03e6d4c..7bfe02d9086 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -12,14 +12,13 @@ import { pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves, } from "#balance/pokemon-level-moves"; -import { POKERUS_STARTER_COUNT, speciesStarterCosts } from "#balance/starters"; -import { allSpecies } from "#data/data-lists"; -import { GrowthRate } from "#data/exp"; +import { speciesStarterCosts } from "#balance/starters"; +import type { GrowthRate } from "#data/exp"; import { Gender } from "#data/gender"; import { AbilityId } from "#enums/ability-id"; import { DexAttr } from "#enums/dex-attr"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import { PokemonType } from "#enums/pokemon-type"; +import type { PokemonType } from "#enums/pokemon-type"; import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesId } from "#enums/species-id"; import type { Stat } from "#enums/stat"; @@ -29,15 +28,9 @@ import type { Variant, VariantSet } from "#sprites/variant"; import { populateVariantColorCache, variantColorCache, variantData } from "#sprites/variant"; import type { StarterMoveset } from "#system/game-data"; import type { Localizable } from "#types/locales"; -import { - capitalizeString, - isNullOrUndefined, - randSeedFloat, - randSeedGauss, - randSeedInt, - randSeedItem, -} from "#utils/common"; +import { isNullOrUndefined, randSeedFloat, randSeedGauss, randSeedInt } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { toCamelCase, toPascalCase } from "#utils/strings"; import { argbFromRgba, QuantizerCelebi, rgbaFromArgb } from "@material/material-color-utilities"; import i18next from "i18next"; @@ -80,83 +73,6 @@ export const normalForm: SpeciesId[] = [ SpeciesId.CALYREX, ]; -export function getPokemonSpeciesForm(species: SpeciesId, formIndex: number): PokemonSpeciesForm { - const retSpecies: PokemonSpecies = - species >= 2000 - ? allSpecies.find(s => s.speciesId === species)! // TODO: is the bang correct? - : allSpecies[species - 1]; - if (formIndex < retSpecies.forms?.length) { - return retSpecies.forms[formIndex]; - } - return retSpecies; -} - -export function getFusedSpeciesName(speciesAName: string, speciesBName: string): string { - const fragAPattern = /([a-z]{2}.*?[aeiou(?:y$)\-']+)(.*?)$/i; - const fragBPattern = /([a-z]{2}.*?[aeiou(?:y$)\-'])(.*?)$/i; - - const [speciesAPrefixMatch, speciesBPrefixMatch] = [speciesAName, speciesBName].map(n => /^(?:[^ ]+) /.exec(n)); - const [speciesAPrefix, speciesBPrefix] = [speciesAPrefixMatch, speciesBPrefixMatch].map(m => (m ? m[0] : "")); - - if (speciesAPrefix) { - speciesAName = speciesAName.slice(speciesAPrefix.length); - } - if (speciesBPrefix) { - speciesBName = speciesBName.slice(speciesBPrefix.length); - } - - const [speciesASuffixMatch, speciesBSuffixMatch] = [speciesAName, speciesBName].map(n => / (?:[^ ]+)$/.exec(n)); - const [speciesASuffix, speciesBSuffix] = [speciesASuffixMatch, speciesBSuffixMatch].map(m => (m ? m[0] : "")); - - if (speciesASuffix) { - speciesAName = speciesAName.slice(0, -speciesASuffix.length); - } - if (speciesBSuffix) { - speciesBName = speciesBName.slice(0, -speciesBSuffix.length); - } - - const splitNameA = speciesAName.split(/ /g); - const splitNameB = speciesBName.split(/ /g); - - const fragAMatch = fragAPattern.exec(speciesAName); - const fragBMatch = fragBPattern.exec(speciesBName); - - let fragA: string; - let fragB: string; - - fragA = splitNameA.length === 1 ? (fragAMatch ? fragAMatch[1] : speciesAName) : splitNameA[splitNameA.length - 1]; - - if (splitNameB.length === 1) { - if (fragBMatch) { - const lastCharA = fragA.slice(fragA.length - 1); - const prevCharB = fragBMatch[1].slice(fragBMatch.length - 1); - fragB = (/[-']/.test(prevCharB) ? prevCharB : "") + fragBMatch[2] || prevCharB; - if (lastCharA === fragB[0]) { - if (/[aiu]/.test(lastCharA)) { - fragB = fragB.slice(1); - } else { - const newCharMatch = new RegExp(`[^${lastCharA}]`).exec(fragB); - if (newCharMatch?.index !== undefined && newCharMatch.index > 0) { - fragB = fragB.slice(newCharMatch.index); - } - } - } - } else { - fragB = speciesBName; - } - } else { - fragB = splitNameB[splitNameB.length - 1]; - } - - if (splitNameA.length > 1) { - fragA = `${splitNameA.slice(0, splitNameA.length - 1).join(" ")} ${fragA}`; - } - - fragB = `${fragB.slice(0, 1).toLowerCase()}${fragB.slice(1)}`; - - return `${speciesAPrefix || speciesBPrefix}${fragA}${fragB}${speciesBSuffix || speciesASuffix}`; -} - export type PokemonSpeciesFilter = (species: PokemonSpecies) => boolean; export abstract class PokemonSpeciesForm { @@ -904,14 +820,14 @@ export class PokemonSpecies extends PokemonSpeciesForm implements Localizable { * @returns the pokemon-form locale key for the single form name ("Alolan Form", "Eternal Flower" etc) */ getFormNameToDisplay(formIndex = 0, append = false): string { - const formKey = this.forms?.[formIndex!]?.formKey; - const formText = capitalizeString(formKey, "-", false, false) || ""; - const speciesName = capitalizeString(SpeciesId[this.speciesId], "_", true, false); + const formKey = this.forms[formIndex]?.formKey ?? ""; + const formText = toPascalCase(formKey); + const speciesName = toCamelCase(SpeciesId[this.speciesId]); let ret = ""; const region = this.getRegion(); if (this.speciesId === SpeciesId.ARCEUS) { - ret = i18next.t(`pokemonInfo:Type.${formText?.toUpperCase()}`); + ret = i18next.t(`pokemonInfo:Type.${formText.toUpperCase()}`); } else if ( [ SpeciesFormKey.MEGA, @@ -937,7 +853,7 @@ export class PokemonSpecies extends PokemonSpeciesForm implements Localizable { if (i18next.exists(i18key)) { ret = i18next.t(i18key); } else { - const rootSpeciesName = capitalizeString(SpeciesId[this.getRootSpeciesId()], "_", true, false); + const rootSpeciesName = toCamelCase(SpeciesId[this.getRootSpeciesId()]); const i18RootKey = `pokemonForm:${rootSpeciesName}${formText}`; ret = i18next.exists(i18RootKey) ? i18next.t(i18RootKey) : formText; } @@ -1405,1804 +1321,3 @@ export class PokemonForm extends PokemonSpeciesForm { return this.formSpriteKey !== null ? this.formSpriteKey : this.formKey; } } - -/** - * Method to get the daily list of starters with Pokerus. - * @returns A list of starters with Pokerus - */ -export function getPokerusStarters(): PokemonSpecies[] { - const pokerusStarters: PokemonSpecies[] = []; - const date = new Date(); - date.setUTCHours(0, 0, 0, 0); - globalScene.executeWithSeedOffset( - () => { - while (pokerusStarters.length < POKERUS_STARTER_COUNT) { - const randomSpeciesId = Number.parseInt(randSeedItem(Object.keys(speciesStarterCosts)), 10); - const species = getPokemonSpecies(randomSpeciesId); - if (!pokerusStarters.includes(species)) { - pokerusStarters.push(species); - } - } - }, - 0, - date.getTime().toString(), - ); - return pokerusStarters; -} - -// biome-ignore format: manually formatted -export function initSpecies() { - allSpecies.push( - new PokemonSpecies(SpeciesId.BULBASAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 6.9, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 318, 45, 49, 49, 65, 65, 45, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.IVYSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 13, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 405, 60, 62, 63, 80, 80, 60, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.VENUSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 2, 100, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.POISON, 2, 100, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.POISON, 2.4, 155.5, AbilityId.THICK_FAT, AbilityId.THICK_FAT, AbilityId.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.POISON, 24, 999.9, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.EFFECT_SPORE, 625, 120, 122, 90, 108, 105, 80, 45, 50, 263, true), - ), - new PokemonSpecies(SpeciesId.CHARMANDER, 1, false, false, false, "Lizard Pokémon", PokemonType.FIRE, null, 0.6, 8.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CHARMELEON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 1.1, 19, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CHARIZARD, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), - new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.FIRE, PokemonType.DRAGON, 1.7, 110.5, AbilityId.TOUGH_CLAWS, AbilityId.NONE, AbilityId.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), - new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.FIRE, PokemonType.FLYING, 1.7, 100.5, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.FLYING, 28, 999.9, AbilityId.BERSERK, AbilityId.NONE, AbilityId.BERSERK, 634, 118, 99, 88, 134, 95, 100, 45, 50, 267), - ), - new PokemonSpecies(SpeciesId.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", PokemonType.WATER, null, 0.5, 9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.WARTORTLE, 1, false, false, false, "Turtle Pokémon", PokemonType.WATER, null, 1, 22.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", PokemonType.WATER, null, 1.6, 85.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 1.6, 85.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, null, 1.6, 101.1, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.STEEL, 25, 999.9, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.SHELL_ARMOR, 630, 119, 108, 125, 105, 110, 63, 45, 50, 265), - ), - new PokemonSpecies(SpeciesId.CATERPIE, 1, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 2.9, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.METAPOD, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 9.9, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.FLYING, 17, 999.9, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.COMPOUND_EYES, 495, 80, 40, 75, 120, 95, 85, 45, 50, 198, true), - ), - new PokemonSpecies(SpeciesId.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", PokemonType.BUG, PokemonType.POISON, 0.3, 3.2, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.KAKUNA, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, PokemonType.POISON, 0.6, 10, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 29.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.POISON, 1, 29.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.POISON, 1.4, 40.5, AbilityId.ADAPTABILITY, AbilityId.NONE, AbilityId.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198), - ), - new PokemonSpecies(SpeciesId.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.8, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 30, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.PIDGEOT, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FLYING, 2.2, 50.5, AbilityId.NO_GUARD, AbilityId.NO_GUARD, AbilityId.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240), - ), - new PokemonSpecies(SpeciesId.RATTATA, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.3, 3.5, AbilityId.RUN_AWAY, AbilityId.GUTS, AbilityId.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.RATICATE, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.7, 18.5, AbilityId.RUN_AWAY, AbilityId.GUTS, AbilityId.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.SPEAROW, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.SNIPER, 262, 40, 60, 30, 31, 31, 70, 255, 70, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FEAROW, 1, false, false, false, "Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 38, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.SNIPER, 442, 65, 90, 65, 61, 61, 100, 90, 70, 155, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.EKANS, 1, false, false, false, "Snake Pokémon", PokemonType.POISON, null, 2, 6.9, AbilityId.INTIMIDATE, AbilityId.SHED_SKIN, AbilityId.UNNERVE, 288, 35, 60, 44, 40, 54, 55, 255, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ARBOK, 1, false, false, false, "Cobra Pokémon", PokemonType.POISON, null, 3.5, 65, AbilityId.INTIMIDATE, AbilityId.SHED_SKIN, AbilityId.UNNERVE, 448, 60, 95, 69, 65, 79, 80, 90, 70, 157, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PIKACHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, true, null, true), - new PokemonForm("Partner", "partner", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), - new PokemonForm("Cosplay", "cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Cool Cosplay", "cool-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Beauty Cosplay", "beauty-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Cute Cosplay", "cute-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Smart Cosplay", "smart-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Tough Cosplay", "tough-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, null, 21, 999.9, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112), //+100 BST from Partner Form - ), - new PokemonSpecies(SpeciesId.RAICHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.8, 30, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.SANDSHREW, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 0.6, 12, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SANDSLASH, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 1, 29.5, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.SAND_RUSH, 450, 75, 100, 110, 45, 55, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.NIDORAN_F, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.4, 7, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 275, 55, 47, 52, 40, 40, 41, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.NIDORINA, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.8, 20, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 365, 70, 62, 67, 55, 55, 56, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.NIDOQUEEN, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.3, 60, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.SHEER_FORCE, 505, 90, 92, 87, 75, 85, 76, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.NIDORAN_M, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.5, 9, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 273, 46, 57, 40, 40, 40, 50, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(SpeciesId.NIDORINO, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.9, 19.5, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 365, 61, 72, 57, 55, 55, 65, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(SpeciesId.NIDOKING, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.4, 62, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.SHEER_FORCE, 505, 81, 102, 77, 85, 75, 85, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(SpeciesId.CLEFAIRY, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.5, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.FRIEND_GUARD, 323, 70, 45, 48, 60, 65, 35, 150, 140, 113, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.CLEFABLE, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.3, 40, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.UNAWARE, 483, 95, 70, 73, 95, 90, 60, 25, 140, 242, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.VULPIX, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.6, 9.9, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.DROUGHT, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(SpeciesId.NINETALES, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1.1, 19.9, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.DROUGHT, 505, 73, 76, 75, 81, 100, 100, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(SpeciesId.JIGGLYPUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.5, 5.5, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRIEND_GUARD, 270, 115, 45, 20, 45, 25, 20, 170, 50, 95, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.WIGGLYTUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 1, 12, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRISK, 435, 140, 70, 45, 85, 50, 45, 50, 50, 218, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.ZUBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 0.8, 7.5, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 245, 40, 45, 35, 30, 40, 55, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.GOLBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.6, 55, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 455, 75, 80, 70, 65, 75, 90, 90, 50, 159, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.ODDISH, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.5, 5.4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.RUN_AWAY, 320, 45, 50, 55, 75, 65, 30, 255, 50, 64, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GLOOM, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.8, 8.6, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.STENCH, 395, 60, 65, 70, 85, 75, 40, 120, 50, 138, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.VILEPLUME, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.2, 18.6, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.EFFECT_SPORE, 490, 75, 80, 85, 110, 90, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.PARAS, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 5.4, AbilityId.EFFECT_SPORE, AbilityId.DRY_SKIN, AbilityId.DAMP, 285, 35, 70, 55, 45, 55, 25, 190, 70, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PARASECT, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 1, 29.5, AbilityId.EFFECT_SPORE, AbilityId.DRY_SKIN, AbilityId.DAMP, 405, 60, 95, 80, 60, 80, 30, 75, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.VENONAT, 1, false, false, false, "Insect Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 30, AbilityId.COMPOUND_EYES, AbilityId.TINTED_LENS, AbilityId.RUN_AWAY, 305, 60, 55, 50, 40, 55, 45, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.VENOMOTH, 1, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.5, 12.5, AbilityId.SHIELD_DUST, AbilityId.TINTED_LENS, AbilityId.WONDER_SKIN, 450, 70, 65, 60, 90, 75, 90, 75, 70, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DIGLETT, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.2, 0.8, AbilityId.SAND_VEIL, AbilityId.ARENA_TRAP, AbilityId.SAND_FORCE, 265, 10, 55, 25, 35, 45, 95, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DUGTRIO, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.7, 33.3, AbilityId.SAND_VEIL, AbilityId.ARENA_TRAP, AbilityId.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", PokemonType.NORMAL, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 33, 999.9, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58), //+100 BST from Persian - ), - new PokemonSpecies(SpeciesId.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", PokemonType.NORMAL, null, 1, 32, AbilityId.LIMBER, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PSYDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 0.8, 19.6, AbilityId.DAMP, AbilityId.CLOUD_NINE, AbilityId.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GOLDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 1.7, 76.6, AbilityId.DAMP, AbilityId.CLOUD_NINE, AbilityId.SWIFT_SWIM, 500, 80, 82, 78, 95, 80, 85, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MANKEY, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 0.5, 28, AbilityId.VITAL_SPIRIT, AbilityId.ANGER_POINT, AbilityId.DEFIANT, 305, 40, 80, 35, 35, 45, 70, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PRIMEAPE, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 1, 32, AbilityId.VITAL_SPIRIT, AbilityId.ANGER_POINT, AbilityId.DEFIANT, 455, 65, 105, 60, 60, 70, 95, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GROWLITHE, 1, false, false, false, "Puppy Pokémon", PokemonType.FIRE, null, 0.7, 19, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.JUSTIFIED, 350, 55, 70, 45, 70, 50, 60, 190, 50, 70, GrowthRate.SLOW, 75, false), - new PokemonSpecies(SpeciesId.ARCANINE, 1, false, false, false, "Legendary Pokémon", PokemonType.FIRE, null, 1.9, 155, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.JUSTIFIED, 555, 90, 110, 80, 100, 80, 95, 75, 50, 194, GrowthRate.SLOW, 75, false), - new PokemonSpecies(SpeciesId.POLIWAG, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.6, 12.4, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 300, 40, 50, 40, 40, 40, 90, 255, 50, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.POLIWHIRL, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 1, 20, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 385, 65, 65, 65, 50, 50, 90, 120, 50, 135, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.POLIWRATH, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.3, 54, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 510, 90, 95, 95, 70, 90, 70, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 0.9, 19.5, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 310, 25, 20, 15, 105, 55, 90, 200, 50, 62, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(SpeciesId.KADABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.3, 56.5, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 400, 40, 35, 30, 120, 70, 105, 100, 50, 140, GrowthRate.MEDIUM_SLOW, 75, true), - new PokemonSpecies(SpeciesId.ALAKAZAM, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.5, 48, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, GrowthRate.MEDIUM_SLOW, 75, true, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 1.5, 48, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, null, 1.2, 48, AbilityId.TRACE, AbilityId.TRACE, AbilityId.TRACE, 600, 55, 50, 65, 175, 105, 150, 50, 50, 250, true), - ), - new PokemonSpecies(SpeciesId.MACHOP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 0.8, 19.5, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 305, 70, 80, 50, 35, 35, 35, 180, 50, 61, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(SpeciesId.MACHOKE, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.5, 70.5, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(SpeciesId.MACHAMP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.6, 130, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, null, 1.6, 130, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIGHTING, null, 25, 999.9, AbilityId.GUTS, AbilityId.GUTS, AbilityId.GUTS, 605, 120, 170, 85, 75, 90, 65, 45, 50, 253), - ), - new PokemonSpecies(SpeciesId.BELLSPROUT, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 6.4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.7, 15.5, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 0.9, 45.5, AbilityId.CLEAR_BODY, AbilityId.LIQUID_OOZE, AbilityId.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 1.6, 55, AbilityId.CLEAR_BODY, AbilityId.LIQUID_OOZE, AbilityId.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.GEODUDE, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.4, 20, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GRAVELER, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1, 105, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GOLEM, 1, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.4, 300, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.PONYTA, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1, 30, AbilityId.RUN_AWAY, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1.7, 95, AbilityId.RUN_AWAY, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.2, 36, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SLOWBRO, 1, false, false, false, "Hermit Crab Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.PSYCHIC, 2, 120, AbilityId.SHELL_ARMOR, AbilityId.SHELL_ARMOR, AbilityId.SHELL_ARMOR, 590, 95, 75, 180, 130, 80, 30, 75, 50, 172), - ), - new PokemonSpecies(SpeciesId.MAGNEMITE, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 6, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 325, 25, 35, 70, 95, 55, 45, 190, 50, 65, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.MAGNETON, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1, 60, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 465, 50, 60, 95, 120, 70, 70, 60, 50, 163, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.FARFETCHD, 1, false, false, false, "Wild Duck Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.8, 15, AbilityId.KEEN_EYE, AbilityId.INNER_FOCUS, AbilityId.DEFIANT, 377, 52, 90, 55, 58, 62, 60, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DODUO, 1, false, false, false, "Twin Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.4, 39.2, AbilityId.RUN_AWAY, AbilityId.EARLY_BIRD, AbilityId.TANGLED_FEET, 310, 35, 85, 45, 35, 35, 75, 190, 70, 62, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.DODRIO, 1, false, false, false, "Triple Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.8, 85.2, AbilityId.RUN_AWAY, AbilityId.EARLY_BIRD, AbilityId.TANGLED_FEET, 470, 60, 110, 70, 60, 60, 110, 45, 70, 165, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.SEEL, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 1.1, 90, AbilityId.THICK_FAT, AbilityId.HYDRATION, AbilityId.ICE_BODY, 325, 65, 45, 55, 45, 70, 45, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DEWGONG, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, PokemonType.ICE, 1.7, 120, AbilityId.THICK_FAT, AbilityId.HYDRATION, AbilityId.ICE_BODY, 475, 90, 70, 80, 70, 95, 70, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GRIMER, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 0.9, 30, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.POISON_TOUCH, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MUK, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 1.2, 30, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.POISON_TOUCH, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SHELLDER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.3, 4, AbilityId.SHELL_ARMOR, AbilityId.SKILL_LINK, AbilityId.OVERCOAT, 305, 30, 65, 100, 45, 25, 40, 190, 50, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CLOYSTER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, PokemonType.ICE, 1.5, 132.5, AbilityId.SHELL_ARMOR, AbilityId.SKILL_LINK, AbilityId.OVERCOAT, 525, 50, 95, 180, 85, 45, 70, 60, 50, 184, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.GASTLY, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.3, 0.1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 310, 30, 35, 30, 100, 35, 80, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.HAUNTER, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.6, 0.1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 405, 45, 50, 45, 115, 55, 95, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GENGAR, 1, false, false, false, "Shadow Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, PokemonType.POISON, 1.4, 40.5, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GHOST, PokemonType.POISON, 20, 999.9, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250), - ), - new PokemonSpecies(SpeciesId.ONIX, 1, false, false, false, "Rock Snake Pokémon", PokemonType.ROCK, PokemonType.GROUND, 8.8, 210, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1, 32.4, AbilityId.INSOMNIA, AbilityId.FOREWARN, AbilityId.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HYPNO, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1.6, 75.6, AbilityId.INSOMNIA, AbilityId.FOREWARN, AbilityId.INNER_FOCUS, 483, 85, 73, 70, 73, 115, 67, 75, 70, 169, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.KRABBY, 1, false, false, false, "River Crab Pokémon", PokemonType.WATER, null, 0.4, 6.5, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.KINGLER, 1, false, false, false, "Pincer Pokémon", PokemonType.WATER, null, 1.3, 60, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 1.3, 60, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 19, 999.9, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 575, 92, 145, 140, 60, 65, 73, 60, 50, 166), - ), - new PokemonSpecies(SpeciesId.VOLTORB, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 0.5, 10.4, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.ELECTRODE, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 1.2, 66.6, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.EXEGGCUTE, 1, false, false, false, "Egg Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 0.4, 2.5, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HARVEST, 325, 60, 40, 80, 60, 45, 40, 90, 50, 65, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.EXEGGUTOR, 1, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 2, 120, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HARVEST, 530, 95, 95, 85, 125, 75, 55, 45, 50, 186, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CUBONE, 1, false, false, false, "Lonely Pokémon", PokemonType.GROUND, null, 0.4, 6.5, AbilityId.ROCK_HEAD, AbilityId.LIGHTNING_ROD, AbilityId.BATTLE_ARMOR, 320, 50, 50, 95, 40, 50, 35, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MAROWAK, 1, false, false, false, "Bone Keeper Pokémon", PokemonType.GROUND, null, 1, 45, AbilityId.ROCK_HEAD, AbilityId.LIGHTNING_ROD, AbilityId.BATTLE_ARMOR, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HITMONLEE, 1, false, false, false, "Kicking Pokémon", PokemonType.FIGHTING, null, 1.5, 49.8, AbilityId.LIMBER, AbilityId.RECKLESS, AbilityId.UNBURDEN, 455, 50, 120, 53, 35, 110, 87, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.HITMONCHAN, 1, false, false, false, "Punching Pokémon", PokemonType.FIGHTING, null, 1.4, 50.2, AbilityId.KEEN_EYE, AbilityId.IRON_FIST, AbilityId.INNER_FOCUS, 455, 50, 105, 79, 35, 110, 76, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.LICKITUNG, 1, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.2, 65.5, AbilityId.OWN_TEMPO, AbilityId.OBLIVIOUS, AbilityId.CLOUD_NINE, 385, 90, 55, 75, 60, 75, 30, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.KOFFING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 0.6, 1, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.STENCH, 340, 40, 65, 95, 60, 45, 35, 190, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WEEZING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 1.2, 9.5, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.STENCH, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RHYHORN, 1, false, false, false, "Spikes Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1, 115, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, AbilityId.RECKLESS, 345, 80, 85, 95, 30, 30, 25, 120, 50, 69, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.RHYDON, 1, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1.9, 120, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, AbilityId.RECKLESS, 485, 105, 130, 120, 45, 45, 40, 60, 50, 170, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.CHANSEY, 1, false, false, false, "Egg Pokémon", PokemonType.NORMAL, null, 1.1, 34.6, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.HEALER, 450, 250, 5, 5, 35, 105, 50, 30, 140, 395, GrowthRate.FAST, 0, false), - new PokemonSpecies(SpeciesId.TANGELA, 1, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 1, 35, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.REGENERATOR, 435, 65, 55, 115, 100, 40, 60, 45, 50, 87, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.KANGASKHAN, 1, false, false, false, "Parent Pokémon", PokemonType.NORMAL, null, 2.2, 80, AbilityId.EARLY_BIRD, AbilityId.SCRAPPY, AbilityId.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, GrowthRate.MEDIUM_FAST, 0, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.2, 80, AbilityId.EARLY_BIRD, AbilityId.SCRAPPY, AbilityId.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, null, 2.2, 100, AbilityId.PARENTAL_BOND, AbilityId.PARENTAL_BOND, AbilityId.PARENTAL_BOND, 590, 105, 125, 100, 60, 100, 100, 45, 50, 172), - ), - new PokemonSpecies(SpeciesId.HORSEA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 0.4, 8, AbilityId.SWIFT_SWIM, AbilityId.SNIPER, AbilityId.DAMP, 295, 30, 40, 70, 70, 25, 60, 225, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SEADRA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 1.2, 25, AbilityId.POISON_POINT, AbilityId.SNIPER, AbilityId.DAMP, 440, 55, 65, 95, 95, 45, 85, 75, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GOLDEEN, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 0.6, 15, AbilityId.SWIFT_SWIM, AbilityId.WATER_VEIL, AbilityId.LIGHTNING_ROD, 320, 45, 67, 60, 35, 50, 63, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.SEAKING, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 1.3, 39, AbilityId.SWIFT_SWIM, AbilityId.WATER_VEIL, AbilityId.LIGHTNING_ROD, 450, 80, 92, 65, 65, 80, 68, 60, 50, 158, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.STARYU, 1, false, false, false, "Star Shape Pokémon", PokemonType.WATER, null, 0.8, 34.5, AbilityId.ILLUMINATE, AbilityId.NATURAL_CURE, AbilityId.ANALYTIC, 340, 30, 45, 55, 70, 55, 85, 225, 50, 68, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.STARMIE, 1, false, false, false, "Mysterious Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.1, 80, AbilityId.ILLUMINATE, AbilityId.NATURAL_CURE, AbilityId.ANALYTIC, 520, 60, 75, 85, 100, 85, 115, 60, 50, 182, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.MR_MIME, 1, false, false, false, "Barrier Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.3, 54.5, AbilityId.SOUNDPROOF, AbilityId.FILTER, AbilityId.TECHNICIAN, 460, 40, 45, 65, 100, 120, 90, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SCYTHER, 1, false, false, false, "Mantis Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.5, 56, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.STEADFAST, 500, 70, 110, 80, 55, 80, 105, 45, 50, 100, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.JYNX, 1, false, false, false, "Human Shape Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 40.6, AbilityId.OBLIVIOUS, AbilityId.FOREWARN, AbilityId.DRY_SKIN, 455, 65, 50, 35, 115, 95, 95, 45, 50, 159, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.ELECTABUZZ, 1, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 1.1, 30, AbilityId.STATIC, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 490, 65, 83, 57, 95, 85, 105, 45, 50, 172, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(SpeciesId.MAGMAR, 1, false, false, false, "Spitfire Pokémon", PokemonType.FIRE, null, 1.3, 44.5, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 495, 65, 95, 57, 100, 85, 93, 45, 50, 173, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(SpeciesId.PINSIR, 1, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, null, 1.5, 55, AbilityId.HYPER_CUTTER, AbilityId.MOLD_BREAKER, AbilityId.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, null, 1.5, 55, AbilityId.HYPER_CUTTER, AbilityId.MOLD_BREAKER, AbilityId.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FLYING, 1.7, 59, AbilityId.AERILATE, AbilityId.AERILATE, AbilityId.AERILATE, 600, 65, 155, 120, 65, 90, 105, 45, 50, 175), - ), - new PokemonSpecies(SpeciesId.TAUROS, 1, false, false, false, "Wild Bull Pokémon", PokemonType.NORMAL, null, 1.4, 88.4, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.SHEER_FORCE, 490, 75, 100, 95, 40, 70, 110, 45, 50, 172, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.MAGIKARP, 1, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.9, 10, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.RATTLED, 200, 20, 10, 55, 15, 20, 80, 255, 50, 40, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.GYARADOS, 1, false, false, false, "Atrocious Pokémon", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 6.5, 305, AbilityId.MOLD_BREAKER, AbilityId.MOLD_BREAKER, AbilityId.MOLD_BREAKER, 640, 95, 155, 109, 70, 130, 81, 45, 50, 189, true), - ), - new PokemonSpecies(SpeciesId.LAPRAS, 1, false, false, false, "Transport Pokémon", PokemonType.WATER, PokemonType.ICE, 2.5, 220, AbilityId.WATER_ABSORB, AbilityId.SHELL_ARMOR, AbilityId.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ICE, 2.5, 220, AbilityId.WATER_ABSORB, AbilityId.SHELL_ARMOR, AbilityId.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ICE, 24, 999.9, AbilityId.SHIELD_DUST, AbilityId.SHIELD_DUST, AbilityId.SHIELD_DUST, 635, 170, 97, 85, 107, 111, 65, 45, 50, 187), - ), - new PokemonSpecies(SpeciesId.DITTO, 1, false, false, false, "Transform Pokémon", PokemonType.NORMAL, null, 0.3, 4, AbilityId.LIMBER, AbilityId.NONE, AbilityId.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.EEVEE, 1, false, false, false, "Evolution Pokémon", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), - new PokemonForm("Partner", "partner", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 18, 999.9, AbilityId.PROTEAN, AbilityId.PROTEAN, AbilityId.PROTEAN, 535, 110, 95, 70, 90, 85, 85, 45, 50, 65), //+100 BST from Partner Form - ), - new PokemonSpecies(SpeciesId.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", PokemonType.WATER, null, 1, 29, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.JOLTEON, 1, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.8, 24.5, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.FLAREON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 0.9, 25, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.GUTS, 525, 65, 130, 60, 95, 110, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.PORYGON, 1, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.8, 36.5, AbilityId.TRACE, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 395, 65, 60, 70, 85, 75, 40, 45, 50, 79, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.OMANYTE, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.4, 7.5, AbilityId.SWIFT_SWIM, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 355, 35, 40, 100, 90, 55, 35, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.OMASTAR, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 1, 35, AbilityId.SWIFT_SWIM, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 495, 70, 60, 125, 115, 70, 55, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.KABUTO, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 11.5, AbilityId.SWIFT_SWIM, AbilityId.BATTLE_ARMOR, AbilityId.WEAK_ARMOR, 355, 30, 80, 90, 55, 45, 55, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.KABUTOPS, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 40.5, AbilityId.SWIFT_SWIM, AbilityId.BATTLE_ARMOR, AbilityId.WEAK_ARMOR, 495, 60, 115, 105, 65, 70, 80, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.AERODACTYL, 1, false, false, false, "Fossil Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, AbilityId.ROCK_HEAD, AbilityId.PRESSURE, AbilityId.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, AbilityId.ROCK_HEAD, AbilityId.PRESSURE, AbilityId.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FLYING, 2.1, 79, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 615, 80, 135, 85, 70, 95, 150, 45, 50, 180), - ), - new PokemonSpecies(SpeciesId.SNORLAX, 1, false, false, false, "Sleeping Pokémon", PokemonType.NORMAL, null, 2.1, 460, AbilityId.IMMUNITY, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.1, 460, AbilityId.IMMUNITY, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 35, 999.9, AbilityId.HARVEST, AbilityId.HARVEST, AbilityId.HARVEST, 640, 210, 135, 70, 90, 115, 20, 25, 50, 189), - ), - new PokemonSpecies(SpeciesId.ARTICUNO, 1, true, false, false, "Freeze Pokémon", PokemonType.ICE, PokemonType.FLYING, 1.7, 55.4, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ZAPDOS, 1, true, false, false, "Electric Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.6, 52.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.MOLTRES, 1, true, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 2, 60, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FLAME_BODY, 580, 90, 100, 90, 125, 85, 90, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.DRATINI, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 1.8, 3.3, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.MARVEL_SCALE, 300, 41, 64, 45, 50, 50, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.DRAGONAIR, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 4, 16.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.MARVEL_SCALE, 420, 61, 84, 65, 70, 70, 70, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.DRAGONITE, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 2.2, 210, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.MULTISCALE, 600, 91, 134, 95, 100, 100, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.MEWTWO, 1, false, true, false, "Genetic Pokémon", PokemonType.PSYCHIC, null, 2, 122, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2, 122, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, false, null, true), - new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.PSYCHIC, PokemonType.FIGHTING, 2.3, 127, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.STEADFAST, 780, 106, 190, 100, 154, 100, 130, 3, 0, 340), - new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.PSYCHIC, null, 1.5, 33, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.INSOMNIA, 780, 106, 150, 70, 194, 120, 140, 3, 0, 340), - ), - new PokemonSpecies(SpeciesId.MEW, 1, false, false, true, "New Species Pokémon", PokemonType.PSYCHIC, null, 0.4, 4, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(SpeciesId.CHIKORITA, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 0.9, 6.4, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.BAYLEEF, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 1.2, 15.8, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.MEGANIUM, 2, false, false, false, "Herb Pokémon", PokemonType.GRASS, null, 1.8, 100.5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(SpeciesId.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", PokemonType.FIRE, null, 0.5, 7.9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.QUILAVA, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 0.9, 19, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 1.7, 79.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 0.6, 9.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 1.1, 25, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 2.3, 88.8, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SENTRET, 2, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.8, 6, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FURRET, 2, false, false, false, "Long Body Pokémon", PokemonType.NORMAL, null, 1.8, 32.5, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HOOTHOOT, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 21.2, AbilityId.INSOMNIA, AbilityId.KEEN_EYE, AbilityId.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.NOCTOWL, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.6, 40.8, AbilityId.INSOMNIA, AbilityId.KEEN_EYE, AbilityId.TINTED_LENS, 452, 100, 50, 50, 86, 96, 70, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LEDYBA, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 10.8, AbilityId.SWARM, AbilityId.EARLY_BIRD, AbilityId.RATTLED, 265, 40, 20, 30, 40, 80, 55, 255, 70, 53, GrowthRate.FAST, 50, true), - new PokemonSpecies(SpeciesId.LEDIAN, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.4, 35.6, AbilityId.SWARM, AbilityId.EARLY_BIRD, AbilityId.IRON_FIST, 390, 55, 35, 50, 55, 110, 85, 90, 70, 137, GrowthRate.FAST, 50, true), - new PokemonSpecies(SpeciesId.SPINARAK, 2, false, false, false, "String Spit Pokémon", PokemonType.BUG, PokemonType.POISON, 0.5, 8.5, AbilityId.SWARM, AbilityId.INSOMNIA, AbilityId.SNIPER, 250, 40, 60, 40, 40, 40, 30, 255, 70, 50, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.ARIADOS, 2, false, false, false, "Long Leg Pokémon", PokemonType.BUG, PokemonType.POISON, 1.1, 33.5, AbilityId.SWARM, AbilityId.INSOMNIA, AbilityId.SNIPER, 400, 70, 90, 70, 60, 70, 40, 90, 70, 140, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.CROBAT, 2, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.8, 75, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 535, 85, 90, 80, 70, 80, 130, 90, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CHINCHOU, 2, false, false, false, "Angler Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 0.5, 12, AbilityId.VOLT_ABSORB, AbilityId.ILLUMINATE, AbilityId.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.LANTURN, 2, false, false, false, "Light Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 1.2, 22.5, AbilityId.VOLT_ABSORB, AbilityId.ILLUMINATE, AbilityId.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - ), - new PokemonSpecies(SpeciesId.CLEFFA, 2, false, false, false, "Star Shape Pokémon", PokemonType.FAIRY, null, 0.3, 3, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.3, 1, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.TOGEPI, 2, false, false, false, "Spike Ball Pokémon", PokemonType.FAIRY, null, 0.3, 1.5, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 245, 35, 20, 65, 40, 65, 20, 190, 50, 49, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(SpeciesId.TOGETIC, 2, false, false, false, "Happiness Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 0.6, 3.2, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 405, 55, 40, 85, 80, 105, 40, 75, 50, 142, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(SpeciesId.NATU, 2, false, false, false, "Tiny Bird Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.2, 2, AbilityId.SYNCHRONIZE, AbilityId.EARLY_BIRD, AbilityId.MAGIC_BOUNCE, 320, 40, 50, 45, 70, 45, 70, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.XATU, 2, false, false, false, "Mystic Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.5, 15, AbilityId.SYNCHRONIZE, AbilityId.EARLY_BIRD, AbilityId.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.MAREEP, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.6, 7.8, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.FLAAFFY, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.8, 13.3, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.AMPHAROS, 2, false, false, false, "Light Pokémon", PokemonType.ELECTRIC, null, 1.4, 61.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, PokemonType.DRAGON, 1.4, 61.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255), - ), - new PokemonSpecies(SpeciesId.BELLOSSOM, 2, false, false, false, "Flower Pokémon", PokemonType.GRASS, null, 0.4, 5.8, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.4, 8.5, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.AZUMARILL, 2, false, false, false, "Aqua Rabbit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.8, 28.5, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 420, 100, 50, 80, 60, 80, 50, 75, 50, 210, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.SUDOWOODO, 2, false, false, false, "Imitation Pokémon", PokemonType.ROCK, null, 1.2, 38, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.RATTLED, 410, 70, 100, 115, 30, 65, 30, 65, 50, 144, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.POLITOED, 2, false, false, false, "Frog Pokémon", PokemonType.WATER, null, 1.1, 33.9, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.4, 0.5, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.6, 1, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.8, 3, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.AIPOM, 2, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 0.8, 11.5, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true), - new PokemonSpecies(SpeciesId.SUNKERN, 2, false, false, false, "Seed Pokémon", PokemonType.GRASS, null, 0.3, 1.8, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SUNFLORA, 2, false, false, false, "Sun Pokémon", PokemonType.GRASS, null, 0.8, 8.5, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.YANMA, 2, false, false, false, "Clear Wing Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38, AbilityId.SPEED_BOOST, AbilityId.COMPOUND_EYES, AbilityId.FRISK, 390, 65, 65, 45, 75, 45, 95, 75, 70, 78, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WOOPER, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 8.5, AbilityId.DAMP, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.QUAGSIRE, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.4, 75, AbilityId.DAMP, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 430, 95, 85, 85, 65, 65, 35, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.ESPEON, 2, false, false, false, "Sun Pokémon", PokemonType.PSYCHIC, null, 0.9, 26.5, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.MAGIC_BOUNCE, 525, 65, 65, 60, 130, 95, 110, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.UMBREON, 2, false, false, false, "Moonlight Pokémon", PokemonType.DARK, null, 1, 27, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.INNER_FOCUS, 525, 95, 65, 110, 60, 130, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.MURKROW, 2, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 2.1, AbilityId.INSOMNIA, AbilityId.SUPER_LUCK, AbilityId.PRANKSTER, 405, 60, 85, 42, 85, 42, 91, 30, 35, 81, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.SLOWKING, 2, false, false, false, "Royal Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2, 79.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 80, 100, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MISDREAVUS, 2, false, false, false, "Screech Pokémon", PokemonType.GHOST, null, 0.7, 1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 435, 60, 60, 60, 85, 85, 85, 45, 35, 87, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.UNOWN, 2, false, false, false, "Symbol Pokémon", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("A", "a", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("B", "b", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("C", "c", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("D", "d", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("E", "e", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("F", "f", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("G", "g", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("H", "h", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("I", "i", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("J", "j", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("K", "k", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("L", "l", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("M", "m", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("N", "n", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("O", "o", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("P", "p", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Q", "q", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("R", "r", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("S", "s", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("T", "t", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("U", "u", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("V", "v", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("W", "w", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("X", "x", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Y", "y", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Z", "z", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("!", "exclamation", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("?", "question", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - ), - new PokemonSpecies(SpeciesId.WOBBUFFET, 2, false, false, false, "Patient Pokémon", PokemonType.PSYCHIC, null, 1.3, 28.5, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.TELEPATHY, 405, 190, 33, 58, 33, 58, 33, 45, 50, 142, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.GIRAFARIG, 2, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 41.5, AbilityId.INNER_FOCUS, AbilityId.EARLY_BIRD, AbilityId.SAP_SIPPER, 455, 70, 80, 65, 90, 65, 85, 60, 70, 159, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.PINECO, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.6, 7.2, AbilityId.STURDY, AbilityId.NONE, AbilityId.OVERCOAT, 290, 50, 65, 90, 35, 35, 15, 190, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FORRETRESS, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.2, 125.8, AbilityId.STURDY, AbilityId.NONE, AbilityId.OVERCOAT, 465, 75, 90, 140, 60, 60, 40, 75, 70, 163, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DUNSPARCE, 2, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 1.5, 14, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 415, 100, 70, 70, 65, 65, 45, 190, 50, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GLIGAR, 2, false, false, false, "Fly Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.1, 64.8, AbilityId.HYPER_CUTTER, AbilityId.SAND_VEIL, AbilityId.IMMUNITY, 430, 65, 75, 105, 35, 65, 85, 60, 70, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.STEELIX, 2, false, false, false, "Iron Snake Pokémon", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.GROUND, 10.5, 740, AbilityId.SAND_FORCE, AbilityId.SAND_FORCE, AbilityId.SAND_FORCE, 610, 75, 125, 230, 55, 95, 30, 25, 50, 179, true), - ), - new PokemonSpecies(SpeciesId.SNUBBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.8, AbilityId.INTIMIDATE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 300, 60, 80, 50, 40, 40, 30, 190, 70, 60, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.GRANBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.4, 48.7, AbilityId.INTIMIDATE, AbilityId.QUICK_FEET, AbilityId.RATTLED, 450, 90, 120, 75, 60, 60, 45, 75, 70, 158, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.QWILFISH, 2, false, false, false, "Balloon Pokémon", PokemonType.WATER, PokemonType.POISON, 0.5, 3.9, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SCIZOR, 2, false, false, false, "Pincer Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.STEEL, 2, 125, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, 600, 70, 150, 140, 65, 100, 75, 25, 50, 175, true), - ), - new PokemonSpecies(SpeciesId.SHUCKLE, 2, false, false, false, "Mold Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.6, 20.5, AbilityId.STURDY, AbilityId.GLUTTONY, AbilityId.CONTRARY, 505, 20, 10, 230, 10, 230, 5, 190, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.HERACROSS, 2, false, false, false, "Single Horn Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, AbilityId.SWARM, AbilityId.GUTS, AbilityId.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, AbilityId.SWARM, AbilityId.GUTS, AbilityId.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FIGHTING, 1.7, 62.5, AbilityId.SKILL_LINK, AbilityId.SKILL_LINK, AbilityId.SKILL_LINK, 600, 80, 185, 115, 40, 105, 75, 45, 50, 175, true), - ), - new PokemonSpecies(SpeciesId.SNEASEL, 2, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.KEEN_EYE, AbilityId.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.TEDDIURSA, 2, false, false, false, "Little Bear Pokémon", PokemonType.NORMAL, null, 0.6, 8.8, AbilityId.PICKUP, AbilityId.QUICK_FEET, AbilityId.HONEY_GATHER, 330, 60, 80, 50, 50, 50, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.URSARING, 2, false, false, false, "Hibernator Pokémon", PokemonType.NORMAL, null, 1.8, 125.8, AbilityId.GUTS, AbilityId.QUICK_FEET, AbilityId.UNNERVE, 500, 90, 130, 75, 75, 75, 55, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.SLUGMA, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, null, 0.7, 35, AbilityId.MAGMA_ARMOR, AbilityId.FLAME_BODY, AbilityId.WEAK_ARMOR, 250, 40, 40, 40, 70, 40, 20, 190, 70, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MAGCARGO, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 55, AbilityId.MAGMA_ARMOR, AbilityId.FLAME_BODY, AbilityId.WEAK_ARMOR, 430, 60, 50, 120, 90, 80, 30, 75, 70, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SWINUB, 2, false, false, false, "Pig Pokémon", PokemonType.ICE, PokemonType.GROUND, 0.4, 6.5, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 250, 50, 50, 40, 30, 30, 50, 225, 50, 50, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.PILOSWINE, 2, false, false, false, "Swine Pokémon", PokemonType.ICE, PokemonType.GROUND, 1.1, 55.8, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 450, 100, 100, 80, 60, 60, 50, 75, 50, 158, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.CORSOLA, 2, false, false, false, "Coral Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.6, 5, AbilityId.HUSTLE, AbilityId.NATURAL_CURE, AbilityId.REGENERATOR, 410, 65, 55, 95, 65, 95, 35, 60, 50, 144, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.REMORAID, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.6, 12, AbilityId.HUSTLE, AbilityId.SNIPER, AbilityId.MOODY, 300, 35, 65, 35, 65, 35, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.OCTILLERY, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.9, 28.5, AbilityId.SUCTION_CUPS, AbilityId.SNIPER, AbilityId.MOODY, 480, 75, 105, 75, 105, 75, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.DELIBIRD, 2, false, false, false, "Delivery Pokémon", PokemonType.ICE, PokemonType.FLYING, 0.9, 16, AbilityId.VITAL_SPIRIT, AbilityId.HUSTLE, AbilityId.INSOMNIA, 330, 45, 55, 45, 65, 45, 75, 45, 50, 116, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.MANTINE, 2, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 2.1, 220, AbilityId.SWIFT_SWIM, AbilityId.WATER_ABSORB, AbilityId.WATER_VEIL, 485, 85, 40, 70, 80, 140, 70, 25, 50, 170, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SKARMORY, 2, false, false, false, "Armor Bird Pokémon", PokemonType.STEEL, PokemonType.FLYING, 1.7, 50.5, AbilityId.KEEN_EYE, AbilityId.STURDY, AbilityId.WEAK_ARMOR, 465, 65, 80, 140, 40, 70, 70, 25, 50, 163, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HOUNDOUR, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.6, 10.8, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 330, 45, 60, 30, 80, 50, 65, 120, 35, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HOUNDOOM, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.FIRE, 1.9, 49.5, AbilityId.SOLAR_POWER, AbilityId.SOLAR_POWER, AbilityId.SOLAR_POWER, 600, 75, 90, 90, 140, 90, 115, 45, 35, 175, true), - ), - new PokemonSpecies(SpeciesId.KINGDRA, 2, false, false, false, "Dragon Pokémon", PokemonType.WATER, PokemonType.DRAGON, 1.8, 152, AbilityId.SWIFT_SWIM, AbilityId.SNIPER, AbilityId.DAMP, 540, 75, 95, 95, 95, 95, 85, 45, 50, 270, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PHANPY, 2, false, false, false, "Long Nose Pokémon", PokemonType.GROUND, null, 0.5, 33.5, AbilityId.PICKUP, AbilityId.NONE, AbilityId.SAND_VEIL, 330, 90, 60, 60, 40, 40, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DONPHAN, 2, false, false, false, "Armor Pokémon", PokemonType.GROUND, null, 1.1, 120, AbilityId.STURDY, AbilityId.NONE, AbilityId.SAND_VEIL, 500, 90, 120, 120, 60, 60, 50, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.PORYGON2, 2, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.6, 32.5, AbilityId.TRACE, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 515, 85, 80, 90, 105, 95, 60, 45, 50, 180, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.STANTLER, 2, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, null, 1.4, 71.2, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 465, 73, 95, 62, 85, 65, 85, 45, 70, 163, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SMEARGLE, 2, false, false, false, "Painter Pokémon", PokemonType.NORMAL, null, 1.2, 58, AbilityId.OWN_TEMPO, AbilityId.TECHNICIAN, AbilityId.MOODY, 250, 55, 20, 35, 20, 45, 75, 45, 70, 88, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.TYROGUE, 2, false, false, false, "Scuffle Pokémon", PokemonType.FIGHTING, null, 0.7, 21, AbilityId.GUTS, AbilityId.STEADFAST, AbilityId.VITAL_SPIRIT, 210, 35, 35, 35, 35, 35, 35, 75, 50, 42, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.HITMONTOP, 2, false, false, false, "Handstand Pokémon", PokemonType.FIGHTING, null, 1.4, 48, AbilityId.INTIMIDATE, AbilityId.TECHNICIAN, AbilityId.STEADFAST, 455, 50, 95, 95, 35, 110, 70, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.SMOOCHUM, 2, false, false, false, "Kiss Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 0.4, 6, AbilityId.OBLIVIOUS, AbilityId.FOREWARN, AbilityId.HYDRATION, 305, 45, 30, 15, 85, 65, 65, 45, 50, 61, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.ELEKID, 2, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 0.6, 23.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(SpeciesId.MAGBY, 2, false, false, false, "Live Coal Pokémon", PokemonType.FIRE, null, 0.7, 21.4, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(SpeciesId.MILTANK, 2, false, false, false, "Milk Cow Pokémon", PokemonType.NORMAL, null, 1.2, 75.5, AbilityId.THICK_FAT, AbilityId.SCRAPPY, AbilityId.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false), - new PokemonSpecies(SpeciesId.BLISSEY, 2, false, false, false, "Happiness Pokémon", PokemonType.NORMAL, null, 1.5, 46.8, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false), - new PokemonSpecies(SpeciesId.RAIKOU, 2, true, false, false, "Thunder Pokémon", PokemonType.ELECTRIC, null, 1.9, 178, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ENTEI, 2, true, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 2.1, 198, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SUICUNE, 2, true, false, false, "Aurora Pokémon", PokemonType.WATER, null, 2, 187, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.LARVITAR, 2, false, false, false, "Rock Skin Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.6, 72, AbilityId.GUTS, AbilityId.NONE, AbilityId.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.PUPITAR, 2, false, false, false, "Hard Shell Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.2, 152, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TYRANITAR, 2, false, false, false, "Armor Pokémon", PokemonType.ROCK, PokemonType.DARK, 2, 202, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.DARK, 2, 202, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.DARK, 2.5, 255, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300), - ), - new PokemonSpecies(SpeciesId.LUGIA, 2, false, true, false, "Diving Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 5.2, 216, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.MULTISCALE, 680, 106, 90, 130, 90, 154, 110, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.HO_OH, 2, false, true, false, "Rainbow Pokémon", PokemonType.FIRE, PokemonType.FLYING, 3.8, 199, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.REGENERATOR, 680, 106, 130, 90, 110, 154, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.CELEBI, 2, false, false, true, "Time Travel Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 0.6, 5, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(SpeciesId.TREECKO, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.5, 5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 310, 40, 45, 35, 65, 55, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.GROVYLE, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.9, 21.6, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 405, 50, 65, 45, 85, 65, 95, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SCEPTILE, 3, false, false, false, "Forest Pokémon", PokemonType.GRASS, null, 1.7, 52.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, null, 1.7, 52.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.DRAGON, 1.9, 55.2, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 630, 70, 110, 75, 145, 85, 145, 45, 50, 265), - ), - new PokemonSpecies(SpeciesId.TORCHIC, 3, false, false, false, "Chick Pokémon", PokemonType.FIRE, null, 0.4, 2.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 310, 45, 60, 40, 70, 50, 45, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(SpeciesId.COMBUSKEN, 3, false, false, false, "Young Fowl Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 19.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 405, 60, 85, 60, 85, 60, 55, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(SpeciesId.BLAZIKEN, 3, false, false, false, "Blaze Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, true, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 630, 80, 160, 80, 130, 80, 100, 45, 50, 265, true), - ), - new PokemonSpecies(SpeciesId.MUDKIP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, null, 0.4, 7.6, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 310, 50, 70, 50, 50, 50, 40, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.MARSHTOMP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.7, 28, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 405, 70, 85, 70, 60, 70, 50, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SWAMPERT, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.GROUND, 1.9, 102, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.SWIFT_SWIM, 635, 100, 150, 110, 95, 110, 70, 45, 50, 268), - ), - new PokemonSpecies(SpeciesId.POOCHYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 0.5, 13.6, AbilityId.RUN_AWAY, AbilityId.QUICK_FEET, AbilityId.RATTLED, 220, 35, 55, 35, 30, 30, 35, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MIGHTYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 1, 37, AbilityId.INTIMIDATE, AbilityId.QUICK_FEET, AbilityId.MOXIE, 420, 70, 90, 70, 60, 60, 70, 127, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ZIGZAGOON, 3, false, false, false, "Tiny Raccoon Pokémon", PokemonType.NORMAL, null, 0.4, 17.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LINOONE, 3, false, false, false, "Rushing Pokémon", PokemonType.NORMAL, null, 0.5, 32.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WURMPLE, 3, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 3.6, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SILCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.6, 10, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 28.4, AbilityId.SWARM, AbilityId.NONE, AbilityId.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.CASCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 11.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 31.6, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.LOTAD, 3, false, false, false, "Water Weed Pokémon", PokemonType.WATER, PokemonType.GRASS, 0.5, 2.6, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.LOMBRE, 3, false, false, false, "Jolly Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.2, 32.5, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.LUDICOLO, 3, false, false, false, "Carefree Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.5, 55, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.SEEDOT, 3, false, false, false, "Acorn Pokémon", PokemonType.GRASS, null, 0.5, 4, AbilityId.CHLOROPHYLL, AbilityId.EARLY_BIRD, AbilityId.PICKPOCKET, 220, 40, 40, 50, 30, 30, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.NUZLEAF, 3, false, false, false, "Wily Pokémon", PokemonType.GRASS, PokemonType.DARK, 1, 28, AbilityId.CHLOROPHYLL, AbilityId.EARLY_BIRD, AbilityId.PICKPOCKET, 340, 70, 70, 40, 60, 40, 60, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.SHIFTRY, 3, false, false, false, "Wicked Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 59.6, AbilityId.CHLOROPHYLL, AbilityId.WIND_RIDER, AbilityId.PICKPOCKET, 480, 90, 100, 60, 90, 60, 80, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.TAILLOW, 3, false, false, false, "Tiny Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.3, AbilityId.GUTS, AbilityId.NONE, AbilityId.SCRAPPY, 270, 40, 55, 30, 30, 30, 85, 200, 70, 54, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SWELLOW, 3, false, false, false, "Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 19.8, AbilityId.GUTS, AbilityId.NONE, AbilityId.SCRAPPY, 455, 60, 85, 60, 75, 50, 125, 45, 70, 159, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.WINGULL, 3, false, false, false, "Seagull Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.6, 9.5, AbilityId.KEEN_EYE, AbilityId.HYDRATION, AbilityId.RAIN_DISH, 270, 40, 30, 30, 55, 30, 85, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PELIPPER, 3, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.2, 28, AbilityId.KEEN_EYE, AbilityId.DRIZZLE, AbilityId.RAIN_DISH, 440, 60, 50, 100, 95, 70, 65, 45, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RALTS, 3, false, false, false, "Feeling Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.4, 6.6, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 198, 28, 25, 25, 45, 35, 40, 235, 35, 40, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.KIRLIA, 3, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.8, 20.2, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 278, 38, 35, 35, 65, 55, 50, 120, 35, 97, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.GARDEVOIR, 3, false, false, false, "Embrace Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.PIXILATE, AbilityId.PIXILATE, AbilityId.PIXILATE, 618, 68, 85, 65, 165, 135, 100, 45, 35, 259), - ), - new PokemonSpecies(SpeciesId.SURSKIT, 3, false, false, false, "Pond Skater Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 1.7, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.RAIN_DISH, 269, 40, 30, 32, 50, 52, 65, 200, 70, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MASQUERAIN, 3, false, false, false, "Eyeball Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 3.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.UNNERVE, 454, 70, 60, 62, 100, 82, 80, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SHROOMISH, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, null, 0.4, 4.5, AbilityId.EFFECT_SPORE, AbilityId.POISON_HEAL, AbilityId.QUICK_FEET, 295, 60, 40, 60, 40, 60, 35, 255, 70, 59, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.BRELOOM, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 39.2, AbilityId.EFFECT_SPORE, AbilityId.POISON_HEAL, AbilityId.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.SLAKOTH, 3, false, false, false, "Slacker Pokémon", PokemonType.NORMAL, null, 0.8, 24, AbilityId.TRUANT, AbilityId.NONE, AbilityId.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(SpeciesId.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", PokemonType.NORMAL, null, 1.4, 46.5, AbilityId.VITAL_SPIRIT, AbilityId.NONE, AbilityId.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(SpeciesId.SLAKING, 3, false, false, false, "Lazy Pokémon", PokemonType.NORMAL, null, 2, 130.5, AbilityId.TRUANT, AbilityId.NONE, AbilityId.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(SpeciesId.NINCADA, 3, false, false, false, "Trainee Pokémon", PokemonType.BUG, PokemonType.GROUND, 0.5, 5.5, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.NINJASK, 3, false, false, false, "Ninja Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 12, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.SHEDINJA, 3, false, false, false, "Shed Pokémon", PokemonType.BUG, PokemonType.GHOST, 0.8, 1.2, AbilityId.WONDER_GUARD, AbilityId.NONE, AbilityId.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false), - new PokemonSpecies(SpeciesId.WHISMUR, 3, false, false, false, "Whisper Pokémon", PokemonType.NORMAL, null, 0.6, 16.3, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.RATTLED, 240, 64, 51, 23, 51, 23, 28, 190, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.LOUDRED, 3, false, false, false, "Big Voice Pokémon", PokemonType.NORMAL, null, 1, 40.5, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.SCRAPPY, 360, 84, 71, 43, 71, 43, 48, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.EXPLOUD, 3, false, false, false, "Loud Noise Pokémon", PokemonType.NORMAL, null, 1.5, 84, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.SCRAPPY, 490, 104, 91, 63, 91, 73, 68, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.MAKUHITA, 3, false, false, false, "Guts Pokémon", PokemonType.FIGHTING, null, 1, 86.4, AbilityId.THICK_FAT, AbilityId.GUTS, AbilityId.SHEER_FORCE, 237, 72, 60, 30, 20, 30, 25, 180, 70, 47, GrowthRate.FLUCTUATING, 75, false), - new PokemonSpecies(SpeciesId.HARIYAMA, 3, false, false, false, "Arm Thrust Pokémon", PokemonType.FIGHTING, null, 2.3, 253.8, AbilityId.THICK_FAT, AbilityId.GUTS, AbilityId.SHEER_FORCE, 474, 144, 120, 60, 40, 60, 50, 200, 70, 166, GrowthRate.FLUCTUATING, 75, false), - new PokemonSpecies(SpeciesId.AZURILL, 3, false, false, false, "Polka Dot Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.2, 2, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 190, 50, 20, 40, 20, 40, 20, 150, 50, 38, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.NOSEPASS, 3, false, false, false, "Compass Pokémon", PokemonType.ROCK, null, 1, 97, AbilityId.STURDY, AbilityId.MAGNET_PULL, AbilityId.SAND_FORCE, 375, 30, 45, 135, 45, 90, 30, 255, 70, 75, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SKITTY, 3, false, false, false, "Kitten Pokémon", PokemonType.NORMAL, null, 0.6, 11, AbilityId.CUTE_CHARM, AbilityId.NORMALIZE, AbilityId.WONDER_SKIN, 260, 50, 45, 45, 35, 35, 50, 255, 70, 52, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.DELCATTY, 3, false, false, false, "Prim Pokémon", PokemonType.NORMAL, null, 1.1, 32.6, AbilityId.CUTE_CHARM, AbilityId.NORMALIZE, AbilityId.WONDER_SKIN, 400, 70, 65, 65, 55, 55, 90, 60, 70, 140, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.SABLEYE, 3, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, AbilityId.KEEN_EYE, AbilityId.STALL, AbilityId.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, AbilityId.KEEN_EYE, AbilityId.STALL, AbilityId.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.GHOST, 0.5, 161, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 480, 50, 85, 125, 85, 115, 20, 45, 35, 133), - ), - new PokemonSpecies(SpeciesId.MAWILE, 3, false, false, false, "Deceiver Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.INTIMIDATE, AbilityId.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.INTIMIDATE, AbilityId.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.FAIRY, 1, 23.5, AbilityId.HUGE_POWER, AbilityId.HUGE_POWER, AbilityId.HUGE_POWER, 480, 50, 105, 125, 55, 95, 50, 45, 50, 133), - ), - new PokemonSpecies(SpeciesId.ARON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.4, 60, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 330, 50, 70, 100, 40, 40, 30, 180, 35, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.LAIRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.9, 120, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 430, 60, 90, 140, 50, 50, 40, 90, 35, 151, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.AGGRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, null, 2.2, 395, AbilityId.FILTER, AbilityId.FILTER, AbilityId.FILTER, 630, 70, 140, 230, 60, 80, 50, 45, 35, 265), - ), - new PokemonSpecies(SpeciesId.MEDITITE, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 0.6, 11.2, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 280, 30, 40, 55, 40, 55, 60, 180, 70, 56, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.MEDICHAM, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.PURE_POWER, 510, 60, 100, 85, 80, 85, 100, 90, 70, 144, true), - ), - new PokemonSpecies(SpeciesId.ELECTRIKE, 3, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.6, 15.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 295, 40, 45, 40, 65, 40, 65, 120, 50, 59, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.MANECTRIC, 3, false, false, false, "Discharge Pokémon", PokemonType.ELECTRIC, null, 1.5, 40.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.5, 40.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, null, 1.8, 44, AbilityId.INTIMIDATE, AbilityId.INTIMIDATE, AbilityId.INTIMIDATE, 575, 70, 75, 80, 135, 80, 135, 45, 50, 166), - ), - new PokemonSpecies(SpeciesId.PLUSLE, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, AbilityId.PLUS, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 405, 60, 50, 40, 85, 75, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MINUN, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, AbilityId.MINUS, AbilityId.NONE, AbilityId.VOLT_ABSORB, 405, 60, 40, 50, 75, 85, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.VOLBEAT, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.7, 17.7, AbilityId.ILLUMINATE, AbilityId.SWARM, AbilityId.PRANKSTER, 430, 65, 73, 75, 47, 85, 85, 150, 70, 151, GrowthRate.ERRATIC, 100, false), - new PokemonSpecies(SpeciesId.ILLUMISE, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.6, 17.7, AbilityId.OBLIVIOUS, AbilityId.TINTED_LENS, AbilityId.PRANKSTER, 430, 65, 47, 75, 73, 85, 85, 150, 70, 151, GrowthRate.FLUCTUATING, 0, false), - new PokemonSpecies(SpeciesId.ROSELIA, 3, false, false, false, "Thorn Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.3, 2, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.LEAF_GUARD, 400, 50, 60, 45, 100, 80, 65, 150, 50, 140, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.GULPIN, 3, false, false, false, "Stomach Pokémon", PokemonType.POISON, null, 0.4, 10.3, AbilityId.LIQUID_OOZE, AbilityId.STICKY_HOLD, AbilityId.GLUTTONY, 302, 70, 43, 53, 43, 53, 40, 225, 70, 60, GrowthRate.FLUCTUATING, 50, true), - new PokemonSpecies(SpeciesId.SWALOT, 3, false, false, false, "Poison Bag Pokémon", PokemonType.POISON, null, 1.7, 80, AbilityId.LIQUID_OOZE, AbilityId.STICKY_HOLD, AbilityId.GLUTTONY, 467, 100, 73, 83, 73, 83, 55, 75, 70, 163, GrowthRate.FLUCTUATING, 50, true), - new PokemonSpecies(SpeciesId.CARVANHA, 3, false, false, false, "Savage Pokémon", PokemonType.WATER, PokemonType.DARK, 0.8, 20.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 305, 45, 90, 20, 65, 20, 65, 225, 35, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SHARPEDO, 3, false, false, false, "Brutal Pokémon", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 2.5, 130.3, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.STRONG_JAW, 560, 70, 140, 70, 110, 65, 105, 60, 35, 161), - ), - new PokemonSpecies(SpeciesId.WAILMER, 3, false, false, false, "Ball Whale Pokémon", PokemonType.WATER, null, 2, 130, AbilityId.WATER_VEIL, AbilityId.OBLIVIOUS, AbilityId.PRESSURE, 400, 130, 70, 35, 70, 35, 60, 125, 50, 80, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.WAILORD, 3, false, false, false, "Float Whale Pokémon", PokemonType.WATER, null, 14.5, 398, AbilityId.WATER_VEIL, AbilityId.OBLIVIOUS, AbilityId.PRESSURE, 500, 170, 90, 45, 90, 45, 60, 60, 50, 175, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.NUMEL, 3, false, false, false, "Numb Pokémon", PokemonType.FIRE, PokemonType.GROUND, 0.7, 24, AbilityId.OBLIVIOUS, AbilityId.SIMPLE, AbilityId.OWN_TEMPO, 305, 60, 60, 40, 65, 45, 35, 255, 70, 61, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.CAMERUPT, 3, false, false, false, "Eruption Pokémon", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, AbilityId.MAGMA_ARMOR, AbilityId.SOLID_ROCK, AbilityId.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, AbilityId.MAGMA_ARMOR, AbilityId.SOLID_ROCK, AbilityId.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.GROUND, 2.5, 320.5, AbilityId.SHEER_FORCE, AbilityId.SHEER_FORCE, AbilityId.SHEER_FORCE, 560, 70, 120, 100, 145, 105, 20, 150, 70, 161), - ), - new PokemonSpecies(SpeciesId.TORKOAL, 3, false, false, false, "Coal Pokémon", PokemonType.FIRE, null, 0.5, 80.4, AbilityId.WHITE_SMOKE, AbilityId.DROUGHT, AbilityId.SHELL_ARMOR, 470, 70, 85, 140, 85, 70, 20, 90, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SPOINK, 3, false, false, false, "Bounce Pokémon", PokemonType.PSYCHIC, null, 0.7, 30.6, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.GLUTTONY, 330, 60, 25, 35, 70, 80, 60, 255, 70, 66, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.GRUMPIG, 3, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.9, 71.5, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.GLUTTONY, 470, 80, 45, 65, 90, 110, 80, 60, 70, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.SPINDA, 3, false, false, false, "Spot Panda Pokémon", PokemonType.NORMAL, null, 1.1, 5, AbilityId.OWN_TEMPO, AbilityId.TANGLED_FEET, AbilityId.CONTRARY, 360, 60, 60, 60, 60, 60, 60, 255, 70, 126, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.TRAPINCH, 3, false, false, false, "Ant Pit Pokémon", PokemonType.GROUND, null, 0.7, 15, AbilityId.HYPER_CUTTER, AbilityId.ARENA_TRAP, AbilityId.SHEER_FORCE, 290, 45, 100, 45, 45, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.VIBRAVA, 3, false, false, false, "Vibration Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 1.1, 15.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 340, 50, 70, 50, 50, 50, 70, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.FLYGON, 3, false, false, false, "Mystic Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 2, 82, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 80, 100, 80, 80, 80, 100, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CACNEA, 3, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 0.4, 51.3, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.WATER_ABSORB, 335, 50, 85, 40, 85, 40, 35, 190, 35, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CACTURNE, 3, false, false, false, "Scarecrow Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 77.4, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.WATER_ABSORB, 475, 70, 115, 60, 115, 60, 55, 60, 35, 166, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.SWABLU, 3, false, false, false, "Cotton Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.4, 1.2, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 310, 45, 40, 60, 40, 75, 50, 255, 50, 62, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.ALTARIA, 3, false, false, false, "Humming Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FAIRY, 1.5, 20.6, AbilityId.PIXILATE, AbilityId.NONE, AbilityId.PIXILATE, 590, 75, 110, 110, 110, 105, 80, 45, 50, 172), - ), - new PokemonSpecies(SpeciesId.ZANGOOSE, 3, false, false, false, "Cat Ferret Pokémon", PokemonType.NORMAL, null, 1.3, 40.3, AbilityId.IMMUNITY, AbilityId.NONE, AbilityId.TOXIC_BOOST, 458, 73, 115, 60, 60, 60, 90, 90, 70, 160, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.SEVIPER, 3, false, false, false, "Fang Snake Pokémon", PokemonType.POISON, null, 2.7, 52.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.INFILTRATOR, 458, 73, 100, 60, 100, 60, 65, 90, 70, 160, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.LUNATONE, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1, 168, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 460, 90, 55, 65, 95, 85, 70, 45, 50, 161, GrowthRate.FAST, null, false), - new PokemonSpecies(SpeciesId.SOLROCK, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.2, 154, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 460, 90, 95, 85, 55, 65, 70, 45, 50, 161, GrowthRate.FAST, null, false), - new PokemonSpecies(SpeciesId.BARBOACH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 1.9, AbilityId.OBLIVIOUS, AbilityId.ANTICIPATION, AbilityId.HYDRATION, 288, 50, 48, 43, 46, 41, 60, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WHISCASH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 23.6, AbilityId.OBLIVIOUS, AbilityId.ANTICIPATION, AbilityId.HYDRATION, 468, 110, 78, 73, 76, 71, 60, 75, 50, 164, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CORPHISH, 3, false, false, false, "Ruffian Pokémon", PokemonType.WATER, null, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.ADAPTABILITY, 308, 43, 80, 65, 50, 35, 35, 205, 50, 62, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.CRAWDAUNT, 3, false, false, false, "Rogue Pokémon", PokemonType.WATER, PokemonType.DARK, 1.1, 32.8, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.ADAPTABILITY, 468, 63, 120, 85, 90, 55, 55, 155, 50, 164, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.BALTOY, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 0.5, 21.5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 300, 40, 40, 55, 40, 70, 55, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.CLAYDOL, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 1.5, 108, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 500, 60, 70, 105, 70, 120, 75, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.LILEEP, 3, false, false, false, "Sea Lily Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1, 23.8, AbilityId.SUCTION_CUPS, AbilityId.NONE, AbilityId.STORM_DRAIN, 355, 66, 41, 77, 61, 87, 23, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.CRADILY, 3, false, false, false, "Barnacle Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1.5, 60.4, AbilityId.SUCTION_CUPS, AbilityId.NONE, AbilityId.STORM_DRAIN, 495, 86, 81, 97, 81, 107, 43, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.ANORITH, 3, false, false, false, "Old Shrimp Pokémon", PokemonType.ROCK, PokemonType.BUG, 0.7, 12.5, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.SWIFT_SWIM, 355, 45, 95, 50, 40, 50, 75, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.ARMALDO, 3, false, false, false, "Plate Pokémon", PokemonType.ROCK, PokemonType.BUG, 1.5, 68.2, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.SWIFT_SWIM, 495, 75, 125, 100, 70, 80, 45, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.FEEBAS, 3, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.6, 7.4, AbilityId.SWIFT_SWIM, AbilityId.OBLIVIOUS, AbilityId.ADAPTABILITY, 200, 20, 15, 20, 10, 55, 80, 255, 50, 40, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.MILOTIC, 3, false, false, false, "Tender Pokémon", PokemonType.WATER, null, 6.2, 162, AbilityId.MARVEL_SCALE, AbilityId.COMPETITIVE, AbilityId.CUTE_CHARM, 540, 95, 60, 79, 100, 125, 81, 60, 50, 189, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(SpeciesId.CASTFORM, 3, false, false, false, "Weather Pokémon", PokemonType.NORMAL, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, false, null, true), - new PokemonForm("Sunny Form", "sunny", PokemonType.FIRE, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - new PokemonForm("Rainy Form", "rainy", PokemonType.WATER, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - new PokemonForm("Snowy Form", "snowy", PokemonType.ICE, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - ), - new PokemonSpecies(SpeciesId.KECLEON, 3, false, false, false, "Color Swap Pokémon", PokemonType.NORMAL, null, 1, 22, AbilityId.COLOR_CHANGE, AbilityId.NONE, AbilityId.PROTEAN, 440, 60, 90, 70, 60, 120, 40, 200, 70, 154, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SHUPPET, 3, false, false, false, "Puppet Pokémon", PokemonType.GHOST, null, 0.6, 2.3, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 295, 44, 75, 35, 63, 33, 45, 225, 35, 59, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.BANETTE, 3, false, false, false, "Marionette Pokémon", PokemonType.GHOST, null, 1.1, 12.5, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GHOST, null, 1.1, 12.5, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, null, 1.2, 13, AbilityId.PRANKSTER, AbilityId.PRANKSTER, AbilityId.PRANKSTER, 555, 64, 165, 75, 93, 83, 75, 45, 35, 159), - ), - new PokemonSpecies(SpeciesId.DUSKULL, 3, false, false, false, "Requiem Pokémon", PokemonType.GHOST, null, 0.8, 15, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.FRISK, 295, 20, 40, 90, 30, 90, 25, 190, 35, 59, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.DUSCLOPS, 3, false, false, false, "Beckon Pokémon", PokemonType.GHOST, null, 1.6, 30.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FRISK, 455, 40, 70, 130, 60, 130, 25, 90, 35, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.TROPIUS, 3, false, false, false, "Fruit Pokémon", PokemonType.GRASS, PokemonType.FLYING, 2, 100, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.HARVEST, 460, 99, 68, 83, 72, 87, 51, 200, 70, 161, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CHIMECHO, 3, false, false, false, "Wind Chime Pokémon", PokemonType.PSYCHIC, null, 0.6, 1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 455, 75, 50, 80, 95, 90, 65, 45, 70, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.ABSOL, 3, false, false, false, "Disaster Pokémon", PokemonType.DARK, null, 1.2, 47, AbilityId.PRESSURE, AbilityId.SUPER_LUCK, AbilityId.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DARK, null, 1.2, 47, AbilityId.PRESSURE, AbilityId.SUPER_LUCK, AbilityId.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, null, 1.2, 49, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 565, 65, 150, 60, 115, 60, 115, 30, 35, 163), - ), - new PokemonSpecies(SpeciesId.WYNAUT, 3, false, false, false, "Bright Pokémon", PokemonType.PSYCHIC, null, 0.6, 14, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.TELEPATHY, 260, 95, 23, 48, 23, 48, 23, 125, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SNORUNT, 3, false, false, false, "Snow Hat Pokémon", PokemonType.ICE, null, 0.7, 16.8, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 300, 50, 50, 50, 50, 50, 50, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GLALIE, 3, false, false, false, "Face Pokémon", PokemonType.ICE, null, 1.5, 256.5, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ICE, null, 1.5, 256.5, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ICE, null, 2.1, 350.2, AbilityId.REFRIGERATE, AbilityId.REFRIGERATE, AbilityId.REFRIGERATE, 580, 80, 120, 80, 120, 80, 100, 75, 50, 168), - ), - new PokemonSpecies(SpeciesId.SPHEAL, 3, false, false, false, "Clap Pokémon", PokemonType.ICE, PokemonType.WATER, 0.8, 39.5, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 290, 70, 40, 50, 55, 50, 25, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SEALEO, 3, false, false, false, "Ball Roll Pokémon", PokemonType.ICE, PokemonType.WATER, 1.1, 87.6, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 410, 90, 60, 70, 75, 70, 45, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.WALREIN, 3, false, false, false, "Ice Break Pokémon", PokemonType.ICE, PokemonType.WATER, 1.4, 150.6, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 530, 110, 80, 90, 95, 90, 65, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CLAMPERL, 3, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.4, 52.5, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.RATTLED, 345, 35, 64, 85, 74, 55, 32, 255, 70, 69, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.HUNTAIL, 3, false, false, false, "Deep Sea Pokémon", PokemonType.WATER, null, 1.7, 27, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 485, 55, 104, 105, 94, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.GOREBYSS, 3, false, false, false, "South Sea Pokémon", PokemonType.WATER, null, 1.8, 22.6, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.HYDRATION, 485, 55, 84, 105, 114, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.RELICANTH, 3, false, false, false, "Longevity Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 23.4, AbilityId.SWIFT_SWIM, AbilityId.ROCK_HEAD, AbilityId.STURDY, 485, 100, 90, 130, 45, 65, 55, 25, 50, 170, GrowthRate.SLOW, 87.5, true), - new PokemonSpecies(SpeciesId.LUVDISC, 3, false, false, false, "Rendezvous Pokémon", PokemonType.WATER, null, 0.6, 8.7, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.HYDRATION, 330, 43, 30, 55, 40, 65, 97, 225, 70, 116, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.BAGON, 3, false, false, false, "Rock Head Pokémon", PokemonType.DRAGON, null, 0.6, 42.1, AbilityId.ROCK_HEAD, AbilityId.NONE, AbilityId.SHEER_FORCE, 300, 45, 75, 60, 40, 30, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SHELGON, 3, false, false, false, "Endurance Pokémon", PokemonType.DRAGON, null, 1.1, 110.5, AbilityId.ROCK_HEAD, AbilityId.NONE, AbilityId.OVERCOAT, 420, 65, 95, 100, 60, 50, 50, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SALAMENCE, 3, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 1.8, 112.6, AbilityId.AERILATE, AbilityId.NONE, AbilityId.AERILATE, 700, 95, 145, 130, 120, 90, 120, 45, 35, 300), - ), - new PokemonSpecies(SpeciesId.BELDUM, 3, false, false, false, "Iron Ball Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.6, 95.2, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 300, 40, 55, 80, 35, 60, 30, 45, 35, 60, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Frigibax - new PokemonSpecies(SpeciesId.METANG, 3, false, false, false, "Iron Claw Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.2, 202.5, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 420, 60, 75, 100, 55, 80, 50, 25, 35, 147, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Arctibax - new PokemonSpecies(SpeciesId.METAGROSS, 3, false, false, false, "Iron Leg Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 10, 35, 300, GrowthRate.SLOW, null, false, true, //Custom Catchrate, matching Baxcalibur - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 3, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.PSYCHIC, 2.5, 942.9, AbilityId.TOUGH_CLAWS, AbilityId.NONE, AbilityId.TOUGH_CLAWS, 700, 80, 145, 150, 105, 110, 110, 3, 35, 300), - ), - new PokemonSpecies(SpeciesId.REGIROCK, 3, true, false, false, "Rock Peak Pokémon", PokemonType.ROCK, null, 1.7, 230, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.STURDY, 580, 80, 100, 200, 50, 100, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.REGICE, 3, true, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 1.8, 175, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.ICE_BODY, 580, 80, 50, 100, 100, 200, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.REGISTEEL, 3, true, false, false, "Iron Pokémon", PokemonType.STEEL, null, 1.9, 205, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 580, 80, 75, 150, 75, 150, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.LATIAS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 1.8, 52, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 700, 80, 100, 120, 140, 150, 110, 3, 90, 300), - ), - new PokemonSpecies(SpeciesId.LATIOS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 2.3, 70, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 700, 80, 130, 100, 160, 120, 110, 3, 90, 300), - ), - new PokemonSpecies(SpeciesId.KYOGRE, 3, false, true, false, "Sea Basin Pokémon", PokemonType.WATER, null, 4.5, 352, AbilityId.DRIZZLE, AbilityId.NONE, AbilityId.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 4.5, 352, AbilityId.DRIZZLE, AbilityId.NONE, AbilityId.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, false, null, true), - new PokemonForm("Primal", "primal", PokemonType.WATER, null, 9.8, 430, AbilityId.PRIMORDIAL_SEA, AbilityId.NONE, AbilityId.NONE, 770, 100, 150, 90, 180, 160, 90, 3, 0, 335), - ), - new PokemonSpecies(SpeciesId.GROUDON, 3, false, true, false, "Continent Pokémon", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), - new PokemonForm("Primal", "primal", PokemonType.GROUND, PokemonType.FIRE, 5, 999.7, AbilityId.DESOLATE_LAND, AbilityId.NONE, AbilityId.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335), - ), - new PokemonSpecies(SpeciesId.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 3, 0, 340, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, AbilityId.DELTA_STREAM, AbilityId.NONE, AbilityId.NONE, 780, 105, 180, 100, 180, 100, 115, 3, 0, 340), - ), - new PokemonSpecies(SpeciesId.JIRACHI, 3, false, false, true, "Wish Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.3, 1.1, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.DEOXYS, 3, false, false, true, "DNA Pokémon", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal Forme", "normal", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true), - new PokemonForm("Attack Forme", "attack", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300), - new PokemonForm("Defense Forme", "defense", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300), - new PokemonForm("Speed Forme", "speed", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300), - ), - new PokemonSpecies(SpeciesId.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", PokemonType.GRASS, null, 0.4, 10.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.GROTLE, 4, false, false, false, "Grove Pokémon", PokemonType.GRASS, null, 1.1, 97, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.TORTERRA, 4, false, false, false, "Continent Pokémon", PokemonType.GRASS, PokemonType.GROUND, 2.2, 310, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", PokemonType.FIRE, null, 0.5, 6.2, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.MONFERNO, 4, false, false, false, "Playful Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 22, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.INFERNAPE, 4, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.2, 55, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PIPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.4, 5.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PRINPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.8, 23, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.EMPOLEON, 4, false, false, false, "Emperor Pokémon", PokemonType.WATER, PokemonType.STEEL, 1.7, 84.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.STARLY, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.STARAVIA, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15.5, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.STARAPTOR, 4, false, false, false, "Predator Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 24.9, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", PokemonType.NORMAL, null, 0.5, 20, AbilityId.SIMPLE, AbilityId.UNAWARE, AbilityId.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.BIBAREL, 4, false, false, false, "Beaver Pokémon", PokemonType.NORMAL, PokemonType.WATER, 1, 31.5, AbilityId.SIMPLE, AbilityId.UNAWARE, AbilityId.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.KRICKETOT, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 0.3, 2.2, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.KRICKETUNE, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 1, 25.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.TECHNICIAN, 384, 77, 85, 51, 55, 51, 65, 45, 70, 134, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.SHINX, 4, false, false, false, "Flash Pokémon", PokemonType.ELECTRIC, null, 0.5, 9.5, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 263, 45, 65, 34, 40, 34, 45, 235, 50, 53, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.LUXIO, 4, false, false, false, "Spark Pokémon", PokemonType.ELECTRIC, null, 0.9, 30.5, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 363, 60, 85, 49, 60, 49, 60, 120, 100, 127, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.LUXRAY, 4, false, false, false, "Gleam Eyes Pokémon", PokemonType.ELECTRIC, null, 1.4, 42, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 523, 80, 120, 79, 95, 79, 70, 45, 50, 262, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.BUDEW, 4, false, false, false, "Bud Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1.2, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.LEAF_GUARD, 280, 40, 30, 35, 50, 70, 55, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ROSERADE, 4, false, false, false, "Bouquet Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.9, 14.5, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.TECHNICIAN, 515, 60, 70, 65, 125, 105, 90, 75, 50, 258, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.CRANIDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 0.9, 31.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHEER_FORCE, 350, 67, 125, 40, 30, 30, 58, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.RAMPARDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 1.6, 102.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHEER_FORCE, 495, 97, 165, 60, 65, 50, 58, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.SHIELDON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 0.5, 57, AbilityId.STURDY, AbilityId.NONE, AbilityId.SOUNDPROOF, 350, 30, 42, 118, 42, 88, 30, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.BASTIODON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.3, 149.5, AbilityId.STURDY, AbilityId.NONE, AbilityId.SOUNDPROOF, 495, 60, 52, 168, 47, 138, 30, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(SpeciesId.BURMY, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - ), - new PokemonSpecies(SpeciesId.WORMADAM, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, false, null, true), - new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, PokemonType.GROUND, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 79, 105, 59, 85, 36, 45, 70, 148, false, null, true), - new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, PokemonType.STEEL, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 69, 95, 69, 95, 36, 45, 70, 148, false, null, true), - ), - new PokemonSpecies(SpeciesId.MOTHIM, 4, false, false, false, "Moth Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.9, 23.3, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 424, 70, 94, 50, 94, 50, 66, 45, 70, 148, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.COMBEE, 4, false, false, false, "Tiny Bee Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.3, 5.5, AbilityId.HONEY_GATHER, AbilityId.NONE, AbilityId.HUSTLE, 244, 30, 30, 42, 30, 42, 70, 120, 50, 49, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(SpeciesId.VESPIQUEN, 4, false, false, false, "Beehive Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38.5, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 474, 70, 80, 102, 80, 102, 40, 45, 50, 166, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.PACHIRISU, 4, false, false, false, "EleSquirrel Pokémon", PokemonType.ELECTRIC, null, 0.4, 3.9, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.VOLT_ABSORB, 405, 60, 45, 70, 45, 90, 95, 200, 100, 142, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.BUIZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 0.7, 29.5, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 330, 55, 65, 35, 60, 30, 85, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.FLOATZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 1.1, 33.5, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 495, 85, 105, 55, 85, 50, 115, 75, 70, 173, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.CHERUBI, 4, false, false, false, "Cherry Pokémon", PokemonType.GRASS, null, 0.4, 3.3, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.NONE, 275, 45, 35, 45, 62, 53, 35, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CHERRIM, 4, false, false, false, "Blossom Pokémon", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Overcast Form", "overcast", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, false, null, true), - new PokemonForm("Sunshine Form", "sunshine", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158), - ), - new PokemonSpecies(SpeciesId.SHELLOS, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("East Sea", "east", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), - new PokemonForm("West Sea", "west", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), - ), - new PokemonSpecies(SpeciesId.GASTRODON, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("East Sea", "east", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), - new PokemonForm("West Sea", "west", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), - ), - new PokemonSpecies(SpeciesId.AMBIPOM, 4, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 1.2, 20.3, AbilityId.TECHNICIAN, AbilityId.PICKUP, AbilityId.SKILL_LINK, 482, 75, 100, 66, 60, 66, 115, 45, 100, 169, GrowthRate.FAST, 50, true), - new PokemonSpecies(SpeciesId.DRIFLOON, 4, false, false, false, "Balloon Pokémon", PokemonType.GHOST, PokemonType.FLYING, 0.4, 1.2, AbilityId.AFTERMATH, AbilityId.UNBURDEN, AbilityId.FLARE_BOOST, 348, 90, 50, 34, 60, 44, 70, 125, 50, 70, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.DRIFBLIM, 4, false, false, false, "Blimp Pokémon", PokemonType.GHOST, PokemonType.FLYING, 1.2, 15, AbilityId.AFTERMATH, AbilityId.UNBURDEN, AbilityId.FLARE_BOOST, 498, 150, 80, 44, 90, 54, 80, 60, 50, 174, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(SpeciesId.BUNEARY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 0.4, 5.5, AbilityId.RUN_AWAY, AbilityId.KLUTZ, AbilityId.LIMBER, 350, 55, 66, 44, 44, 56, 85, 190, 0, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LOPUNNY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 1.2, 33.3, AbilityId.CUTE_CHARM, AbilityId.KLUTZ, AbilityId.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.2, 33.3, AbilityId.CUTE_CHARM, AbilityId.KLUTZ, AbilityId.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FIGHTING, 1.3, 28.3, AbilityId.SCRAPPY, AbilityId.SCRAPPY, AbilityId.SCRAPPY, 580, 65, 136, 94, 54, 96, 135, 60, 140, 168), - ), - new PokemonSpecies(SpeciesId.MISMAGIUS, 4, false, false, false, "Magical Pokémon", PokemonType.GHOST, null, 0.9, 4.4, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 495, 60, 60, 60, 105, 105, 105, 45, 35, 173, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.HONCHKROW, 4, false, false, false, "Big Boss Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.9, 27.3, AbilityId.INSOMNIA, AbilityId.SUPER_LUCK, AbilityId.MOXIE, 505, 100, 125, 52, 105, 52, 71, 30, 35, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GLAMEOW, 4, false, false, false, "Catty Pokémon", PokemonType.NORMAL, null, 0.5, 3.9, AbilityId.LIMBER, AbilityId.OWN_TEMPO, AbilityId.KEEN_EYE, 310, 49, 55, 42, 42, 37, 85, 190, 70, 62, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.PURUGLY, 4, false, false, false, "Tiger Cat Pokémon", PokemonType.NORMAL, null, 1, 43.8, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.DEFIANT, 452, 71, 82, 64, 64, 59, 112, 75, 70, 158, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.CHINGLING, 4, false, false, false, "Bell Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.6, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 285, 45, 30, 50, 65, 50, 45, 120, 70, 57, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.STUNKY, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 0.4, 19.2, AbilityId.STENCH, AbilityId.AFTERMATH, AbilityId.KEEN_EYE, 329, 63, 63, 47, 41, 41, 74, 225, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SKUNTANK, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 38, AbilityId.STENCH, AbilityId.AFTERMATH, AbilityId.KEEN_EYE, 479, 103, 93, 67, 71, 61, 84, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BRONZOR, 4, false, false, false, "Bronze Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.5, 60.5, AbilityId.LEVITATE, AbilityId.HEATPROOF, AbilityId.HEAVY_METAL, 300, 57, 24, 86, 24, 86, 23, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.BRONZONG, 4, false, false, false, "Bronze Bell Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.3, 187, AbilityId.LEVITATE, AbilityId.HEATPROOF, AbilityId.HEAVY_METAL, 500, 67, 89, 116, 79, 116, 33, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.BONSLY, 4, false, false, false, "Bonsai Pokémon", PokemonType.ROCK, null, 0.5, 15, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.RATTLED, 290, 50, 80, 95, 10, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MIME_JR, 4, false, false, false, "Mime Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.6, 13, AbilityId.SOUNDPROOF, AbilityId.FILTER, AbilityId.TECHNICIAN, 310, 20, 25, 45, 70, 90, 60, 145, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HAPPINY, 4, false, false, false, "Playhouse Pokémon", PokemonType.NORMAL, null, 0.6, 24.4, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.FRIEND_GUARD, 220, 100, 5, 5, 15, 65, 30, 130, 140, 110, GrowthRate.FAST, 0, false), - new PokemonSpecies(SpeciesId.CHATOT, 4, false, false, false, "Music Note Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 1.9, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 411, 76, 65, 45, 92, 42, 91, 30, 35, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SPIRITOMB, 4, false, false, false, "Forbidden Pokémon", PokemonType.GHOST, PokemonType.DARK, 1, 108, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INFILTRATOR, 485, 50, 92, 108, 92, 108, 35, 100, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GIBLE, 4, false, false, false, "Land Shark Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 0.7, 20.5, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 300, 58, 70, 45, 40, 45, 42, 45, 50, 60, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.GABITE, 4, false, false, false, "Cave Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.4, 56, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 410, 68, 90, 65, 50, 55, 82, 45, 50, 144, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.GARCHOMP, 4, false, false, false, "Mach Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SAND_FORCE, 700, 108, 170, 115, 120, 95, 92, 45, 50, 300, true), - ), - new PokemonSpecies(SpeciesId.MUNCHLAX, 4, false, false, false, "Big Eater Pokémon", PokemonType.NORMAL, null, 0.6, 105, AbilityId.PICKUP, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 390, 135, 85, 40, 40, 85, 5, 50, 50, 78, GrowthRate.SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.RIOLU, 4, false, false, false, "Emanation Pokémon", PokemonType.FIGHTING, null, 0.7, 20.2, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.PRANKSTER, 285, 40, 70, 40, 35, 40, 60, 75, 50, 57, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.LUCARIO, 4, false, false, false, "Aura Pokémon", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.STEEL, 1.3, 57.5, AbilityId.ADAPTABILITY, AbilityId.ADAPTABILITY, AbilityId.ADAPTABILITY, 625, 70, 145, 88, 140, 70, 112, 45, 50, 184), - ), - new PokemonSpecies(SpeciesId.HIPPOPOTAS, 4, false, false, false, "Hippo Pokémon", PokemonType.GROUND, null, 0.8, 49.5, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_FORCE, 330, 68, 72, 78, 38, 42, 32, 140, 50, 66, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.HIPPOWDON, 4, false, false, false, "Heavyweight Pokémon", PokemonType.GROUND, null, 2, 300, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_FORCE, 525, 108, 112, 118, 68, 72, 47, 60, 50, 184, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.SKORUPI, 4, false, false, false, "Scorpion Pokémon", PokemonType.POISON, PokemonType.BUG, 0.8, 12, AbilityId.BATTLE_ARMOR, AbilityId.SNIPER, AbilityId.KEEN_EYE, 330, 40, 50, 90, 30, 55, 65, 120, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.DRAPION, 4, false, false, false, "Ogre Scorpion Pokémon", PokemonType.POISON, PokemonType.DARK, 1.3, 61.5, AbilityId.BATTLE_ARMOR, AbilityId.SNIPER, AbilityId.KEEN_EYE, 500, 70, 90, 110, 60, 75, 95, 45, 50, 175, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CROAGUNK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 0.7, 23, AbilityId.ANTICIPATION, AbilityId.DRY_SKIN, AbilityId.POISON_TOUCH, 300, 48, 61, 40, 61, 40, 50, 140, 100, 60, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.TOXICROAK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.3, 44.4, AbilityId.ANTICIPATION, AbilityId.DRY_SKIN, AbilityId.POISON_TOUCH, 490, 83, 106, 65, 86, 65, 85, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.CARNIVINE, 4, false, false, false, "Bug Catcher Pokémon", PokemonType.GRASS, null, 1.4, 27, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 454, 74, 100, 72, 90, 72, 46, 200, 70, 159, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.FINNEON, 4, false, false, false, "Wing Fish Pokémon", PokemonType.WATER, null, 0.4, 7, AbilityId.SWIFT_SWIM, AbilityId.STORM_DRAIN, AbilityId.WATER_VEIL, 330, 49, 49, 56, 49, 61, 66, 190, 70, 66, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(SpeciesId.LUMINEON, 4, false, false, false, "Neon Pokémon", PokemonType.WATER, null, 1.2, 24, AbilityId.SWIFT_SWIM, AbilityId.STORM_DRAIN, AbilityId.WATER_VEIL, 460, 69, 69, 76, 69, 86, 91, 75, 70, 161, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(SpeciesId.MANTYKE, 4, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 1, 65, AbilityId.SWIFT_SWIM, AbilityId.WATER_ABSORB, AbilityId.WATER_VEIL, 345, 45, 20, 50, 60, 120, 50, 25, 50, 69, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SNOVER, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 1, 50.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 334, 60, 62, 50, 62, 60, 40, 120, 50, 67, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.ABOMASNOW, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.ICE, 2.7, 185, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SNOW_WARNING, 594, 90, 132, 105, 132, 105, 30, 60, 50, 173, true), - ), - new PokemonSpecies(SpeciesId.WEAVILE, 4, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 1.1, 34, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.PICKPOCKET, 510, 70, 120, 65, 45, 85, 125, 45, 35, 179, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.MAGNEZONE, 4, false, false, false, "Magnet Area Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1.2, 180, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 535, 70, 70, 115, 130, 90, 60, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.LICKILICKY, 4, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.7, 140, AbilityId.OWN_TEMPO, AbilityId.OBLIVIOUS, AbilityId.CLOUD_NINE, 515, 110, 85, 95, 80, 95, 50, 30, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RHYPERIOR, 4, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 2.4, 282.8, AbilityId.LIGHTNING_ROD, AbilityId.SOLID_ROCK, AbilityId.RECKLESS, 535, 115, 140, 130, 55, 55, 40, 30, 50, 268, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.TANGROWTH, 4, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 2, 128.6, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.REGENERATOR, 535, 100, 100, 125, 110, 50, 50, 30, 50, 187, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.ELECTIVIRE, 4, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.8, 138.6, AbilityId.MOTOR_DRIVE, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 540, 75, 123, 67, 95, 85, 95, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(SpeciesId.MAGMORTAR, 4, false, false, false, "Blast Pokémon", PokemonType.FIRE, null, 1.6, 68, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 540, 75, 95, 67, 125, 95, 83, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(SpeciesId.TOGEKISS, 4, false, false, false, "Jubilee Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.5, 38, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 545, 85, 50, 95, 120, 115, 80, 30, 50, 273, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(SpeciesId.YANMEGA, 4, false, false, false, "Ogre Darner Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.9, 51.5, AbilityId.SPEED_BOOST, AbilityId.TINTED_LENS, AbilityId.FRISK, 515, 86, 76, 86, 116, 56, 95, 30, 70, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LEAFEON, 4, false, false, false, "Verdant Pokémon", PokemonType.GRASS, null, 1, 25.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 65, 110, 130, 60, 65, 95, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.GLACEON, 4, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.8, 25.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.ICE_BODY, 525, 65, 60, 110, 130, 95, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.GLISCOR, 4, false, false, false, "Fang Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 2, 42.5, AbilityId.HYPER_CUTTER, AbilityId.SAND_VEIL, AbilityId.POISON_HEAL, 510, 75, 95, 125, 45, 75, 95, 30, 70, 179, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.MAMOSWINE, 4, false, false, false, "Twin Tusk Pokémon", PokemonType.ICE, PokemonType.GROUND, 2.5, 291, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 530, 110, 130, 80, 70, 60, 80, 50, 50, 265, GrowthRate.SLOW, 50, true), - new PokemonSpecies(SpeciesId.PORYGON_Z, 4, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.9, 34, AbilityId.ADAPTABILITY, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 535, 85, 80, 70, 135, 75, 90, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.GALLADE, 4, false, false, false, "Blade Pokémon", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, AbilityId.STEADFAST, AbilityId.SHARPNESS, AbilityId.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, AbilityId.STEADFAST, AbilityId.SHARPNESS, AbilityId.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 56.4, AbilityId.INNER_FOCUS, AbilityId.INNER_FOCUS, AbilityId.INNER_FOCUS, 618, 68, 165, 95, 65, 115, 110, 45, 35, 259), - ), - new PokemonSpecies(SpeciesId.PROBOPASS, 4, false, false, false, "Compass Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.4, 340, AbilityId.STURDY, AbilityId.MAGNET_PULL, AbilityId.SAND_FORCE, 525, 60, 55, 145, 75, 150, 40, 60, 70, 184, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DUSKNOIR, 4, false, false, false, "Gripper Pokémon", PokemonType.GHOST, null, 2.2, 106.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FRISK, 525, 45, 100, 135, 65, 135, 45, 45, 35, 263, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.FROSLASS, 4, false, false, false, "Snow Land Pokémon", PokemonType.ICE, PokemonType.GHOST, 1.3, 26.6, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.ROTOM, 4, false, false, false, "Plasma Pokémon", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true), - new PokemonForm("Heat", "heat", PokemonType.ELECTRIC, PokemonType.FIRE, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Wash", "wash", PokemonType.ELECTRIC, PokemonType.WATER, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Frost", "frost", PokemonType.ELECTRIC, PokemonType.ICE, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Fan", "fan", PokemonType.ELECTRIC, PokemonType.FLYING, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Mow", "mow", PokemonType.ELECTRIC, PokemonType.GRASS, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - ), - new PokemonSpecies(SpeciesId.UXIE, 4, true, false, false, "Knowledge Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.MESPRIT, 4, true, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.AZELF, 4, true, false, false, "Willpower Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 75, 125, 70, 125, 70, 115, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.DIALGA, 4, false, true, false, "Temporal Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", PokemonType.STEEL, PokemonType.DRAGON, 7, 848.7, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 100, 120, 150, 120, 90, 3, 0, 340), - ), - new PokemonSpecies(SpeciesId.PALKIA, 4, false, true, false, "Spatial Pokémon", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", PokemonType.WATER, PokemonType.DRAGON, 6.3, 659, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 100, 100, 150, 120, 120, 3, 0, 340), - ), - new PokemonSpecies(SpeciesId.HEATRAN, 4, true, false, false, "Lava Dome Pokémon", PokemonType.FIRE, PokemonType.STEEL, 1.7, 430, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.FLAME_BODY, 600, 91, 90, 106, 130, 106, 77, 3, 100, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.REGIGIGAS, 4, true, false, false, "Colossal Pokémon", PokemonType.NORMAL, null, 3.7, 420, AbilityId.SLOW_START, AbilityId.NONE, AbilityId.NORMALIZE, 670, 110, 160, 110, 80, 110, 100, 3, 0, 335, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GIRATINA, 4, false, true, false, "Renegade Pokémon", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Altered Forme", "altered", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", PokemonType.GHOST, PokemonType.DRAGON, 6.9, 650, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.LEVITATE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340), - ), - new PokemonSpecies(SpeciesId.CRESSELIA, 4, true, false, false, "Lunar Pokémon", PokemonType.PSYCHIC, null, 1.5, 85.6, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false), - new PokemonSpecies(SpeciesId.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", PokemonType.WATER, null, 0.4, 3.1, AbilityId.HYDRATION, AbilityId.NONE, AbilityId.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.MANAPHY, 4, false, false, true, "Seafaring Pokémon", PokemonType.WATER, null, 0.3, 1.4, AbilityId.HYDRATION, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", PokemonType.DARK, null, 1.5, 50.5, AbilityId.BAD_DREAMS, AbilityId.NONE, AbilityId.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", PokemonType.GRASS, null, 0.2, 2.1, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true, - new PokemonForm("Land Forme", "land", PokemonType.GRASS, null, 0.2, 2.1, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true), - new PokemonForm("Sky Forme", "sky", PokemonType.GRASS, PokemonType.FLYING, 0.4, 5.2, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300), - ), - new PokemonSpecies(SpeciesId.ARCEUS, 4, false, false, true, "Alpha Pokémon", PokemonType.NORMAL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "normal", PokemonType.NORMAL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true), - new PokemonForm("Fighting", "fighting", PokemonType.FIGHTING, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Flying", "flying", PokemonType.FLYING, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Poison", "poison", PokemonType.POISON, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ground", "ground", PokemonType.GROUND, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Rock", "rock", PokemonType.ROCK, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Bug", "bug", PokemonType.BUG, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ghost", "ghost", PokemonType.GHOST, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Steel", "steel", PokemonType.STEEL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Fire", "fire", PokemonType.FIRE, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Water", "water", PokemonType.WATER, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Grass", "grass", PokemonType.GRASS, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Electric", "electric", PokemonType.ELECTRIC, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Psychic", "psychic", PokemonType.PSYCHIC, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ice", "ice", PokemonType.ICE, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Dragon", "dragon", PokemonType.DRAGON, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Dark", "dark", PokemonType.DARK, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Fairy", "fairy", PokemonType.FAIRY, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("???", "unknown", PokemonType.UNKNOWN, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true), - ), - new PokemonSpecies(SpeciesId.VICTINI, 5, false, false, true, "Victory Pokémon", PokemonType.PSYCHIC, PokemonType.FIRE, 0.4, 4, AbilityId.VICTORY_STAR, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SNIVY, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.6, 8.1, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SERVINE, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.8, 16, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SERPERIOR, 5, false, false, false, "Regal Pokémon", PokemonType.GRASS, null, 3.3, 63, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.TEPIG, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, null, 0.5, 9.9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1, 55.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.6, 150, AbilityId.BLAZE, AbilityId.NONE, AbilityId.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", PokemonType.WATER, null, 0.5, 5.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.DEWOTT, 5, false, false, false, "Discipline Pokémon", PokemonType.WATER, null, 0.8, 24.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SAMUROTT, 5, false, false, false, "Formidable Pokémon", PokemonType.WATER, null, 1.5, 94.6, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PATRAT, 5, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.5, 11.6, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WATCHOG, 5, false, false, false, "Lookout Pokémon", PokemonType.NORMAL, null, 1.1, 27, AbilityId.ILLUMINATE, AbilityId.KEEN_EYE, AbilityId.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LILLIPUP, 5, false, false, false, "Puppy Pokémon", PokemonType.NORMAL, null, 0.4, 4.1, AbilityId.VITAL_SPIRIT, AbilityId.PICKUP, AbilityId.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.HERDIER, 5, false, false, false, "Loyal Dog Pokémon", PokemonType.NORMAL, null, 0.9, 14.7, AbilityId.INTIMIDATE, AbilityId.SAND_RUSH, AbilityId.SCRAPPY, 370, 65, 80, 65, 35, 65, 60, 120, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.STOUTLAND, 5, false, false, false, "Big-Hearted Pokémon", PokemonType.NORMAL, null, 1.2, 61, AbilityId.INTIMIDATE, AbilityId.SAND_RUSH, AbilityId.SCRAPPY, 500, 85, 110, 90, 45, 90, 80, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.PURRLOIN, 5, false, false, false, "Devious Pokémon", PokemonType.DARK, null, 0.4, 10.1, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.PRANKSTER, 281, 41, 50, 37, 50, 37, 66, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LIEPARD, 5, false, false, false, "Cruel Pokémon", PokemonType.DARK, null, 1.1, 37.5, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.PRANKSTER, 446, 64, 88, 50, 88, 50, 106, 90, 50, 156, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PANSAGE, 5, false, false, false, "Grass Monkey Pokémon", PokemonType.GRASS, null, 0.6, 10.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.OVERGROW, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.SIMISAGE, 5, false, false, false, "Thorn Monkey Pokémon", PokemonType.GRASS, null, 1.1, 30.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.OVERGROW, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.PANSEAR, 5, false, false, false, "High Temp Pokémon", PokemonType.FIRE, null, 0.6, 11, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.BLAZE, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.SIMISEAR, 5, false, false, false, "Ember Pokémon", PokemonType.FIRE, null, 1, 28, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.BLAZE, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.PANPOUR, 5, false, false, false, "Spray Pokémon", PokemonType.WATER, null, 0.6, 13.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.TORRENT, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.SIMIPOUR, 5, false, false, false, "Geyser Pokémon", PokemonType.WATER, null, 1, 29, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.TORRENT, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.MUNNA, 5, false, false, false, "Dream Eater Pokémon", PokemonType.PSYCHIC, null, 0.6, 23.3, AbilityId.FOREWARN, AbilityId.SYNCHRONIZE, AbilityId.TELEPATHY, 292, 76, 25, 45, 67, 55, 24, 190, 50, 58, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.MUSHARNA, 5, false, false, false, "Drowsing Pokémon", PokemonType.PSYCHIC, null, 1.1, 60.5, AbilityId.FOREWARN, AbilityId.SYNCHRONIZE, AbilityId.TELEPATHY, 487, 116, 55, 85, 107, 95, 29, 75, 50, 170, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.PIDOVE, 5, false, false, false, "Tiny Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.1, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 264, 50, 55, 50, 36, 30, 43, 255, 50, 53, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.TRANQUILL, 5, false, false, false, "Wild Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 358, 62, 77, 62, 50, 42, 65, 120, 50, 125, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.UNFEZANT, 5, false, false, false, "Proud Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 29, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 488, 80, 115, 80, 65, 55, 93, 45, 50, 244, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.BLITZLE, 5, false, false, false, "Electrified Pokémon", PokemonType.ELECTRIC, null, 0.8, 29.8, AbilityId.LIGHTNING_ROD, AbilityId.MOTOR_DRIVE, AbilityId.SAP_SIPPER, 295, 45, 60, 32, 50, 32, 76, 190, 70, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ZEBSTRIKA, 5, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.6, 79.5, AbilityId.LIGHTNING_ROD, AbilityId.MOTOR_DRIVE, AbilityId.SAP_SIPPER, 497, 75, 100, 63, 80, 63, 116, 75, 70, 174, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ROGGENROLA, 5, false, false, false, "Mantle Pokémon", PokemonType.ROCK, null, 0.4, 18, AbilityId.STURDY, AbilityId.WEAK_ARMOR, AbilityId.SAND_FORCE, 280, 55, 75, 85, 25, 25, 15, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.BOLDORE, 5, false, false, false, "Ore Pokémon", PokemonType.ROCK, null, 0.9, 102, AbilityId.STURDY, AbilityId.WEAK_ARMOR, AbilityId.SAND_FORCE, 390, 70, 105, 105, 50, 40, 20, 120, 50, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GIGALITH, 5, false, false, false, "Compressed Pokémon", PokemonType.ROCK, null, 1.7, 260, AbilityId.STURDY, AbilityId.SAND_STREAM, AbilityId.SAND_FORCE, 515, 85, 135, 130, 60, 80, 25, 45, 50, 258, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.WOOBAT, 5, false, false, false, "Bat Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.4, 2.1, AbilityId.UNAWARE, AbilityId.KLUTZ, AbilityId.SIMPLE, 323, 65, 45, 43, 55, 43, 72, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SWOOBAT, 5, false, false, false, "Courting Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.9, 10.5, AbilityId.UNAWARE, AbilityId.KLUTZ, AbilityId.SIMPLE, 425, 67, 57, 55, 77, 55, 114, 45, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DRILBUR, 5, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.3, 8.5, AbilityId.SAND_RUSH, AbilityId.SAND_FORCE, AbilityId.MOLD_BREAKER, 328, 60, 85, 40, 30, 45, 68, 120, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.EXCADRILL, 5, false, false, false, "Subterrene Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 40.4, AbilityId.SAND_RUSH, AbilityId.SAND_FORCE, AbilityId.MOLD_BREAKER, 508, 110, 135, 60, 50, 65, 88, 60, 50, 178, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.AUDINO, 5, false, false, false, "Hearing Pokémon", PokemonType.NORMAL, null, 1.1, 31, AbilityId.HEALER, AbilityId.REGENERATOR, AbilityId.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.1, 31, AbilityId.HEALER, AbilityId.REGENERATOR, AbilityId.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FAIRY, 1.5, 32, AbilityId.REGENERATOR, AbilityId.REGENERATOR, AbilityId.REGENERATOR, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), //Custom Ability, base form Hidden Ability - ), - new PokemonSpecies(SpeciesId.TIMBURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 0.6, 12.5, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 305, 75, 80, 55, 25, 35, 35, 180, 70, 61, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(SpeciesId.GURDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.2, 40, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 405, 85, 105, 85, 40, 50, 40, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(SpeciesId.CONKELDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.4, 87, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 505, 105, 140, 95, 55, 65, 45, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(SpeciesId.TYMPOLE, 5, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.5, 4.5, AbilityId.SWIFT_SWIM, AbilityId.HYDRATION, AbilityId.WATER_ABSORB, 294, 50, 50, 40, 50, 40, 64, 255, 50, 59, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.PALPITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.8, 17, AbilityId.SWIFT_SWIM, AbilityId.HYDRATION, AbilityId.WATER_ABSORB, 384, 75, 65, 55, 65, 55, 69, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SEISMITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 62, AbilityId.SWIFT_SWIM, AbilityId.POISON_TOUCH, AbilityId.WATER_ABSORB, 509, 105, 95, 75, 85, 75, 74, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.THROH, 5, false, false, false, "Judo Pokémon", PokemonType.FIGHTING, null, 1.3, 55.5, AbilityId.GUTS, AbilityId.INNER_FOCUS, AbilityId.MOLD_BREAKER, 465, 120, 100, 85, 30, 85, 45, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.SAWK, 5, false, false, false, "Karate Pokémon", PokemonType.FIGHTING, null, 1.4, 51, AbilityId.STURDY, AbilityId.INNER_FOCUS, AbilityId.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.SEWADDLE, 5, false, false, false, "Sewing Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 2.5, AbilityId.SWARM, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 7.3, AbilityId.LEAF_GUARD, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", PokemonType.BUG, PokemonType.GRASS, 1.2, 20.5, AbilityId.SWARM, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.VENIPEDE, 5, false, false, false, "Centipede Pokémon", PokemonType.BUG, PokemonType.POISON, 0.4, 5.3, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 58.5, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", PokemonType.BUG, PokemonType.POISON, 2.5, 200.5, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.COTTONEE, 5, false, false, false, "Cotton Puff Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.3, 0.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 280, 40, 27, 60, 37, 50, 66, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.7, 6.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PETILIL, 5, false, false, false, "Bulb Pokémon", PokemonType.GRASS, null, 0.5, 6.6, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.LILLIGANT, 5, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 1.1, 16.3, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), - new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, AbilityId.ROCK_HEAD, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), - new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, AbilityId.RATTLED, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), - ), - new PokemonSpecies(SpeciesId.SANDILE, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 0.7, 15.2, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 1, 33.4, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.KROOKODILE, 5, false, false, false, "Intimidation Pokémon", PokemonType.GROUND, PokemonType.DARK, 1.5, 96.3, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 519, 95, 117, 80, 65, 70, 92, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", PokemonType.FIRE, null, 0.6, 37.5, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DARMANITAN, 5, false, false, false, "Blazing Pokémon", PokemonType.FIRE, null, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Standard Mode", "", PokemonType.FIRE, null, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), - new PokemonForm("Zen Mode", "zen", PokemonType.FIRE, PokemonType.PSYCHIC, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189), - ), - new PokemonSpecies(SpeciesId.MARACTUS, 5, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 1, 28, AbilityId.WATER_ABSORB, AbilityId.CHLOROPHYLL, AbilityId.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.3, 14.5, AbilityId.STURDY, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CRUSTLE, 5, false, false, false, "Stone Home Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.4, 200, AbilityId.STURDY, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 485, 70, 105, 125, 65, 75, 45, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SCRAGGY, 5, false, false, false, "Shedding Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 0.6, 11.8, AbilityId.SHED_SKIN, AbilityId.MOXIE, AbilityId.INTIMIDATE, 348, 50, 75, 70, 35, 70, 48, 180, 35, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SCRAFTY, 5, false, false, false, "Hoodlum Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 1.1, 30, AbilityId.SHED_SKIN, AbilityId.MOXIE, AbilityId.INTIMIDATE, 488, 65, 90, 115, 45, 115, 58, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SIGILYPH, 5, false, false, false, "Avianoid Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.4, 14, AbilityId.WONDER_SKIN, AbilityId.MAGIC_GUARD, AbilityId.TINTED_LENS, 490, 72, 58, 80, 103, 80, 97, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.YAMASK, 5, false, false, false, "Spirit Pokémon", PokemonType.GHOST, null, 0.5, 1.5, AbilityId.MUMMY, AbilityId.NONE, AbilityId.NONE, 303, 38, 30, 85, 55, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", PokemonType.GHOST, null, 1.7, 76.5, AbilityId.MUMMY, AbilityId.NONE, AbilityId.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.7, 16.5, AbilityId.SOLID_ROCK, AbilityId.STURDY, AbilityId.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 1.2, 81, AbilityId.SOLID_ROCK, AbilityId.STURDY, AbilityId.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.ARCHEN, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.5, 9.5, AbilityId.DEFEATIST, AbilityId.NONE, AbilityId.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden - new PokemonSpecies(SpeciesId.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.4, 32, AbilityId.DEFEATIST, AbilityId.NONE, AbilityId.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden - new PokemonSpecies(SpeciesId.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", PokemonType.POISON, null, 0.6, 31, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", PokemonType.POISON, null, 1.9, 107.3, AbilityId.STENCH, AbilityId.WEAK_ARMOR, AbilityId.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.POISON, null, 1.9, 107.3, AbilityId.STENCH, AbilityId.WEAK_ARMOR, AbilityId.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.POISON, PokemonType.STEEL, 21, 999.9, AbilityId.TOXIC_DEBRIS, AbilityId.TOXIC_DEBRIS, AbilityId.TOXIC_DEBRIS, 574, 115, 121, 102, 81, 102, 53, 60, 50, 166), - ), - new PokemonSpecies(SpeciesId.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", PokemonType.DARK, null, 0.7, 12.5, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", PokemonType.DARK, null, 1.6, 81.1, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.MINCCINO, 5, false, false, false, "Chinchilla Pokémon", PokemonType.NORMAL, null, 0.4, 5.8, AbilityId.CUTE_CHARM, AbilityId.TECHNICIAN, AbilityId.SKILL_LINK, 300, 55, 50, 40, 40, 40, 75, 255, 50, 60, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.CINCCINO, 5, false, false, false, "Scarf Pokémon", PokemonType.NORMAL, null, 0.5, 7.5, AbilityId.CUTE_CHARM, AbilityId.TECHNICIAN, AbilityId.SKILL_LINK, 470, 75, 95, 60, 65, 60, 115, 60, 50, 165, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.GOTHITA, 5, false, false, false, "Fixation Pokémon", PokemonType.PSYCHIC, null, 0.4, 5.8, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 290, 45, 30, 50, 55, 65, 45, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(SpeciesId.GOTHORITA, 5, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.7, 18, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 390, 60, 45, 70, 75, 85, 55, 100, 50, 137, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(SpeciesId.GOTHITELLE, 5, false, false, false, "Astral Body Pokémon", PokemonType.PSYCHIC, null, 1.5, 44, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 490, 70, 55, 95, 95, 110, 65, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(SpeciesId.SOLOSIS, 5, false, false, false, "Cell Pokémon", PokemonType.PSYCHIC, null, 0.3, 1, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 290, 45, 30, 40, 105, 50, 20, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DUOSION, 5, false, false, false, "Mitosis Pokémon", PokemonType.PSYCHIC, null, 0.6, 8, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 370, 65, 40, 50, 125, 60, 30, 100, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.REUNICLUS, 5, false, false, false, "Multiplying Pokémon", PokemonType.PSYCHIC, null, 1, 20.1, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 490, 110, 65, 75, 125, 85, 30, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DUCKLETT, 5, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.5, 5.5, AbilityId.KEEN_EYE, AbilityId.BIG_PECKS, AbilityId.HYDRATION, 305, 62, 44, 50, 44, 50, 55, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SWANNA, 5, false, false, false, "White Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.3, 24.2, AbilityId.KEEN_EYE, AbilityId.BIG_PECKS, AbilityId.HYDRATION, 473, 75, 87, 63, 87, 63, 98, 45, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.VANILLITE, 5, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.4, 5.7, AbilityId.ICE_BODY, AbilityId.SNOW_CLOAK, AbilityId.WEAK_ARMOR, 305, 36, 50, 50, 65, 60, 44, 255, 50, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.VANILLISH, 5, false, false, false, "Icy Snow Pokémon", PokemonType.ICE, null, 1.1, 41, AbilityId.ICE_BODY, AbilityId.SNOW_CLOAK, AbilityId.WEAK_ARMOR, 395, 51, 65, 65, 80, 75, 59, 120, 50, 138, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.VANILLUXE, 5, false, false, false, "Snowstorm Pokémon", PokemonType.ICE, null, 1.3, 57.5, AbilityId.ICE_BODY, AbilityId.SNOW_WARNING, AbilityId.WEAK_ARMOR, 535, 71, 95, 85, 110, 95, 79, 45, 50, 268, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.DEERLING, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - ), - new PokemonSpecies(SpeciesId.SAWSBUCK, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - ), - new PokemonSpecies(SpeciesId.EMOLGA, 5, false, false, false, "Sky Squirrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 5, AbilityId.STATIC, AbilityId.NONE, AbilityId.MOTOR_DRIVE, 428, 55, 75, 60, 75, 60, 103, 200, 50, 150, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.KARRABLAST, 5, false, false, false, "Clamping Pokémon", PokemonType.BUG, null, 0.5, 5.9, AbilityId.SWARM, AbilityId.SHED_SKIN, AbilityId.NO_GUARD, 315, 50, 75, 45, 40, 45, 60, 200, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ESCAVALIER, 5, false, false, false, "Cavalry Pokémon", PokemonType.BUG, PokemonType.STEEL, 1, 33, AbilityId.SWARM, AbilityId.SHELL_ARMOR, AbilityId.OVERCOAT, 495, 70, 135, 105, 60, 105, 20, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FOONGUS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.REGENERATOR, 294, 69, 55, 45, 55, 55, 15, 190, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.AMOONGUSS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.6, 10.5, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.REGENERATOR, 464, 114, 85, 70, 85, 80, 30, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FRILLISH, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 1.2, 33, AbilityId.WATER_ABSORB, AbilityId.CURSED_BODY, AbilityId.DAMP, 335, 55, 40, 50, 65, 85, 40, 190, 50, 67, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.JELLICENT, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 2.2, 135, AbilityId.WATER_ABSORB, AbilityId.CURSED_BODY, AbilityId.DAMP, 480, 100, 60, 70, 85, 105, 60, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(SpeciesId.ALOMOMOLA, 5, false, false, false, "Caring Pokémon", PokemonType.WATER, null, 1.2, 31.6, AbilityId.HEALER, AbilityId.HYDRATION, AbilityId.REGENERATOR, 470, 165, 75, 80, 40, 45, 65, 75, 70, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.JOLTIK, 5, false, false, false, "Attaching Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.1, 0.6, AbilityId.COMPOUND_EYES, AbilityId.UNNERVE, AbilityId.SWARM, 319, 50, 47, 50, 57, 50, 65, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALVANTULA, 5, false, false, false, "EleSpider Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.8, 14.3, AbilityId.COMPOUND_EYES, AbilityId.UNNERVE, AbilityId.SWARM, 472, 70, 77, 60, 97, 60, 108, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FERROSEED, 5, false, false, false, "Thorn Seed Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.6, 18.8, AbilityId.IRON_BARBS, AbilityId.NONE, AbilityId.ANTICIPATION, 305, 44, 50, 91, 24, 86, 10, 255, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FERROTHORN, 5, false, false, false, "Thorn Pod Pokémon", PokemonType.GRASS, PokemonType.STEEL, 1, 110, AbilityId.IRON_BARBS, AbilityId.NONE, AbilityId.ANTICIPATION, 489, 74, 94, 131, 54, 116, 20, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.KLINK, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.3, 21, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 300, 40, 55, 70, 45, 60, 30, 130, 50, 60, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(SpeciesId.KLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 51, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 440, 60, 80, 95, 70, 85, 50, 60, 50, 154, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(SpeciesId.KLINKLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 81, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(SpeciesId.TYNAMO, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 0.2, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 1.2, 22, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 2.1, 80.5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.ELGYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 0.5, 9, AbilityId.TELEPATHY, AbilityId.SYNCHRONIZE, AbilityId.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 1, 34.5, AbilityId.TELEPATHY, AbilityId.SYNCHRONIZE, AbilityId.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LITWICK, 5, false, false, false, "Candle Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.3, 3.1, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.LAMPENT, 5, false, false, false, "Lamp Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.6, 13, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 370, 60, 40, 60, 95, 60, 55, 90, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CHANDELURE, 5, false, false, false, "Luring Pokémon", PokemonType.GHOST, PokemonType.FIRE, 1, 34.3, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 520, 60, 55, 90, 145, 90, 80, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.AXEW, 5, false, false, false, "Tusk Pokémon", PokemonType.DRAGON, null, 0.6, 18, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 320, 46, 87, 60, 30, 40, 57, 75, 35, 64, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.FRAXURE, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1, 36, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 410, 66, 117, 70, 40, 50, 67, 60, 35, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HAXORUS, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1.8, 105.5, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 540, 76, 147, 90, 60, 70, 97, 45, 35, 270, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CUBCHOO, 5, false, false, false, "Chill Pokémon", PokemonType.ICE, null, 0.5, 8.5, AbilityId.SNOW_CLOAK, AbilityId.SLUSH_RUSH, AbilityId.RATTLED, 305, 55, 70, 40, 60, 40, 40, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BEARTIC, 5, false, false, false, "Freezing Pokémon", PokemonType.ICE, null, 2.6, 260, AbilityId.SNOW_CLOAK, AbilityId.SLUSH_RUSH, AbilityId.SWIFT_SWIM, 505, 95, 130, 80, 70, 80, 50, 60, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CRYOGONAL, 5, false, false, false, "Crystallizing Pokémon", PokemonType.ICE, null, 1.1, 148, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 515, 80, 50, 50, 95, 135, 105, 25, 50, 180, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.SHELMET, 5, false, false, false, "Snail Pokémon", PokemonType.BUG, null, 0.4, 7.7, AbilityId.HYDRATION, AbilityId.SHELL_ARMOR, AbilityId.OVERCOAT, 305, 50, 40, 85, 40, 65, 25, 200, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ACCELGOR, 5, false, false, false, "Shell Out Pokémon", PokemonType.BUG, null, 0.8, 25.3, AbilityId.HYDRATION, AbilityId.STICKY_HOLD, AbilityId.UNBURDEN, 495, 80, 70, 40, 100, 60, 145, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.STUNFISK, 5, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.ELECTRIC, 0.7, 11, AbilityId.STATIC, AbilityId.LIMBER, AbilityId.SAND_VEIL, 471, 109, 66, 84, 81, 99, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MIENFOO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 0.9, 20, AbilityId.INNER_FOCUS, AbilityId.REGENERATOR, AbilityId.RECKLESS, 350, 45, 85, 50, 55, 50, 65, 180, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.MIENSHAO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 1.4, 35.5, AbilityId.INNER_FOCUS, AbilityId.REGENERATOR, AbilityId.RECKLESS, 510, 65, 125, 60, 95, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DRUDDIGON, 5, false, false, false, "Cave Pokémon", PokemonType.DRAGON, null, 1.6, 139, AbilityId.ROUGH_SKIN, AbilityId.SHEER_FORCE, AbilityId.MOLD_BREAKER, 485, 77, 120, 90, 60, 90, 48, 45, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GOLETT, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1, 92, AbilityId.IRON_FIST, AbilityId.KLUTZ, AbilityId.NO_GUARD, 303, 59, 74, 50, 35, 50, 35, 190, 50, 61, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.GOLURK, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 2.8, 330, AbilityId.IRON_FIST, AbilityId.KLUTZ, AbilityId.NO_GUARD, 483, 89, 124, 80, 55, 80, 55, 90, 50, 169, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.PAWNIARD, 5, false, false, false, "Sharp Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 0.5, 10.2, AbilityId.DEFIANT, AbilityId.INNER_FOCUS, AbilityId.PRESSURE, 340, 45, 85, 70, 40, 40, 60, 120, 35, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BISHARP, 5, false, false, false, "Sword Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 1.6, 70, AbilityId.DEFIANT, AbilityId.INNER_FOCUS, AbilityId.PRESSURE, 490, 65, 125, 100, 60, 70, 70, 45, 35, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BOUFFALANT, 5, false, false, false, "Bash Buffalo Pokémon", PokemonType.NORMAL, null, 1.6, 94.6, AbilityId.RECKLESS, AbilityId.SAP_SIPPER, AbilityId.SOUNDPROOF, 490, 95, 110, 95, 40, 95, 55, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RUFFLET, 5, false, false, false, "Eaglet Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 10.5, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.HUSTLE, 350, 70, 83, 50, 37, 50, 60, 190, 50, 70, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.BRAVIARY, 5, false, false, false, "Valiant Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 41, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.DEFIANT, 510, 100, 123, 75, 57, 75, 80, 60, 50, 179, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.VULLABY, 5, false, false, false, "Diapered Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 9, AbilityId.BIG_PECKS, AbilityId.OVERCOAT, AbilityId.WEAK_ARMOR, 370, 70, 55, 75, 45, 65, 60, 190, 35, 74, GrowthRate.SLOW, 0, false), - new PokemonSpecies(SpeciesId.MANDIBUZZ, 5, false, false, false, "Bone Vulture Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.2, 39.5, AbilityId.BIG_PECKS, AbilityId.OVERCOAT, AbilityId.WEAK_ARMOR, 510, 110, 65, 105, 55, 95, 80, 60, 35, 179, GrowthRate.SLOW, 0, false), - new PokemonSpecies(SpeciesId.HEATMOR, 5, false, false, false, "Anteater Pokémon", PokemonType.FIRE, null, 1.4, 58, AbilityId.GLUTTONY, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, 484, 85, 97, 66, 105, 66, 65, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DURANT, 5, false, false, false, "Iron Ant Pokémon", PokemonType.BUG, PokemonType.STEEL, 0.3, 33, AbilityId.SWARM, AbilityId.HUSTLE, AbilityId.TRUANT, 484, 58, 109, 112, 48, 48, 109, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DEINO, 5, false, false, false, "Irate Pokémon", PokemonType.DARK, PokemonType.DRAGON, 0.8, 17.3, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.NONE, 300, 52, 65, 50, 45, 50, 38, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.ZWEILOUS, 5, false, false, false, "Hostile Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.4, 50, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.NONE, 420, 72, 85, 70, 65, 70, 58, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HYDREIGON, 5, false, false, false, "Brutal Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.8, 160, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 92, 105, 90, 125, 90, 98, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.LARVESTA, 5, false, false, false, "Torch Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.1, 28.8, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.SWARM, 360, 55, 85, 55, 50, 55, 60, 45, 50, 72, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.VOLCARONA, 5, false, false, false, "Sun Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.6, 46, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.SWARM, 550, 85, 60, 65, 135, 105, 100, 15, 50, 275, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.COBALION, 5, true, false, false, "Iron Will Pokémon", PokemonType.STEEL, PokemonType.FIGHTING, 2.1, 250, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 90, 129, 90, 72, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TERRAKION, 5, true, false, false, "Cavern Pokémon", PokemonType.ROCK, PokemonType.FIGHTING, 1.9, 260, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 129, 90, 72, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.VIRIZION, 5, true, false, false, "Grassland Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 2, 200, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 90, 72, 90, 129, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TORNADUS, 5, true, false, false, "Cyclone Pokémon", PokemonType.FLYING, null, 1.5, 63, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FLYING, null, 1.5, 63, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.FLYING, null, 1.4, 63, AbilityId.REGENERATOR, AbilityId.NONE, AbilityId.REGENERATOR, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290), - ), - new PokemonSpecies(SpeciesId.THUNDURUS, 5, true, false, false, "Bolt Strike Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.ELECTRIC, PokemonType.FLYING, 3, 61, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.VOLT_ABSORB, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290), - ), - new PokemonSpecies(SpeciesId.RESHIRAM, 5, false, true, false, "Vast White Pokémon", PokemonType.DRAGON, PokemonType.FIRE, 3.2, 330, AbilityId.TURBOBLAZE, AbilityId.NONE, AbilityId.NONE, 680, 100, 120, 100, 150, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ZEKROM, 5, false, true, false, "Deep Black Pokémon", PokemonType.DRAGON, PokemonType.ELECTRIC, 2.9, 345, AbilityId.TERAVOLT, AbilityId.NONE, AbilityId.NONE, 680, 100, 150, 120, 120, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.LANDORUS, 5, true, false, false, "Abundance Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.GROUND, PokemonType.FLYING, 1.3, 68, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300), - ), - new PokemonSpecies(SpeciesId.KYUREM, 5, false, true, false, "Boundary Pokémon", PokemonType.DRAGON, PokemonType.ICE, 3, 325, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.ICE, 3, 325, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true), - new PokemonForm("Black", "black", PokemonType.DRAGON, PokemonType.ICE, 3.3, 325, AbilityId.TERAVOLT, AbilityId.NONE, AbilityId.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350), - new PokemonForm("White", "white", PokemonType.DRAGON, PokemonType.ICE, 3.6, 325, AbilityId.TURBOBLAZE, AbilityId.NONE, AbilityId.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350), - ), - new PokemonSpecies(SpeciesId.KELDEO, 5, false, false, true, "Colt Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true, - new PokemonForm("Ordinary Form", "ordinary", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true), - new PokemonForm("Resolute", "resolute", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290), - ), - new PokemonSpecies(SpeciesId.MELOETTA, 5, false, false, true, "Melody Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Aria Forme", "aria", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true), - new PokemonForm("Pirouette Forme", "pirouette", PokemonType.NORMAL, PokemonType.FIGHTING, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true), - ), - new PokemonSpecies(SpeciesId.GENESECT, 5, false, false, true, "Paleozoic Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true), - new PokemonForm("Shock Drive", "shock", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Burn Drive", "burn", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Chill Drive", "chill", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Douse Drive", "douse", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - ), - new PokemonSpecies(SpeciesId.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", PokemonType.GRASS, null, 0.4, 9, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, null, 0.7, 29, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.FENNEKIN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.4, 9.4, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.BRAIXEN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1, 14.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.DELPHOX, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 39, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.TORRENT, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true), - ), - new PokemonSpecies(SpeciesId.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.NONE, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true), - ), - new PokemonSpecies(SpeciesId.GRENINJA, 6, false, false, false, "Ninja Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.BATTLE_BOND, AbilityId.NONE, AbilityId.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true), - new PokemonForm("Ash", "ash", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.BATTLE_BOND, AbilityId.NONE, AbilityId.NONE, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265), - ), - new PokemonSpecies(SpeciesId.BUNNELBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, null, 0.4, 5, AbilityId.PICKUP, AbilityId.CHEEK_POUCH, AbilityId.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DIGGERSBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, PokemonType.GROUND, 1, 42.4, AbilityId.PICKUP, AbilityId.CHEEK_POUCH, AbilityId.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FLETCHLING, 6, false, false, false, "Tiny Robin Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.7, AbilityId.BIG_PECKS, AbilityId.NONE, AbilityId.GALE_WINGS, 278, 45, 50, 43, 40, 38, 62, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.FLETCHINDER, 6, false, false, false, "Ember Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.7, 16, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.GALE_WINGS, 382, 62, 73, 55, 56, 52, 84, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.TALONFLAME, 6, false, false, false, "Scorching Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.2, 24.5, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.GALE_WINGS, 499, 78, 81, 71, 74, 69, 126, 45, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SCATTERBUG, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - ), - new PokemonSpecies(SpeciesId.SPEWPA, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.SHED_SKIN, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - ), - new PokemonSpecies(SpeciesId.VIVILLON, 6, false, false, false, "Scale Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("River Pattern", "river", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - ), - new PokemonSpecies(SpeciesId.LITLEO, 6, false, false, false, "Lion Cub Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 0.6, 13.5, AbilityId.RIVALRY, AbilityId.UNNERVE, AbilityId.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false), - new PokemonSpecies(SpeciesId.PYROAR, 6, false, false, false, "Royal Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 1.5, 81.5, AbilityId.RIVALRY, AbilityId.UNNERVE, AbilityId.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true), - new PokemonSpecies(SpeciesId.FLABEBE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - ), - new PokemonSpecies(SpeciesId.FLOETTE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - ), - new PokemonSpecies(SpeciesId.FLORGES, 6, false, false, false, "Garden Pokémon", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - ), - new PokemonSpecies(SpeciesId.SKIDDO, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 0.9, 31, AbilityId.SAP_SIPPER, AbilityId.NONE, AbilityId.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GOGOAT, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 1.7, 91, AbilityId.SAP_SIPPER, AbilityId.NONE, AbilityId.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PANCHAM, 6, false, false, false, "Playful Pokémon", PokemonType.FIGHTING, null, 0.6, 8, AbilityId.IRON_FIST, AbilityId.MOLD_BREAKER, AbilityId.SCRAPPY, 348, 67, 82, 62, 46, 48, 43, 220, 50, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PANGORO, 6, false, false, false, "Daunting Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 2.1, 136, AbilityId.IRON_FIST, AbilityId.MOLD_BREAKER, AbilityId.SCRAPPY, 495, 95, 124, 78, 69, 71, 58, 65, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FURFROU, 6, false, false, false, "Poodle Pokémon", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Natural Form", "", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Heart Trim", "heart", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Star Trim", "star", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Diamond Trim", "diamond", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Debutante Trim", "debutante", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Matron Trim", "matron", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Dandy Trim", "dandy", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("La Reine Trim", "la-reine", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Kabuki Trim", "kabuki", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Pharaoh Trim", "pharaoh", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - ), - new PokemonSpecies(SpeciesId.ESPURR, 6, false, false, false, "Restraint Pokémon", PokemonType.PSYCHIC, null, 0.3, 3.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.OWN_TEMPO, 355, 62, 48, 54, 63, 60, 68, 190, 50, 71, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MEOWSTIC, 6, false, false, false, "Constraint Pokémon", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, "", true), - new PokemonForm("Female", "female", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.COMPETITIVE, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, null, true), - ), - new PokemonSpecies(SpeciesId.HONEDGE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 2, AbilityId.NO_GUARD, AbilityId.NONE, AbilityId.NONE, 325, 45, 80, 100, 35, 37, 28, 180, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DOUBLADE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 4.5, AbilityId.NO_GUARD, AbilityId.NONE, AbilityId.NONE, 448, 59, 110, 150, 45, 49, 35, 90, 50, 157, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.AEGISLASH, 6, false, false, false, "Royal Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Shield Forme", "shield", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, false, "", true), - new PokemonForm("Blade Forme", "blade", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 140, 50, 140, 50, 60, 45, 50, 250), - ), - new PokemonSpecies(SpeciesId.SPRITZEE, 6, false, false, false, "Perfume Pokémon", PokemonType.FAIRY, null, 0.2, 0.5, AbilityId.HEALER, AbilityId.NONE, AbilityId.AROMA_VEIL, 341, 78, 52, 60, 63, 65, 23, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.AROMATISSE, 6, false, false, false, "Fragrance Pokémon", PokemonType.FAIRY, null, 0.8, 15.5, AbilityId.HEALER, AbilityId.NONE, AbilityId.AROMA_VEIL, 462, 101, 72, 72, 99, 89, 29, 140, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SWIRLIX, 6, false, false, false, "Cotton Candy Pokémon", PokemonType.FAIRY, null, 0.4, 3.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.UNBURDEN, 341, 62, 48, 66, 59, 57, 49, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SLURPUFF, 6, false, false, false, "Meringue Pokémon", PokemonType.FAIRY, null, 0.8, 5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.UNBURDEN, 480, 82, 80, 86, 85, 75, 72, 140, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.INKAY, 6, false, false, false, "Revolving Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 0.4, 3.5, AbilityId.CONTRARY, AbilityId.SUCTION_CUPS, AbilityId.INFILTRATOR, 288, 53, 54, 53, 37, 46, 45, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MALAMAR, 6, false, false, false, "Overturning Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 1.5, 47, AbilityId.CONTRARY, AbilityId.SUCTION_CUPS, AbilityId.INFILTRATOR, 482, 86, 92, 88, 68, 75, 73, 80, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BINACLE, 6, false, false, false, "Two-Handed Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 31, AbilityId.TOUGH_CLAWS, AbilityId.SNIPER, AbilityId.PICKPOCKET, 306, 42, 52, 67, 39, 56, 50, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BARBARACLE, 6, false, false, false, "Collective Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 96, AbilityId.TOUGH_CLAWS, AbilityId.SNIPER, AbilityId.PICKPOCKET, 500, 72, 105, 115, 54, 86, 68, 45, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SKRELP, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.WATER, 0.5, 7.3, AbilityId.POISON_POINT, AbilityId.POISON_TOUCH, AbilityId.ADAPTABILITY, 320, 50, 60, 60, 60, 60, 30, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DRAGALGE, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.DRAGON, 1.8, 81.5, AbilityId.POISON_POINT, AbilityId.POISON_TOUCH, AbilityId.ADAPTABILITY, 494, 65, 75, 90, 97, 123, 44, 55, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CLAUNCHER, 6, false, false, false, "Water Gun Pokémon", PokemonType.WATER, null, 0.5, 8.3, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.NONE, 330, 50, 53, 62, 58, 63, 44, 225, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CLAWITZER, 6, false, false, false, "Howitzer Pokémon", PokemonType.WATER, null, 1.3, 35.3, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.NONE, 500, 71, 73, 88, 120, 89, 59, 55, 50, 100, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HELIOPTILE, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 0.5, 6, AbilityId.DRY_SKIN, AbilityId.SAND_VEIL, AbilityId.SOLAR_POWER, 289, 44, 38, 33, 61, 43, 70, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HELIOLISK, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 1, 21, AbilityId.DRY_SKIN, AbilityId.SAND_VEIL, AbilityId.SOLAR_POWER, 481, 62, 55, 52, 109, 94, 109, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TYRUNT, 6, false, false, false, "Royal Heir Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 0.8, 26, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.STURDY, 362, 58, 89, 77, 45, 45, 48, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.TYRANTRUM, 6, false, false, false, "Despot Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 2.5, 270, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.ROCK_HEAD, 521, 82, 121, 119, 69, 59, 71, 45, 50, 182, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.AMAURA, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 1.3, 25.2, AbilityId.REFRIGERATE, AbilityId.NONE, AbilityId.SNOW_WARNING, 362, 77, 59, 50, 67, 63, 46, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.AURORUS, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 2.7, 225, AbilityId.REFRIGERATE, AbilityId.NONE, AbilityId.SNOW_WARNING, 521, 123, 77, 72, 99, 92, 58, 45, 50, 104, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.SYLVEON, 6, false, false, false, "Intertwining Pokémon", PokemonType.FAIRY, null, 1, 23.5, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.PIXILATE, 525, 95, 65, 65, 110, 130, 60, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.HAWLUCHA, 6, false, false, false, "Wrestling Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 0.8, 21.5, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.MOLD_BREAKER, 500, 78, 92, 75, 74, 63, 118, 100, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DEDENNE, 6, false, false, false, "Antenna Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 0.2, 2.2, AbilityId.CHEEK_POUCH, AbilityId.PICKUP, AbilityId.PLUS, 431, 67, 58, 57, 81, 67, 101, 180, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CARBINK, 6, false, false, false, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.3, 5.7, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.STURDY, 500, 50, 50, 150, 50, 150, 50, 60, 50, 100, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GOOMY, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.3, 2.8, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 300, 45, 50, 35, 55, 75, 40, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.SLIGGOO, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.8, 17.5, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 452, 68, 75, 53, 83, 113, 60, 45, 35, 158, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.GOODRA, 6, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 2, 150.5, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 600, 90, 100, 70, 110, 150, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.KLEFKI, 6, false, false, false, "Key Ring Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.2, 3, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.MAGICIAN, 470, 57, 80, 91, 80, 87, 75, 75, 50, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.PHANTUMP, 6, false, false, false, "Stump Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 7, AbilityId.NATURAL_CURE, AbilityId.FRISK, AbilityId.HARVEST, 309, 43, 70, 48, 50, 60, 38, 120, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", PokemonType.GHOST, PokemonType.GRASS, 1.5, 71, AbilityId.NATURAL_CURE, AbilityId.FRISK, AbilityId.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), - new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.3, 3.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), - new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 0.5, 7.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), - new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 0.8, 15, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true), - ), - new PokemonSpecies(SpeciesId.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), - new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.7, 9.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), - new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 1.1, 14, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), - new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 1.7, 39, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true), - ), - new PokemonSpecies(SpeciesId.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", PokemonType.ICE, null, 1, 99.5, AbilityId.OWN_TEMPO, AbilityId.ICE_BODY, AbilityId.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.AVALUGG, 6, false, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 2, 505, AbilityId.OWN_TEMPO, AbilityId.ICE_BODY, AbilityId.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.NOIBAT, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 0.5, 8, AbilityId.FRISK, AbilityId.INFILTRATOR, AbilityId.TELEPATHY, 245, 40, 30, 35, 45, 40, 55, 190, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.NOIVERN, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 1.5, 85, AbilityId.FRISK, AbilityId.INFILTRATOR, AbilityId.TELEPATHY, 535, 85, 70, 80, 97, 80, 123, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.XERNEAS, 6, false, true, false, "Life Pokémon", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Neutral Mode", "neutral", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, false, null, true), - new PokemonForm("Active Mode", "active", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340) - ), - new PokemonSpecies(SpeciesId.YVELTAL, 6, false, true, false, "Destruction Pokémon", PokemonType.DARK, PokemonType.FLYING, 5.8, 203, AbilityId.DARK_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ZYGARDE, 6, false, true, false, "Order Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("50% Forme", "50", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), - new PokemonForm("10% Forme", "10", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true), - new PokemonForm("50% Forme Power Construct", "50-pc", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), - new PokemonForm("10% Forme Power Construct", "10-pc", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true), - new PokemonForm("Complete Forme (50% PC)", "complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354), - new PokemonForm("Complete Forme (10% PC)", "10-complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete"), - ), - new PokemonSpecies(SpeciesId.DIANCIE, 6, false, false, true, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FAIRY, 1.1, 27.8, AbilityId.MAGIC_BOUNCE, AbilityId.NONE, AbilityId.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300), - ), - new PokemonSpecies(SpeciesId.HOOPA, 6, false, false, true, "Mischief Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hoopa Confined", "", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true), - new PokemonForm("Hoopa Unbound", "unbound", PokemonType.PSYCHIC, PokemonType.DARK, 6.5, 490, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340), - ), - new PokemonSpecies(SpeciesId.VOLCANION, 6, false, false, true, "Steam Pokémon", PokemonType.FIRE, PokemonType.WATER, 1.7, 195, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ROWLET, 7, false, false, false, "Grass Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.3, 1.5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.DARTRIX, 7, false, false, false, "Blade Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.7, 16, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 420, 78, 75, 75, 70, 70, 52, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.DECIDUEYE, 7, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.6, 36.6, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 530, 78, 107, 75, 100, 100, 70, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.LITTEN, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.4, 4.3, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 320, 45, 65, 40, 60, 40, 70, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.TORRACAT, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.7, 25, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 420, 65, 85, 50, 80, 50, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.INCINEROAR, 7, false, false, false, "Heel Pokémon", PokemonType.FIRE, PokemonType.DARK, 1.8, 83, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 530, 95, 115, 90, 80, 90, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.POPPLIO, 7, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 0.4, 7.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 320, 50, 54, 54, 66, 56, 40, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.BRIONNE, 7, false, false, false, "Pop Star Pokémon", PokemonType.WATER, null, 0.6, 17.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 420, 60, 69, 69, 91, 81, 50, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PRIMARINA, 7, false, false, false, "Soloist Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.8, 44, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.2, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 14.8, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TOUCANNON, 7, false, false, false, "Cannon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 26, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.YUNGOOS, 7, false, false, false, "Loitering Pokémon", PokemonType.NORMAL, null, 0.4, 6, AbilityId.STAKEOUT, AbilityId.STRONG_JAW, AbilityId.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", PokemonType.NORMAL, null, 0.7, 14.2, AbilityId.STAKEOUT, AbilityId.STRONG_JAW, AbilityId.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GRUBBIN, 7, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 4.4, AbilityId.SWARM, AbilityId.NONE, AbilityId.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CHARJABUG, 7, false, false, false, "Battery Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.5, 10.5, AbilityId.BATTERY, AbilityId.NONE, AbilityId.NONE, 400, 57, 82, 95, 55, 75, 36, 120, 50, 140, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.VIKAVOLT, 7, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 1.5, 45, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 500, 77, 70, 90, 145, 75, 43, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CRABRAWLER, 7, false, false, false, "Boxing Pokémon", PokemonType.FIGHTING, null, 0.6, 7, AbilityId.HYPER_CUTTER, AbilityId.IRON_FIST, AbilityId.ANGER_POINT, 338, 47, 82, 57, 42, 47, 63, 225, 70, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CRABOMINABLE, 7, false, false, false, "Woolly Crab Pokémon", PokemonType.FIGHTING, PokemonType.ICE, 1.7, 180, AbilityId.HYPER_CUTTER, AbilityId.IRON_FIST, AbilityId.ANGER_POINT, 478, 97, 132, 77, 62, 67, 43, 60, 70, 167, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ORICORIO, 7, false, false, false, "Dancing Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, GrowthRate.MEDIUM_FAST, 25, false, false, - new PokemonForm("Baile Style", "baile", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, "", true), - new PokemonForm("Pom-Pom Style", "pompom", PokemonType.ELECTRIC, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - new PokemonForm("Pau Style", "pau", PokemonType.PSYCHIC, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - new PokemonForm("Sensu Style", "sensu", PokemonType.GHOST, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - ), - new PokemonSpecies(SpeciesId.CUTIEFLY, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.1, 0.2, AbilityId.HONEY_GATHER, AbilityId.SHIELD_DUST, AbilityId.SWEET_VEIL, 304, 40, 45, 40, 55, 40, 84, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.2, 0.5, AbilityId.HONEY_GATHER, AbilityId.SHIELD_DUST, AbilityId.SWEET_VEIL, 464, 60, 55, 60, 95, 70, 124, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ROCKRUFF, 7, false, false, false, "Puppy Pokémon", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, null, true), - new PokemonForm("Own Tempo", "own-tempo", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.OWN_TEMPO, AbilityId.NONE, AbilityId.OWN_TEMPO, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, "", true), - ), - new PokemonSpecies(SpeciesId.LYCANROC, 7, false, false, false, "Wolf Pokémon", PokemonType.ROCK, null, 0.8, 25, AbilityId.KEEN_EYE, AbilityId.SAND_RUSH, AbilityId.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Midday Form", "midday", PokemonType.ROCK, null, 0.8, 25, AbilityId.KEEN_EYE, AbilityId.SAND_RUSH, AbilityId.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, "", true), - new PokemonForm("Midnight Form", "midnight", PokemonType.ROCK, null, 1.1, 25, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170, false, null, true), - new PokemonForm("Dusk Form", "dusk", PokemonType.ROCK, null, 0.8, 25, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170, false, null, true), - ), - new PokemonSpecies(SpeciesId.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", PokemonType.WATER, null, 0.2, 0.3, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false, - new PokemonForm("Solo Form", "", PokemonType.WATER, null, 0.2, 0.3, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true), - new PokemonForm("School", "school", PokemonType.WATER, null, 8.2, 78.6, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217), - ), - new PokemonSpecies(SpeciesId.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.4, 8, AbilityId.MERCILESS, AbilityId.LIMBER, AbilityId.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.7, 14.5, AbilityId.MERCILESS, AbilityId.LIMBER, AbilityId.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MUDBRAY, 7, false, false, false, "Donkey Pokémon", PokemonType.GROUND, null, 1, 110, AbilityId.OWN_TEMPO, AbilityId.STAMINA, AbilityId.INNER_FOCUS, 385, 70, 100, 70, 45, 55, 45, 190, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MUDSDALE, 7, false, false, false, "Draft Horse Pokémon", PokemonType.GROUND, null, 2.5, 920, AbilityId.OWN_TEMPO, AbilityId.STAMINA, AbilityId.INNER_FOCUS, 500, 100, 125, 100, 55, 85, 35, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DEWPIDER, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 0.3, 4, AbilityId.WATER_BUBBLE, AbilityId.NONE, AbilityId.WATER_ABSORB, 269, 38, 40, 52, 40, 72, 27, 200, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ARAQUANID, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 1.8, 82, AbilityId.WATER_BUBBLE, AbilityId.NONE, AbilityId.WATER_ABSORB, 454, 68, 70, 92, 50, 132, 42, 100, 50, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FOMANTIS, 7, false, false, false, "Sickle Grass Pokémon", PokemonType.GRASS, null, 0.3, 1.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CONTRARY, 250, 40, 55, 35, 50, 35, 35, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LURANTIS, 7, false, false, false, "Bloom Sickle Pokémon", PokemonType.GRASS, null, 0.9, 18.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CONTRARY, 480, 70, 105, 90, 80, 90, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MORELULL, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.2, 1.5, AbilityId.ILLUMINATE, AbilityId.EFFECT_SPORE, AbilityId.RAIN_DISH, 285, 40, 35, 55, 65, 75, 15, 190, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SHIINOTIC, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1, 11.5, AbilityId.ILLUMINATE, AbilityId.EFFECT_SPORE, AbilityId.RAIN_DISH, 405, 60, 45, 80, 90, 100, 30, 75, 50, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SALANDIT, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 0.6, 4.8, AbilityId.CORROSION, AbilityId.NONE, AbilityId.OBLIVIOUS, 320, 48, 44, 40, 71, 40, 77, 120, 50, 64, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(SpeciesId.SALAZZLE, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 1.2, 22.2, AbilityId.CORROSION, AbilityId.NONE, AbilityId.OBLIVIOUS, 480, 68, 64, 60, 111, 60, 117, 45, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.STUFFUL, 7, false, false, false, "Flailing Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 0.5, 6.8, AbilityId.FLUFFY, AbilityId.KLUTZ, AbilityId.CUTE_CHARM, 340, 70, 75, 50, 45, 50, 50, 140, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BEWEAR, 7, false, false, false, "Strong Arm Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 2.1, 135, AbilityId.FLUFFY, AbilityId.KLUTZ, AbilityId.UNNERVE, 500, 120, 125, 80, 55, 60, 60, 70, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BOUNSWEET, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.3, 3.2, AbilityId.LEAF_GUARD, AbilityId.OBLIVIOUS, AbilityId.SWEET_VEIL, 210, 42, 30, 38, 30, 38, 32, 235, 50, 42, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.STEENEE, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.7, 8.2, AbilityId.LEAF_GUARD, AbilityId.OBLIVIOUS, AbilityId.SWEET_VEIL, 290, 52, 40, 48, 40, 48, 62, 120, 50, 102, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.TSAREENA, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 1.2, 21.4, AbilityId.LEAF_GUARD, AbilityId.QUEENLY_MAJESTY, AbilityId.SWEET_VEIL, 510, 72, 120, 98, 50, 98, 72, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.COMFEY, 7, false, false, false, "Posy Picker Pokémon", PokemonType.FAIRY, null, 0.1, 0.3, AbilityId.FLOWER_VEIL, AbilityId.TRIAGE, AbilityId.NATURAL_CURE, 485, 51, 52, 90, 82, 110, 100, 60, 50, 170, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.ORANGURU, 7, false, false, false, "Sage Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 76, AbilityId.INNER_FOCUS, AbilityId.TELEPATHY, AbilityId.SYMBIOSIS, 490, 90, 60, 80, 90, 110, 60, 45, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.PASSIMIAN, 7, false, false, false, "Teamwork Pokémon", PokemonType.FIGHTING, null, 2, 82.8, AbilityId.RECEIVER, AbilityId.NONE, AbilityId.DEFIANT, 490, 100, 120, 90, 40, 60, 80, 45, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.WIMPOD, 7, false, false, false, "Turn Tail Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 12, AbilityId.WIMP_OUT, AbilityId.NONE, AbilityId.RUN_AWAY, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden - new PokemonSpecies(SpeciesId.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", PokemonType.BUG, PokemonType.WATER, 2, 108, AbilityId.EMERGENCY_EXIT, AbilityId.NONE, AbilityId.ANTICIPATION, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden - new PokemonSpecies(SpeciesId.SANDYGAST, 7, false, false, false, "Sand Heap Pokémon", PokemonType.GHOST, PokemonType.GROUND, 0.5, 70, AbilityId.WATER_COMPACTION, AbilityId.NONE, AbilityId.SAND_VEIL, 320, 55, 55, 80, 70, 45, 15, 140, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PALOSSAND, 7, false, false, false, "Sand Castle Pokémon", PokemonType.GHOST, PokemonType.GROUND, 1.3, 250, AbilityId.WATER_COMPACTION, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 85, 75, 110, 100, 75, 35, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PYUKUMUKU, 7, false, false, false, "Sea Cucumber Pokémon", PokemonType.WATER, null, 0.3, 1.2, AbilityId.INNARDS_OUT, AbilityId.NONE, AbilityId.UNAWARE, 410, 55, 60, 130, 30, 130, 5, 60, 50, 144, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.TYPE_NULL, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 1.9, 120.5, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.NONE, 534, 95, 95, 95, 95, 95, 59, 3, 0, 107, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SILVALLY, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, GrowthRate.SLOW, null, false, false, - new PokemonForm("Type: Normal", "normal", PokemonType.NORMAL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, false, "", true), - new PokemonForm("Type: Fighting", "fighting", PokemonType.FIGHTING, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Flying", "flying", PokemonType.FLYING, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Poison", "poison", PokemonType.POISON, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ground", "ground", PokemonType.GROUND, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Rock", "rock", PokemonType.ROCK, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Bug", "bug", PokemonType.BUG, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ghost", "ghost", PokemonType.GHOST, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Steel", "steel", PokemonType.STEEL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Fire", "fire", PokemonType.FIRE, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Water", "water", PokemonType.WATER, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Grass", "grass", PokemonType.GRASS, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Electric", "electric", PokemonType.ELECTRIC, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Psychic", "psychic", PokemonType.PSYCHIC, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ice", "ice", PokemonType.ICE, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Dragon", "dragon", PokemonType.DRAGON, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Dark", "dark", PokemonType.DARK, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Fairy", "fairy", PokemonType.FAIRY, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - ), - new PokemonSpecies(SpeciesId.MINIOR, 7, false, false, false, "Meteor Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, GrowthRate.MEDIUM_SLOW, null, false, false, - new PokemonForm("Red Meteor Form", "red-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Orange Meteor Form", "orange-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Yellow Meteor Form", "yellow-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Green Meteor Form", "green-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Blue Meteor Form", "blue-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Indigo Meteor Form", "indigo-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Violet Meteor Form", "violet-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, null, true), - new PokemonForm("Red Core Form", "red", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Orange Core Form", "orange", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Yellow Core Form", "yellow", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Green Core Form", "green", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Blue Core Form", "blue", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Indigo Core Form", "indigo", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Violet Core Form", "violet", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - ), - new PokemonSpecies(SpeciesId.KOMALA, 7, false, false, false, "Drowsing Pokémon", PokemonType.NORMAL, null, 0.4, 19.9, AbilityId.COMATOSE, AbilityId.NONE, AbilityId.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 2, 212, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TOGEDEMARU, 7, false, false, false, "Roly-Poly Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 3.3, AbilityId.IRON_BARBS, AbilityId.LIGHTNING_ROD, AbilityId.STURDY, 435, 65, 98, 63, 40, 73, 96, 180, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MIMIKYU, 7, false, false, false, "Disguise Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Disguised Form", "disguised", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, false, null, true), - new PokemonForm("Busted Form", "busted", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167), - ), - new PokemonSpecies(SpeciesId.BRUXISH, 7, false, false, false, "Gnash Teeth Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 0.9, 19, AbilityId.DAZZLING, AbilityId.STRONG_JAW, AbilityId.WONDER_SKIN, 475, 68, 105, 70, 70, 70, 92, 80, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DRAMPA, 7, false, false, false, "Placid Pokémon", PokemonType.NORMAL, PokemonType.DRAGON, 3, 185, AbilityId.BERSERK, AbilityId.SAP_SIPPER, AbilityId.CLOUD_NINE, 485, 78, 60, 85, 135, 91, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DHELMISE, 7, false, false, false, "Sea Creeper Pokémon", PokemonType.GHOST, PokemonType.GRASS, 3.9, 210, AbilityId.STEELWORKER, AbilityId.NONE, AbilityId.NONE, 517, 70, 131, 100, 86, 90, 40, 25, 50, 181, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.JANGMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, null, 0.6, 29.7, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 300, 45, 55, 65, 45, 45, 45, 45, 50, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HAKAMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.2, 47, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 420, 55, 75, 90, 65, 70, 65, 45, 50, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.KOMMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.6, 78.2, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 600, 75, 110, 125, 100, 105, 85, 45, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TAPU_KOKO, 7, true, false, false, "Land Spirit Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 1.8, 20.5, AbilityId.ELECTRIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 115, 85, 95, 75, 130, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.2, 18.6, AbilityId.PSYCHIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1.9, 45.5, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.3, 21.2, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, AbilityId.UNAWARE, AbilityId.NONE, AbilityId.NONE, 200, 43, 29, 31, 29, 31, 37, 3, 0, 40, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 400, 43, 29, 131, 29, 131, 37, 3, 0, 140, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, AbilityId.FULL_METAL_BODY, AbilityId.NONE, AbilityId.NONE, 680, 137, 137, 107, 113, 89, 97, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, AbilityId.SHADOW_SHIELD, AbilityId.NONE, AbilityId.NONE, 680, 137, 113, 89, 137, 107, 97, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.NIHILEGO, 7, true, false, false, "Parasite Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.2, 55.5, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 2.4, 333.6, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.8, 25, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.XURKITREE, 7, true, false, false, "Glowing Pokémon", PokemonType.ELECTRIC, null, 3.8, 100, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 83, 89, 71, 173, 71, 83, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.CELESTEELA, 7, true, false, false, "Launch Pokémon", PokemonType.STEEL, PokemonType.FLYING, 9.2, 999.9, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.3, 0.1, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", PokemonType.DARK, PokemonType.DRAGON, 5.5, 888, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 3, 0, 300, false, null, true), - new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 157, 127, 113, 109, 77, 3, 0, 340), - new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 113, 109, 157, 127, 77, 3, 0, 340), - new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, AbilityId.NEUROFORCE, AbilityId.NONE, AbilityId.NONE, 754, 97, 167, 97, 167, 97, 129, 3, 0, 377), - ), - new PokemonSpecies(SpeciesId.MAGEARNA, 7, false, false, true, "Artificial Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), - new PokemonForm("Original", "original", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), - ), - new PokemonSpecies(SpeciesId.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true), - new PokemonForm("Zenith", "zenith", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true) - ), - new PokemonSpecies(SpeciesId.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.6, 1.8, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, PokemonType.DRAGON, 3.6, 150, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.STAKATAKA, 7, true, false, false, "Rampart Pokémon", PokemonType.ROCK, PokemonType.STEEL, 5.5, 820, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 61, 131, 211, 53, 101, 13, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.BLACEPHALON, 7, true, false, false, "Fireworks Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.8, 13, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 53, 127, 53, 151, 79, 107, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ZERAORA, 7, false, false, true, "Thunderclap Pokémon", PokemonType.ELECTRIC, null, 1.5, 44.5, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.NONE, 600, 88, 112, 75, 102, 80, 143, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.MELTAN, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 0.2, 8, AbilityId.MAGNET_PULL, AbilityId.NONE, AbilityId.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 2.5, 800, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, null, 2.5, 800, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, null, 25, 999.9, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 700, 170, 158, 158, 95, 75, 44, 3, 0, 300), - ), - new PokemonSpecies(SpeciesId.GROOKEY, 8, false, false, false, "Chimp Pokémon", PokemonType.GRASS, null, 0.3, 5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.THWACKEY, 8, false, false, false, "Beat Pokémon", PokemonType.GRASS, null, 0.7, 14, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.RILLABOOM, 8, false, false, false, "Drummer Pokémon", PokemonType.GRASS, null, 2.1, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, null, 2.1, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, null, 28, 999.9, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.GRASSY_SURGE, 630, 125, 140, 105, 90, 85, 85, 45, 50, 265), - ), - new PokemonSpecies(SpeciesId.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.3, 4.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.RABOOT, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.6, 9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CINDERACE, 8, false, false, false, "Striker Pokémon", PokemonType.FIRE, null, 1.4, 33, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.FIRE, null, 1.4, 33, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, null, 27, 999.9, AbilityId.LIBERO, AbilityId.NONE, AbilityId.LIBERO, 630, 100, 141, 80, 95, 80, 134, 45, 50, 265), - ), - new PokemonSpecies(SpeciesId.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.3, 4, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.7, 11.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.INTELEON, 8, false, false, false, "Secret Agent Pokémon", PokemonType.WATER, null, 1.9, 45.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 1.9, 45.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 40, 999.9, AbilityId.SNIPER, AbilityId.NONE, AbilityId.SNIPER, 630, 95, 117, 67, 147, 67, 137, 45, 50, 265), - ), - new PokemonSpecies(SpeciesId.SKWOVET, 8, false, false, false, "Cheeky Pokémon", PokemonType.NORMAL, null, 0.3, 2.5, AbilityId.CHEEK_POUCH, AbilityId.NONE, AbilityId.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GREEDENT, 8, false, false, false, "Greedy Pokémon", PokemonType.NORMAL, null, 0.6, 6, AbilityId.CHEEK_POUCH, AbilityId.NONE, AbilityId.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ROOKIDEE, 8, false, false, false, "Tiny Bird Pokémon", PokemonType.FLYING, null, 0.2, 1.8, AbilityId.KEEN_EYE, AbilityId.UNNERVE, AbilityId.BIG_PECKS, 245, 38, 47, 35, 33, 35, 57, 255, 50, 49, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, null, 0.8, 16, AbilityId.KEEN_EYE, AbilityId.UNNERVE, AbilityId.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, AbilityId.PRESSURE, AbilityId.UNNERVE, AbilityId.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, AbilityId.PRESSURE, AbilityId.UNNERVE, AbilityId.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FLYING, PokemonType.STEEL, 14, 999.9, AbilityId.MIRROR_ARMOR, AbilityId.MIRROR_ARMOR, AbilityId.MIRROR_ARMOR, 595, 118, 112, 135, 63, 90, 77, 45, 50, 248), - ), - new PokemonSpecies(SpeciesId.BLIPBUG, 8, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 8, AbilityId.SWARM, AbilityId.COMPOUND_EYES, AbilityId.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DOTTLER, 8, false, false, false, "Radome Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 19.5, AbilityId.SWARM, AbilityId.COMPOUND_EYES, AbilityId.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, AbilityId.SWARM, AbilityId.FRISK, AbilityId.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, AbilityId.SWARM, AbilityId.FRISK, AbilityId.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.PSYCHIC, 14, 999.9, AbilityId.TRACE, AbilityId.TRACE, AbilityId.TRACE, 605, 75, 50, 140, 100, 150, 90, 45, 50, 253), - ), - new PokemonSpecies(SpeciesId.NICKIT, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 0.6, 8.9, AbilityId.RUN_AWAY, AbilityId.UNBURDEN, AbilityId.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.THIEVUL, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 1.2, 19.9, AbilityId.RUN_AWAY, AbilityId.UNBURDEN, AbilityId.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.GOSSIFLEUR, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 0.4, 2.2, AbilityId.COTTON_DOWN, AbilityId.REGENERATOR, AbilityId.EFFECT_SPORE, 250, 40, 40, 60, 40, 60, 10, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ELDEGOSS, 8, false, false, false, "Cotton Bloom Pokémon", PokemonType.GRASS, null, 0.5, 2.5, AbilityId.COTTON_DOWN, AbilityId.REGENERATOR, AbilityId.EFFECT_SPORE, 460, 60, 50, 90, 80, 120, 60, 75, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WOOLOO, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 0.6, 6, AbilityId.FLUFFY, AbilityId.RUN_AWAY, AbilityId.BULLETPROOF, 270, 42, 40, 55, 40, 45, 48, 255, 50, 122, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DUBWOOL, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 1.3, 43, AbilityId.FLUFFY, AbilityId.STEADFAST, AbilityId.BULLETPROOF, 490, 72, 80, 100, 60, 90, 88, 127, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CHEWTLE, 8, false, false, false, "Snapping Pokémon", PokemonType.WATER, null, 0.3, 8.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DREDNAW, 8, false, false, false, "Bite Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ROCK, 24, 999.9, AbilityId.STRONG_JAW, AbilityId.STRONG_JAW, AbilityId.STRONG_JAW, 585, 115, 137, 115, 61, 83, 74, 75, 50, 170), - ), - new PokemonSpecies(SpeciesId.YAMPER, 8, false, false, false, "Puppy Pokémon", PokemonType.ELECTRIC, null, 0.3, 13.5, AbilityId.BALL_FETCH, AbilityId.NONE, AbilityId.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.BOLTUND, 8, false, false, false, "Dog Pokémon", PokemonType.ELECTRIC, null, 1, 34, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.ROLYCOLY, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, null, 0.3, 12, AbilityId.STEAM_ENGINE, AbilityId.HEATPROOF, AbilityId.FLASH_FIRE, 240, 30, 40, 50, 40, 50, 30, 255, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CARKOL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 1.1, 78, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.COALOSSAL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ROCK, PokemonType.FIRE, 42, 999.9, AbilityId.STEAM_ENGINE, AbilityId.STEAM_ENGINE, AbilityId.STEAM_ENGINE, 610, 140, 100, 132, 95, 100, 43, 45, 50, 255), - ), - new PokemonSpecies(SpeciesId.APPLIN, 8, false, false, false, "Apple Core Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.2, 0.5, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, AbilityId.HUSTLE, AbilityId.HUSTLE, AbilityId.HUSTLE, 585, 100, 125, 90, 105, 70, 95, 45, 50, 170), - ), - new PokemonSpecies(SpeciesId.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, AbilityId.THICK_FAT, AbilityId.THICK_FAT, AbilityId.THICK_FAT, 585, 150, 100, 95, 115, 95, 30, 45, 50, 170), - ), - new PokemonSpecies(SpeciesId.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 2.2, 7.6, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 3.8, 65.5, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.8, 65.5, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GROUND, null, 22, 999.9, AbilityId.SAND_SPIT, AbilityId.SAND_SPIT, AbilityId.SAND_SPIT, 610, 102, 137, 140, 70, 80, 81, 120, 50, 179), - ), - new PokemonSpecies(SpeciesId.CRAMORANT, 8, false, false, false, "Gulp Pokémon", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), - new PokemonForm("Gulping Form", "gulping", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), - new PokemonForm("Gorging Form", "gorging", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), - ), - new PokemonSpecies(SpeciesId.ARROKUDA, 8, false, false, false, "Rush Pokémon", PokemonType.WATER, null, 0.5, 1, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.PROPELLER_TAIL, 280, 41, 63, 40, 40, 30, 66, 255, 50, 56, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.BARRASKEWDA, 8, false, false, false, "Skewer Pokémon", PokemonType.WATER, null, 1.3, 30, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.PROPELLER_TAIL, 490, 61, 123, 60, 60, 50, 136, 60, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TOXEL, 8, false, false, false, "Baby Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 0.4, 11, AbilityId.RATTLED, AbilityId.STATIC, AbilityId.KLUTZ, 242, 40, 38, 35, 54, 35, 40, 75, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.TOXTRICITY, 8, false, false, false, "Punk Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.PLUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Amped Form", "amped", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.PLUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), - new PokemonForm("Low-Key Form", "lowkey", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.MINUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, PokemonType.POISON, 24, 999.9, AbilityId.PUNK_ROCK, AbilityId.PUNK_ROCK, AbilityId.PUNK_ROCK, 602, 114, 105, 82, 137, 82, 82, 45, 50, 176), - ), - new PokemonSpecies(SpeciesId.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 0.7, 1, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 3, 120, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.BUG, 3, 120, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.BUG, 75, 999.9, AbilityId.FLASH_FIRE, AbilityId.FLASH_FIRE, AbilityId.FLASH_FIRE, 625, 130, 125, 75, 94, 100, 101, 75, 50, 184), - ), - new PokemonSpecies(SpeciesId.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", PokemonType.FIGHTING, null, 0.6, 4, AbilityId.LIMBER, AbilityId.NONE, AbilityId.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", PokemonType.FIGHTING, null, 1.6, 39, AbilityId.LIMBER, AbilityId.NONE, AbilityId.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SINISTEA, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true), - new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true, true), - ), - new PokemonSpecies(SpeciesId.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true), - new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true, true), - ), - new PokemonSpecies(SpeciesId.HATENNA, 8, false, false, false, "Calm Pokémon", PokemonType.PSYCHIC, null, 0.4, 3.4, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false), - new PokemonSpecies(SpeciesId.HATTREM, 8, false, false, false, "Serene Pokémon", PokemonType.PSYCHIC, null, 0.6, 4.8, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), - new PokemonSpecies(SpeciesId.HATTERENE, 8, false, false, false, "Silent Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.PSYCHIC, PokemonType.FAIRY, 26, 999.9, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 610, 87, 100, 110, 146, 118, 49, 45, 50, 255), - ), - new PokemonSpecies(SpeciesId.IMPIDIMP, 8, false, false, false, "Wily Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.4, 5.5, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.MORGREM, 8, false, false, false, "Devious Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.8, 12.5, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(SpeciesId.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.DARK, PokemonType.FAIRY, 32, 999.9, AbilityId.PRANKSTER, AbilityId.PRANKSTER, AbilityId.PRANKSTER, 610, 130, 138, 75, 110, 92, 65, 45, 50, 255), - ), - new PokemonSpecies(SpeciesId.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", PokemonType.DARK, PokemonType.NORMAL, 1.6, 46, AbilityId.RECKLESS, AbilityId.GUTS, AbilityId.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PERRSERKER, 8, false, false, false, "Viking Pokémon", PokemonType.STEEL, null, 0.8, 28, AbilityId.BATTLE_ARMOR, AbilityId.TOUGH_CLAWS, AbilityId.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CURSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 1, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.PERISH_BODY, 510, 60, 95, 50, 145, 130, 30, 30, 50, 179, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.SIRFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 117, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.SCRAPPY, 507, 62, 135, 95, 68, 82, 65, 45, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MR_RIME, 8, false, false, false, "Comedian Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.5, 58.2, AbilityId.TANGLED_FEET, AbilityId.SCREEN_CLEANER, AbilityId.ICE_BODY, 520, 80, 85, 75, 110, 100, 70, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RUNERIGUS, 8, false, false, false, "Grudge Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1.6, 66.6, AbilityId.WANDERING_SPIRIT, AbilityId.NONE, AbilityId.NONE, 483, 58, 95, 145, 50, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.MILCERY, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.2, 0.3, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 270, 45, 40, 40, 50, 61, 34, 200, 50, 54, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.ALCREMIE, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, GrowthRate.MEDIUM_FAST, 0, false, true, - new PokemonForm("Vanilla Cream", "vanilla-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, "", true), - new PokemonForm("Ruby Cream", "ruby-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Matcha Cream", "matcha-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Mint Cream", "mint-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Lemon Cream", "lemon-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Salted Cream", "salted-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Ruby Swirl", "ruby-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Caramel Swirl", "caramel-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Rainbow Swirl", "rainbow-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FAIRY, null, 30, 999.9, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 595, 105, 70, 85, 130, 141, 64, 100, 50, 173), - ), - new PokemonSpecies(SpeciesId.FALINKS, 8, false, false, false, "Formation Pokémon", PokemonType.FIGHTING, null, 3, 62, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", PokemonType.ELECTRIC, null, 0.3, 1, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SNOM, 8, false, false, false, "Worm Pokémon", PokemonType.ICE, PokemonType.BUG, 0.3, 3.8, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.ICE_SCALES, 185, 30, 25, 35, 45, 30, 20, 190, 50, 37, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FROSMOTH, 8, false, false, false, "Frost Moth Pokémon", PokemonType.ICE, PokemonType.BUG, 1.3, 42, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.ICE_SCALES, 475, 70, 65, 60, 125, 90, 65, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.STONJOURNER, 8, false, false, false, "Big Rock Pokémon", PokemonType.ROCK, null, 2.5, 520, AbilityId.POWER_SPOT, AbilityId.NONE, AbilityId.NONE, 470, 100, 125, 135, 20, 20, 70, 60, 50, 165, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.EISCUE, 8, false, false, false, "Penguin Pokémon", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, GrowthRate.SLOW, 50, false, false, - new PokemonForm("Ice Face", "", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, false, null, true), - new PokemonForm("No Ice", "no-ice", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 70, 65, 50, 130, 60, 50, 165), - ), - new PokemonSpecies(SpeciesId.INDEEDEE, 8, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, GrowthRate.FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, false, "", true), - new PokemonForm("Female", "female", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.OWN_TEMPO, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 70, 55, 65, 95, 105, 85, 30, 140, 166, false, null, true), - ), - new PokemonSpecies(SpeciesId.MORPEKO, 8, false, false, false, "Two-Sided Pokémon", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Full Belly Mode", "full-belly", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, false, "", true), - new PokemonForm("Hangry Mode", "hangry", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153), - ), - new PokemonSpecies(SpeciesId.CUFANT, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 1.2, 100, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 3, 650, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, null, 3, 650, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.GROUND, 23, 999.9, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.MOLD_BREAKER, 600, 177, 155, 79, 90, 79, 20, 90, 50, 175), - ), - new PokemonSpecies(SpeciesId.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 1.8, 190, AbilityId.VOLT_ABSORB, AbilityId.HUSTLE, AbilityId.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.ICE, 2.3, 150, AbilityId.VOLT_ABSORB, AbilityId.STATIC, AbilityId.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.DRACOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.DRAGON, 2.3, 215, AbilityId.WATER_ABSORB, AbilityId.STRONG_JAW, AbilityId.SAND_RUSH, 505, 90, 90, 100, 70, 80, 75, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.ICE, 2, 175, AbilityId.WATER_ABSORB, AbilityId.ICE_BODY, AbilityId.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.DURALUDON, 8, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, AbilityId.LIGHT_METAL, AbilityId.HEAVY_METAL, AbilityId.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, AbilityId.LIGHT_METAL, AbilityId.HEAVY_METAL, AbilityId.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.DRAGON, 43, 999.9, AbilityId.LIGHTNING_ROD, AbilityId.LIGHTNING_ROD, AbilityId.LIGHTNING_ROD, 635, 100, 110, 120, 175, 60, 70, 45, 50, 187), - ), - new PokemonSpecies(SpeciesId.DREEPY, 8, false, false, false, "Lingering Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 0.5, 2, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 1.4, 11, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 3, 50, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.ZACIAN, 8, false, true, false, "Warrior Pokémon", PokemonType.FAIRY, null, 2.8, 110, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.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", PokemonType.FAIRY, null, 2.8, 110, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), - new PokemonForm("Crowned", "crowned", PokemonType.FAIRY, PokemonType.STEEL, 2.8, 355, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360), - ), - new PokemonSpecies(SpeciesId.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", PokemonType.FIGHTING, null, 2.9, 210, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.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", PokemonType.FIGHTING, null, 2.9, 210, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), - new PokemonForm("Crowned", "crowned", PokemonType.FIGHTING, PokemonType.STEEL, 2.9, 785, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360), - ), - new PokemonSpecies(SpeciesId.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", PokemonType.POISON, PokemonType.DRAGON, 20, 950, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.POISON, PokemonType.DRAGON, 20, 950, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true), - new PokemonForm("E-Max", "eternamax", PokemonType.POISON, PokemonType.DRAGON, 100, 999.9, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345), - ), - new PokemonSpecies(SpeciesId.KUBFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, null, 0.6, 12, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.NONE, 385, 60, 90, 60, 53, 50, 72, 3, 50, 77, GrowthRate.SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.URSHIFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Single Strike Style", "single-strike", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), - new PokemonForm("Rapid Strike Style", "rapid-strike", PokemonType.FIGHTING, PokemonType.WATER, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), - new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, PokemonType.FIGHTING, PokemonType.DARK, 29, 999.9, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), - new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, PokemonType.FIGHTING, PokemonType.WATER, 26, 999.9, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), - ), - new PokemonSpecies(SpeciesId.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), - new PokemonForm("Dada", "dada", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), - ), - new PokemonSpecies(SpeciesId.REGIELEKI, 8, true, false, false, "Electron Pokémon", PokemonType.ELECTRIC, null, 1.2, 145, AbilityId.TRANSISTOR, AbilityId.NONE, AbilityId.NONE, 580, 80, 100, 50, 100, 50, 200, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.REGIDRAGO, 8, true, false, false, "Dragon Orb Pokémon", PokemonType.DRAGON, null, 2.1, 200, AbilityId.DRAGONS_MAW, AbilityId.NONE, AbilityId.NONE, 580, 200, 100, 50, 100, 50, 80, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GLASTRIER, 8, true, false, false, "Wild Horse Pokémon", PokemonType.ICE, null, 2.2, 800, AbilityId.CHILLING_NEIGH, AbilityId.NONE, AbilityId.NONE, 580, 100, 145, 130, 65, 110, 30, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", PokemonType.GHOST, null, 2, 44.5, AbilityId.GRIM_NEIGH, AbilityId.NONE, AbilityId.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.CALYREX, 8, false, true, false, "King Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, AbilityId.UNNERVE, AbilityId.NONE, AbilityId.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, AbilityId.UNNERVE, AbilityId.NONE, AbilityId.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true), - new PokemonForm("Ice", "ice", PokemonType.PSYCHIC, PokemonType.ICE, 2.4, 809.1, AbilityId.AS_ONE_GLASTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), - new PokemonForm("Shadow", "shadow", PokemonType.PSYCHIC, PokemonType.GHOST, 2.4, 53.6, AbilityId.AS_ONE_SPECTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340), - ), - new PokemonSpecies(SpeciesId.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 45, 50, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, AbilityId.SWARM, AbilityId.SHEER_FORCE, AbilityId.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 15, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, AbilityId.GUTS, AbilityId.BULLETPROOF, AbilityId.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 20, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 45, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 45, 50, 265, false, "", true), - new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 45, 50, 265, false, null, true), - ), - new PokemonSpecies(SpeciesId.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, AbilityId.PRESSURE, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 20, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 45, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), - ), - new PokemonSpecies(SpeciesId.SPRIGATITO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.4, 4.1, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 310, 40, 61, 54, 45, 45, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.FLORAGATO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.9, 12.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 410, 61, 80, 63, 60, 63, 83, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.MEOWSCARADA, 9, false, false, false, "Magician Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.5, 31.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 530, 76, 110, 70, 81, 70, 123, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.FUECOCO, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 0.4, 9.8, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 310, 67, 45, 59, 63, 40, 36, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.CROCALOR, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 1, 30.7, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 411, 81, 55, 78, 90, 58, 49, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.SKELEDIRGE, 9, false, false, false, "Singer Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 326.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 530, 104, 75, 100, 110, 75, 66, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.QUAXLY, 9, false, false, false, "Duckling Pokémon", PokemonType.WATER, null, 0.5, 6.1, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 310, 55, 65, 45, 50, 45, 50, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.QUAXWELL, 9, false, false, false, "Practicing Pokémon", PokemonType.WATER, null, 1.2, 21.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 410, 70, 85, 65, 65, 60, 65, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.QUAQUAVAL, 9, false, false, false, "Dancer Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.8, 61.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 530, 85, 120, 80, 85, 75, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.LECHONK, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 0.5, 10.2, AbilityId.AROMA_VEIL, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 254, 54, 45, 40, 35, 45, 35, 255, 50, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.OINKOLOGNE, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 1, 120, AbilityId.LINGERING_AROMA, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.NORMAL, null, 1, 120, AbilityId.LINGERING_AROMA, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, false, "", true), - new PokemonForm("Female", "female", PokemonType.NORMAL, null, 1, 120, AbilityId.AROMA_VEIL, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 115, 90, 70, 59, 90, 65, 100, 50, 171, false, null, true), - ), - new PokemonSpecies(SpeciesId.TAROUNTULA, 9, false, false, false, "String Ball Pokémon", PokemonType.BUG, null, 0.3, 4, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.STAKEOUT, 210, 35, 41, 45, 29, 40, 20, 255, 50, 42, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.SPIDOPS, 9, false, false, false, "Trap Pokémon", PokemonType.BUG, null, 1, 16.5, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.STAKEOUT, 404, 60, 79, 92, 52, 86, 35, 120, 50, 141, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.NYMBLE, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, null, 0.2, 1, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 210, 33, 46, 40, 21, 25, 45, 190, 20, 42, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.LOKIX, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, PokemonType.DARK, 1, 17.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 450, 71, 102, 78, 52, 55, 92, 30, 0, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PAWMI, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2.5, AbilityId.STATIC, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 240, 45, 50, 20, 40, 25, 60, 190, 50, 48, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PAWMO, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.4, 6.5, AbilityId.VOLT_ABSORB, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 350, 60, 75, 40, 50, 40, 85, 80, 50, 123, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.PAWMOT, 9, false, false, false, "Hands-On Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.9, 41, AbilityId.VOLT_ABSORB, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 490, 70, 115, 70, 70, 60, 105, 45, 50, 245, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TANDEMAUS, 9, false, false, false, "Couple Pokémon", PokemonType.NORMAL, null, 0.3, 1.8, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.OWN_TEMPO, 305, 50, 50, 45, 40, 45, 75, 150, 50, 61, GrowthRate.FAST, null, false), - new PokemonSpecies(SpeciesId.MAUSHOLD, 9, false, false, false, "Family Pokémon", PokemonType.NORMAL, null, 0.3, 2.3, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165, GrowthRate.FAST, null, false, false, - new PokemonForm("Family of Four", "four", PokemonType.NORMAL, null, 0.3, 2.8, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), - new PokemonForm("Family of Three", "three", PokemonType.NORMAL, null, 0.3, 2.3, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), - ), - new PokemonSpecies(SpeciesId.FIDOUGH, 9, false, false, false, "Puppy Pokémon", PokemonType.FAIRY, null, 0.3, 10.9, AbilityId.OWN_TEMPO, AbilityId.NONE, AbilityId.KLUTZ, 312, 37, 55, 70, 30, 55, 65, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DACHSBUN, 9, false, false, false, "Dog Pokémon", PokemonType.FAIRY, null, 0.5, 14.9, AbilityId.WELL_BAKED_BODY, AbilityId.NONE, AbilityId.AROMA_VEIL, 477, 57, 80, 115, 50, 80, 95, 90, 50, 167, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SMOLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.3, 6.5, AbilityId.EARLY_BIRD, AbilityId.NONE, AbilityId.HARVEST, 260, 41, 35, 45, 58, 51, 30, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.DOLLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.6, 11.9, AbilityId.EARLY_BIRD, AbilityId.NONE, AbilityId.HARVEST, 354, 52, 53, 60, 78, 78, 33, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ARBOLIVA, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 1.4, 48.2, AbilityId.SEED_SOWER, AbilityId.NONE, AbilityId.HARVEST, 510, 78, 69, 90, 125, 109, 39, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SQUAWKABILLY, 9, false, false, false, "Parrot Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, GrowthRate.ERRATIC, 50, false, false, - new PokemonForm("Green Plumage", "green-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("Blue Plumage", "blue-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("Yellow Plumage", "yellow-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("White Plumage", "white-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - ), - new PokemonSpecies(SpeciesId.NACLI, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.4, 16, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 280, 55, 55, 75, 35, 35, 25, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.NACLSTACK, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.6, 105, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 355, 60, 60, 100, 35, 65, 35, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GARGANACL, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 2.3, 240, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 500, 100, 100, 130, 45, 90, 35, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CHARCADET, 9, false, false, false, "Fire Child Pokémon", PokemonType.FIRE, null, 0.6, 10.5, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.FLAME_BODY, 255, 40, 50, 40, 50, 40, 35, 90, 50, 51, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.ARMAROUGE, 9, false, false, false, "Fire Warrior Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 85, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.WEAK_ARMOR, 525, 85, 60, 100, 125, 80, 75, 25, 20, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.CERULEDGE, 9, false, false, false, "Fire Blades Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 62, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.WEAK_ARMOR, 525, 75, 125, 80, 60, 100, 85, 25, 20, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TADBULB, 9, false, false, false, "EleTadpole Pokémon", PokemonType.ELECTRIC, null, 0.3, 0.4, AbilityId.OWN_TEMPO, AbilityId.STATIC, AbilityId.DAMP, 272, 61, 31, 41, 59, 35, 45, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BELLIBOLT, 9, false, false, false, "EleFrog Pokémon", PokemonType.ELECTRIC, null, 1.2, 113, AbilityId.ELECTROMORPHOSIS, AbilityId.STATIC, AbilityId.DAMP, 495, 109, 64, 91, 103, 83, 45, 50, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WATTREL, 9, false, false, false, "Storm Petrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 3.6, AbilityId.WIND_POWER, AbilityId.VOLT_ABSORB, AbilityId.COMPETITIVE, 280, 40, 40, 35, 55, 40, 70, 180, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.KILOWATTREL, 9, false, false, false, "Frigatebird Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.4, 38.6, AbilityId.WIND_POWER, AbilityId.VOLT_ABSORB, AbilityId.COMPETITIVE, 490, 70, 70, 60, 105, 60, 125, 90, 50, 172, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.MASCHIFF, 9, false, false, false, "Rascal Pokémon", PokemonType.DARK, null, 0.5, 16, AbilityId.INTIMIDATE, AbilityId.RUN_AWAY, AbilityId.STAKEOUT, 340, 60, 78, 60, 40, 51, 51, 150, 50, 68, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.MABOSSTIFF, 9, false, false, false, "Boss Pokémon", PokemonType.DARK, null, 1.1, 61, AbilityId.INTIMIDATE, AbilityId.GUARD_DOG, AbilityId.STAKEOUT, 505, 80, 120, 90, 60, 70, 85, 75, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.SHROODLE, 9, false, false, false, "Toxic Mouse Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.2, 0.7, AbilityId.UNBURDEN, AbilityId.PICKPOCKET, AbilityId.PRANKSTER, 290, 40, 65, 35, 40, 35, 75, 190, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GRAFAIAI, 9, false, false, false, "Toxic Monkey Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.7, 27.2, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, AbilityId.PRANKSTER, 485, 63, 95, 65, 80, 72, 110, 90, 50, 170, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.BRAMBLIN, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.6, 0.6, AbilityId.WIND_RIDER, AbilityId.NONE, AbilityId.INFILTRATOR, 275, 40, 65, 30, 45, 35, 60, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BRAMBLEGHAST, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.2, 6, AbilityId.WIND_RIDER, AbilityId.NONE, AbilityId.INFILTRATOR, 480, 55, 115, 70, 80, 70, 90, 45, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.TOEDSCOOL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 0.9, 33, AbilityId.MYCELIUM_MIGHT, AbilityId.NONE, AbilityId.NONE, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.TOEDSCRUEL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 1.9, 58, AbilityId.MYCELIUM_MIGHT, AbilityId.NONE, AbilityId.NONE, 515, 80, 70, 65, 80, 120, 100, 90, 50, 180, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.KLAWF, 9, false, false, false, "Ambush Pokémon", PokemonType.ROCK, null, 1.3, 79, AbilityId.ANGER_SHELL, AbilityId.SHELL_ARMOR, AbilityId.REGENERATOR, 450, 70, 100, 115, 35, 55, 75, 120, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CAPSAKID, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, null, 0.3, 3, AbilityId.CHLOROPHYLL, AbilityId.INSOMNIA, AbilityId.KLUTZ, 304, 50, 62, 40, 62, 40, 50, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.SCOVILLAIN, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, PokemonType.FIRE, 0.9, 15, AbilityId.CHLOROPHYLL, AbilityId.INSOMNIA, AbilityId.MOODY, 486, 65, 108, 65, 108, 65, 75, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.RELLOR, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, null, 0.2, 1, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.SHED_SKIN, 270, 41, 50, 60, 31, 58, 30, 190, 50, 54, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.RABSCA, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.3, 3.5, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.TELEPATHY, 470, 75, 50, 85, 115, 100, 45, 45, 50, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.FLITTLE, 9, false, false, false, "Frill Pokémon", PokemonType.PSYCHIC, null, 0.2, 1.5, AbilityId.ANTICIPATION, AbilityId.FRISK, AbilityId.SPEED_BOOST, 255, 30, 35, 30, 55, 30, 75, 120, 50, 51, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ESPATHRA, 9, false, false, false, "Ostrich Pokémon", PokemonType.PSYCHIC, null, 1.9, 90, AbilityId.OPPORTUNIST, AbilityId.FRISK, AbilityId.SPEED_BOOST, 481, 95, 60, 60, 101, 60, 105, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.TINKATINK, 9, false, false, false, "Metalsmith Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.4, 8.9, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 297, 50, 45, 45, 35, 64, 58, 190, 50, 59, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.TINKATUFF, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 59.1, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 380, 65, 55, 55, 45, 82, 78, 90, 50, 133, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.TINKATON, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 112.8, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 506, 85, 75, 77, 70, 105, 94, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(SpeciesId.WIGLETT, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 1.8, AbilityId.GOOEY, AbilityId.RATTLED, AbilityId.SAND_VEIL, 245, 10, 55, 25, 35, 25, 95, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.WUGTRIO, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 5.4, AbilityId.GOOEY, AbilityId.RATTLED, AbilityId.SAND_VEIL, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BOMBIRDIER, 9, false, false, false, "Item Drop Pokémon", PokemonType.FLYING, PokemonType.DARK, 1.5, 42.9, AbilityId.BIG_PECKS, AbilityId.KEEN_EYE, AbilityId.ROCKY_PAYLOAD, 485, 70, 103, 85, 60, 85, 82, 25, 50, 243, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.FINIZEN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, AbilityId.WATER_VEIL, AbilityId.NONE, AbilityId.NONE, 315, 70, 45, 40, 45, 40, 75, 200, 50, 63, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.PALAFIN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.NONE, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Zero Form", "zero", PokemonType.WATER, null, 1.3, 60.2, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.ZERO_TO_HERO, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, false, null, true), - new PokemonForm("Hero Form", "hero", PokemonType.WATER, null, 1.8, 97.4, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.ZERO_TO_HERO, 650, 100, 160, 97, 106, 87, 100, 45, 50, 160), - ), - new PokemonSpecies(SpeciesId.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1, 35, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true), - new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, AbilityId.STAMINA, AbilityId.NONE, AbilityId.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - ), - new PokemonSpecies(SpeciesId.CYCLIZAR, 9, false, false, false, "Mount Pokémon", PokemonType.DRAGON, PokemonType.NORMAL, 1.6, 63, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", PokemonType.STEEL, null, 2.5, 310, AbilityId.EARTH_EATER, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.GLIMMET, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 0.7, 8, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.CORROSION, 350, 48, 35, 42, 105, 60, 60, 70, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GLIMMORA, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.5, 45, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.CORROSION, 525, 83, 55, 90, 130, 81, 86, 25, 50, 184, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GREAVARD, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 0.6, 35, AbilityId.PICKUP, AbilityId.NONE, AbilityId.FLUFFY, 290, 50, 61, 60, 30, 55, 34, 120, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.HOUNDSTONE, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 2, 15, AbilityId.SAND_RUSH, AbilityId.NONE, AbilityId.FLUFFY, 488, 72, 101, 100, 50, 97, 68, 60, 50, 171, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.FLAMIGO, 9, false, false, false, "Synchronize Pokémon", PokemonType.FLYING, PokemonType.FIGHTING, 1.6, 37, AbilityId.SCRAPPY, AbilityId.TANGLED_FEET, AbilityId.COSTAR, 500, 82, 115, 74, 75, 64, 90, 100, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CETODDLE, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 1.2, 45, AbilityId.THICK_FAT, AbilityId.SNOW_CLOAK, AbilityId.SHEER_FORCE, 334, 108, 68, 45, 30, 40, 43, 150, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.CETITAN, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 4.5, 700, AbilityId.THICK_FAT, AbilityId.SLUSH_RUSH, AbilityId.SHEER_FORCE, 521, 170, 113, 65, 45, 55, 73, 50, 50, 182, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.VELUZA, 9, false, false, false, "Jettison Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2.5, 90, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHARPNESS, 478, 90, 102, 73, 78, 65, 70, 100, 50, 167, GrowthRate.FAST, 50, false), - new PokemonSpecies(SpeciesId.DONDOZO, 9, false, false, false, "Big Catfish Pokémon", PokemonType.WATER, null, 12, 220, AbilityId.UNAWARE, AbilityId.OBLIVIOUS, AbilityId.WATER_VEIL, 530, 150, 100, 115, 65, 65, 35, 25, 50, 265, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.TATSUGIRI, 9, false, false, false, "Mimicry Pokémon", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, GrowthRate.MEDIUM_SLOW, 50, false, false, - new PokemonForm("Curly Form", "curly", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - new PokemonForm("Droopy Form", "droopy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - new PokemonForm("Stretchy Form", "stretchy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - ), - new PokemonSpecies(SpeciesId.ANNIHILAPE, 9, false, false, false, "Rage Monkey Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 1.2, 56, AbilityId.VITAL_SPIRIT, AbilityId.INNER_FOCUS, AbilityId.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.CLODSIRE, 9, false, false, false, "Spiny Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.8, 223, AbilityId.POISON_POINT, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 430, 130, 75, 60, 45, 100, 20, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.FARIGIRAF, 9, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 3.2, 160, AbilityId.CUD_CHEW, AbilityId.ARMOR_TAIL, AbilityId.SAP_SIPPER, 520, 120, 90, 70, 110, 70, 60, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.DUDUNSPARCE, 9, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 3.6, 39.2, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Two-Segment Form", "two-segment", PokemonType.NORMAL, null, 3.6, 39.2, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, false, ""), - new PokemonForm("Three-Segment Form", "three-segment", PokemonType.NORMAL, null, 4.5, 47.4, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182), - ), - new PokemonSpecies(SpeciesId.KINGAMBIT, 9, false, false, false, "Big Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 2, 120, AbilityId.DEFIANT, AbilityId.SUPREME_OVERLORD, AbilityId.PRESSURE, 550, 100, 135, 120, 60, 85, 50, 25, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GREAT_TUSK, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.FIGHTING, 2.2, 320, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 115, 131, 131, 53, 53, 87, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SCREAM_TAIL, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.PSYCHIC, 1.2, 8, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 115, 65, 99, 65, 115, 111, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.BRUTE_BONNET, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.2, 21, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 111, 127, 99, 79, 99, 55, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.FLUTTER_MANE, 9, false, false, false, "Paradox Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 1.4, 4, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 55, 55, 55, 135, 135, 135, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SLITHER_WING, 9, false, false, false, "Paradox Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 3.2, 92, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 85, 135, 79, 85, 105, 81, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SANDY_SHOCKS, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.GROUND, 2.3, 60, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 85, 81, 97, 121, 85, 101, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_TREADS, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.9, 240, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 90, 112, 120, 72, 70, 106, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_BUNDLE, 9, false, false, false, "Paradox Pokémon", PokemonType.ICE, PokemonType.WATER, 0.6, 11, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 56, 80, 114, 124, 60, 136, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_HANDS, 9, false, false, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.ELECTRIC, 1.8, 380.7, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 154, 140, 108, 50, 68, 50, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_JUGULIS, 9, false, false, false, "Paradox Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.3, 111, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 94, 80, 86, 122, 80, 108, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_MOTH, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.POISON, 1.2, 36, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 80, 70, 60, 140, 110, 110, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_THORNS, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.6, 303, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 100, 134, 110, 70, 84, 72, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.FRIGIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.5, 17, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 320, 65, 75, 45, 35, 45, 55, 45, 50, 64, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.ARCTIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.8, 30, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 423, 90, 95, 66, 45, 65, 62, 25, 50, 148, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.BAXCALIBUR, 9, false, false, false, "Ice Dragon Pokémon", PokemonType.DRAGON, PokemonType.ICE, 2.1, 210, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 600, 115, 145, 92, 75, 86, 87, 10, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.GIMMIGHOUL, 9, false, false, false, "Coin Chest Pokémon", PokemonType.GHOST, null, 0.3, 5, AbilityId.RATTLED, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, GrowthRate.SLOW, null, false, false, - new PokemonForm("Chest Form", "chest", PokemonType.GHOST, null, 0.3, 5, AbilityId.RATTLED, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, false, "", true), - new PokemonForm("Roaming Form", "roaming", PokemonType.GHOST, null, 0.1, 1, AbilityId.RUN_AWAY, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 25, 75, 45, 80, 45, 50, 60, false, null, true), - ), - new PokemonSpecies(SpeciesId.GHOLDENGO, 9, false, false, false, "Coin Entity Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.2, 30, AbilityId.GOOD_AS_GOLD, AbilityId.NONE, AbilityId.NONE, 550, 87, 60, 95, 133, 91, 84, 45, 50, 275, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.WO_CHIEN, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.5, 74.2, AbilityId.TABLETS_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 85, 85, 100, 95, 135, 70, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.CHIEN_PAO, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.ICE, 1.9, 152.2, AbilityId.SWORD_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 80, 120, 80, 90, 65, 135, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TING_LU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GROUND, 2.7, 699.7, AbilityId.VESSEL_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 155, 110, 125, 55, 80, 45, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.CHI_YU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.4, 4.9, AbilityId.BEADS_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 55, 80, 80, 135, 120, 100, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ROARING_MOON, 9, false, false, false, "Paradox Pokémon", PokemonType.DRAGON, PokemonType.DARK, 2, 380, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 105, 139, 71, 55, 101, 119, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_VALIANT, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.FIGHTING, 1.4, 35, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 74, 130, 90, 120, 60, 116, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.KORAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, AbilityId.ORICHALCUM_PULSE, AbilityId.NONE, AbilityId.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Apex Build", "apex-build", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, AbilityId.ORICHALCUM_PULSE, AbilityId.NONE, AbilityId.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, false, null, true), - ), - new PokemonSpecies(SpeciesId.MIRAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, AbilityId.HADRON_ENGINE, AbilityId.NONE, AbilityId.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Ultimate Mode", "ultimate-mode", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, AbilityId.HADRON_ENGINE, AbilityId.NONE, AbilityId.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, false, null, true), - ), - new PokemonSpecies(SpeciesId.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", PokemonType.WATER, PokemonType.DRAGON, 3.5, 280, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt - new PokemonSpecies(SpeciesId.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 1.5, 125, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown - new PokemonSpecies(SpeciesId.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 4.4, AbilityId.SUPERSWEET_SYRUP, AbilityId.GLUTTONY, AbilityId.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, - new PokemonForm("Counterfeit Form", "counterfeit", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), - new PokemonForm("Artisan Form", "artisan", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, false, true), - ), - new PokemonSpecies(SpeciesId.SINISTCHA, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, GrowthRate.SLOW, null, false, false, - new PokemonForm("Unremarkable Form", "unremarkable", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), - new PokemonForm("Masterpiece Form", "masterpiece", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, false, null, false, true), - ), - new PokemonSpecies(SpeciesId.OKIDOGI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.8, 92.2, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.GUARD_DOG, 555, 88, 128, 115, 58, 86, 80, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.MUNKIDORI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1, 12.2, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.FRISK, 555, 88, 75, 66, 130, 90, 106, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.FEZANDIPITI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FAIRY, 1.4, 30.1, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.TECHNICIAN, 555, 88, 91, 82, 70, 125, 99, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.OGERPON, 9, true, false, false, "Mask Pokémon", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, GrowthRate.SLOW, 0, false, false, - new PokemonForm("Teal Mask", "teal-mask", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, false, null, true), - new PokemonForm("Wellspring Mask", "wellspring-mask", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Hearthflame Mask", "hearthflame-mask", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Cornerstone Mask", "cornerstone-mask", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Teal Mask Terastallized", "teal-mask-tera", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.EMBODY_ASPECT_TEAL, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Wellspring Mask Terastallized", "wellspring-mask-tera", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, AbilityId.EMBODY_ASPECT_WELLSPRING, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Hearthflame Mask Terastallized", "hearthflame-mask-tera", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, AbilityId.EMBODY_ASPECT_HEARTHFLAME, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Cornerstone Mask Terastallized", "cornerstone-mask-tera", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, AbilityId.EMBODY_ASPECT_CORNERSTONE, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - ), - new PokemonSpecies(SpeciesId.ARCHALUDON, 9, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 2, 60, AbilityId.STAMINA, AbilityId.STURDY, AbilityId.STALWART, 600, 90, 105, 130, 125, 65, 85, 10, 50, 300, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HYDRAPPLE, 9, false, false, false, "Apple Hydra Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 1.8, 93, AbilityId.SUPERSWEET_SYRUP, AbilityId.REGENERATOR, AbilityId.STICKY_HOLD, 540, 106, 80, 110, 120, 80, 44, 10, 50, 270, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(SpeciesId.GOUGING_FIRE, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 3.5, 590, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 105, 115, 121, 65, 93, 91, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.RAGING_BOLT, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 5.2, 480, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 125, 73, 91, 137, 89, 75, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_BOULDER, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.5, 162.5, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 120, 80, 68, 108, 124, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 156, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.TERAPAGOS, 9, false, true, false, "Tera Pokémon", PokemonType.NORMAL, null, 0.2, 6.5, AbilityId.TERA_SHIFT, AbilityId.NONE, AbilityId.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false, - new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.2, 6.5, AbilityId.TERA_SHIFT, AbilityId.NONE, AbilityId.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true), - new PokemonForm("Terastal Form", "terastal", PokemonType.NORMAL, null, 0.3, 16, AbilityId.TERA_SHELL, AbilityId.NONE, AbilityId.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120), - new PokemonForm("Stellar Form", "stellar", PokemonType.NORMAL, null, 1.7, 77, AbilityId.TERAFORM_ZERO, AbilityId.NONE, AbilityId.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140), - ), - new PokemonSpecies(SpeciesId.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", PokemonType.POISON, PokemonType.GHOST, 0.3, 0.3, AbilityId.POISON_PUPPETEER, AbilityId.NONE, AbilityId.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.3, 3.8, AbilityId.GLUTTONY, AbilityId.HUSTLE, AbilityId.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_RATICATE, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.7, 25.5, AbilityId.GLUTTONY, AbilityId.HUSTLE, AbilityId.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_RAICHU, 7, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.PSYCHIC, 0.7, 21, AbilityId.SURGE_SURFER, AbilityId.NONE, AbilityId.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_SANDSHREW, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 0.7, 40, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_SANDSLASH, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 1.2, 55, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_VULPIX, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, null, 0.6, 9.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(SpeciesId.ALOLA_NINETALES, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, PokemonType.FAIRY, 1.1, 19.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SNOW_WARNING, 505, 73, 67, 75, 81, 100, 109, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(SpeciesId.ALOLA_DIGLETT, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.2, 1, AbilityId.SAND_VEIL, AbilityId.TANGLING_HAIR, AbilityId.SAND_FORCE, 265, 10, 55, 30, 35, 45, 90, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_DUGTRIO, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 66.6, AbilityId.SAND_VEIL, AbilityId.TANGLING_HAIR, AbilityId.SAND_FORCE, 425, 35, 100, 60, 50, 70, 110, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_MEOWTH, 7, false, false, false, "Scratch Cat Pokémon", PokemonType.DARK, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.RATTLED, 290, 40, 35, 35, 50, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_PERSIAN, 7, false, false, false, "Classy Cat Pokémon", PokemonType.DARK, null, 1.1, 33, AbilityId.FUR_COAT, AbilityId.TECHNICIAN, AbilityId.RATTLED, 440, 65, 60, 60, 75, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_GEODUDE, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 0.4, 20.3, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_GRAVELER, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1, 110, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_GOLEM, 7, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.7, 316, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_GRIMER, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 0.7, 42, AbilityId.POISON_TOUCH, AbilityId.GLUTTONY, AbilityId.POWER_OF_ALCHEMY, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 52, AbilityId.POISON_TOUCH, AbilityId.GLUTTONY, AbilityId.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 10.9, 415.6, AbilityId.FRISK, AbilityId.NONE, AbilityId.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1, 34, AbilityId.CURSED_BODY, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.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(SpeciesId.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", PokemonType.STEEL, null, 0.4, 7.5, AbilityId.PICKUP, AbilityId.TOUGH_CLAWS, AbilityId.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, null, 0.8, 24, AbilityId.RUN_AWAY, AbilityId.PASTEL_VEIL, AbilityId.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.7, 80, AbilityId.RUN_AWAY, AbilityId.PASTEL_VEIL, AbilityId.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_SLOWPOKE, 8, false, false, false, "Dopey Pokémon", PokemonType.PSYCHIC, null, 1.2, 36, AbilityId.GLUTTONY, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_SLOWBRO, 8, false, false, false, "Hermit Crab Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.6, 70.5, AbilityId.QUICK_DRAW, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 100, 95, 100, 70, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_FARFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 42, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.SCRAPPY, 377, 52, 95, 55, 58, 62, 55, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_WEEZING, 8, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, PokemonType.FAIRY, 3, 16, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.MISTY_SURGE, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_MR_MIME, 8, false, false, false, "Barrier Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 56.8, AbilityId.VITAL_SPIRIT, AbilityId.SCREEN_CLEANER, AbilityId.ICE_BODY, 460, 50, 65, 65, 90, 90, 100, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_ARTICUNO, 8, true, false, false, "Freeze Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 50.9, AbilityId.COMPETITIVE, AbilityId.NONE, AbilityId.NONE, 580, 90, 85, 85, 125, 100, 95, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GALAR_ZAPDOS, 8, true, false, false, "Electric Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 1.6, 58.2, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 580, 90, 125, 90, 85, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GALAR_MOLTRES, 8, true, false, false, "Flame Pokémon", PokemonType.DARK, PokemonType.FLYING, 2, 66, AbilityId.BERSERK, AbilityId.NONE, AbilityId.NONE, 580, 90, 85, 90, 100, 125, 90, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.GALAR_SLOWKING, 8, false, false, false, "Royal Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.8, 79.5, AbilityId.CURIOUS_MEDICINE, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 65, 80, 110, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_CORSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 0.6, 0.5, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 410, 60, 55, 100, 65, 100, 30, 60, 50, 144, GrowthRate.FAST, 25, false), - new PokemonSpecies(SpeciesId.GALAR_ZIGZAGOON, 8, false, false, false, "Tiny Raccoon Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.4, 17.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_LINOONE, 8, false, false, false, "Rushing Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.5, 32.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_DARUMAKA, 8, false, false, false, "Zen Charm Pokémon", PokemonType.ICE, null, 0.7, 40, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.GALAR_DARMANITAN, 8, false, false, false, "Blazing Pokémon", PokemonType.ICE, null, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Standard Mode", "", PokemonType.ICE, null, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), - new PokemonForm("Zen Mode", "zen", PokemonType.ICE, PokemonType.FIRE, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 540, 105, 160, 55, 30, 55, 135, 60, 50, 189), - ), - new PokemonSpecies(SpeciesId.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", PokemonType.GROUND, PokemonType.GHOST, 0.5, 1.5, AbilityId.WANDERING_SPIRIT, AbilityId.NONE, AbilityId.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 20.5, AbilityId.MIMICRY, AbilityId.NONE, AbilityId.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 22.7, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false), - new PokemonSpecies(SpeciesId.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", PokemonType.FIRE, PokemonType.ROCK, 2, 168, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false), - new PokemonSpecies(SpeciesId.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 0.5, 13, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 1.2, 81, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(SpeciesId.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 69.8, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", PokemonType.DARK, PokemonType.POISON, 0.5, 3.9, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 0.9, 27, AbilityId.INNER_FOCUS, AbilityId.KEEN_EYE, AbilityId.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(SpeciesId.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 58.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 19.2, AbilityId.CHLOROPHYLL, AbilityId.HUSTLE, AbilityId.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 0.7, 12.5, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 1.6, 83, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 43.4, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false), - new PokemonSpecies(SpeciesId.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 0.7, 68.5, AbilityId.SAP_SIPPER, AbilityId.SHELL_ARMOR, AbilityId.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.7, 334.1, AbilityId.SAP_SIPPER, AbilityId.SHELL_ARMOR, AbilityId.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", PokemonType.ICE, PokemonType.ROCK, 1.4, 262.4, AbilityId.STRONG_JAW, AbilityId.ICE_BODY, AbilityId.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 37, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(SpeciesId.PALDEA_TAUROS, 9, false, false, false, "Wild Bull Pokémon", PokemonType.FIGHTING, null, 1.4, 115, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, GrowthRate.SLOW, 100, false, false, - new PokemonForm("Combat Breed", "combat", PokemonType.FIGHTING, null, 1.4, 115, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, "", true), - new PokemonForm("Blaze Breed", "blaze", PokemonType.FIGHTING, PokemonType.FIRE, 1.4, 85, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), - new PokemonForm("Aqua Breed", "aqua", PokemonType.FIGHTING, PokemonType.WATER, 1.4, 110, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), - ), - new PokemonSpecies(SpeciesId.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 0.4, 11, AbilityId.POISON_POINT, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.7, 333, AbilityId.MINDS_EYE, AbilityId.NONE, AbilityId.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes - ); -} diff --git a/src/data/pokemon/pokemon-data.ts b/src/data/pokemon/pokemon-data.ts index 6ae86bed5e7..0bd6af0bb04 100644 --- a/src/data/pokemon/pokemon-data.ts +++ b/src/data/pokemon/pokemon-data.ts @@ -1,4 +1,6 @@ -import { type BattlerTag, loadBattlerTag } from "#data/battler-tags"; +import type { BattlerTag } from "#data/battler-tags"; +import { loadBattlerTag, SerializableBattlerTag } from "#data/battler-tags"; +import { allSpecies } from "#data/data-lists"; import type { Gender } from "#data/gender"; import { PokemonMove } from "#data/moves/pokemon-move"; import type { PokemonSpeciesForm } from "#data/pokemon-species"; @@ -8,10 +10,21 @@ import type { BerryType } from "#enums/berry-type"; import type { MoveId } from "#enums/move-id"; import type { Nature } from "#enums/nature"; import type { PokemonType } from "#enums/pokemon-type"; +import type { SpeciesId } from "#enums/species-id"; import type { AttackMoveResult } from "#types/attack-move-result"; import type { IllusionData } from "#types/illusion-data"; import type { TurnMove } from "#types/turn-move"; +import type { CoerceNullPropertiesToUndefined } from "#types/type-helpers"; import { isNullOrUndefined } from "#utils/common"; +import { getPokemonSpeciesForm } from "#utils/pokemon-utils"; + +/** + * The type that {@linkcode PokemonSpeciesForm} is converted to when an object containing it serializes it. + */ +type SerializedSpeciesForm = { + id: SpeciesId; + formIdx: number; +}; /** * Permanent data that can customize a Pokemon in non-standard ways from its Species. @@ -41,9 +54,59 @@ export class CustomPokemonData { } } +/** + * Deserialize a pokemon species form from an object containing `id` and `formIdx` properties. + * @param value - The value to deserialize + * @returns The `PokemonSpeciesForm` or `null` if the fields could not be properly discerned + */ +function deserializePokemonSpeciesForm(value: SerializedSpeciesForm | PokemonSpeciesForm): PokemonSpeciesForm | null { + // @ts-expect-error: We may be deserializing a PokemonSpeciesForm, but we catch later on + let { id, formIdx } = value; + + if (isNullOrUndefined(id) || isNullOrUndefined(formIdx)) { + // @ts-expect-error: Typescript doesn't know that in block, `value` must be a PokemonSpeciesForm + id = value.speciesId; + // @ts-expect-error: Same as above (plus we are accessing a protected property) + formIdx = value._formIndex; + } + // If for some reason either of these fields are null/undefined, we cannot reconstruct the species form + if (isNullOrUndefined(id) || isNullOrUndefined(formIdx)) { + return null; + } + return getPokemonSpeciesForm(id, formIdx); +} + +interface SerializedIllusionData extends Omit { + /** The id of the illusioned fusion species, or `undefined` if not a fusion */ + fusionSpecies?: SpeciesId; +} + +interface SerializedPokemonSummonData { + statStages: number[]; + moveQueue: TurnMove[]; + tags: BattlerTag[]; + abilitySuppressed: boolean; + speciesForm?: SerializedSpeciesForm; + fusionSpeciesForm?: SerializedSpeciesForm; + ability?: AbilityId; + passiveAbility?: AbilityId; + gender?: Gender; + fusionGender?: Gender; + stats: number[]; + moveset?: PokemonMove[]; + types: PokemonType[]; + addedType?: PokemonType; + illusion?: SerializedIllusionData; + illusionBroken: boolean; + berriesEatenLast: BerryType[]; + moveHistory: TurnMove[]; +} + /** * Persistent in-battle data for a {@linkcode Pokemon}. * Resets on switch or new battle. + * + * @sealed */ export class PokemonSummonData { /** [Atk, Def, SpAtk, SpDef, Spd, Acc, Eva] */ @@ -86,7 +149,7 @@ export class PokemonSummonData { */ public moveHistory: TurnMove[] = []; - constructor(source?: PokemonSummonData | Partial) { + constructor(source?: PokemonSummonData | SerializedPokemonSummonData) { if (isNullOrUndefined(source)) { return; } @@ -97,19 +160,90 @@ export class PokemonSummonData { continue; } + if (key === "speciesForm" || key === "fusionSpeciesForm") { + this[key] = deserializePokemonSpeciesForm(value); + continue; + } + + if (key === "illusion" && typeof value === "object") { + // Make a copy so as not to mutate provided value + const illusionData = { + ...value, + }; + if (!isNullOrUndefined(illusionData.fusionSpecies)) { + switch (typeof illusionData.fusionSpecies) { + case "object": + illusionData.fusionSpecies = allSpecies[illusionData.fusionSpecies.speciesId]; + break; + case "number": + illusionData.fusionSpecies = allSpecies[illusionData.fusionSpecies]; + break; + default: + illusionData.fusionSpecies = undefined; + } + } + this[key] = illusionData as IllusionData; + continue; + } + if (key === "moveset") { this.moveset = value?.map((m: any) => PokemonMove.loadMove(m)); continue; } - if (key === "tags") { - // load battler tags - this.tags = value.map((t: BattlerTag) => loadBattlerTag(t)); + if (key === "tags" && Array.isArray(value)) { + // load battler tags, discarding any that are not serializable + this.tags = value + .map((t: SerializableBattlerTag) => loadBattlerTag(t)) + .filter((t): t is SerializableBattlerTag => t instanceof SerializableBattlerTag); continue; } this[key] = value; } } + + /** + * Serialize this PokemonSummonData to JSON, converting {@linkcode PokemonSpeciesForm} and {@linkcode IllusionData.fusionSpecies} + * into simpler types instead of serializing all of their fields. + * + * @remarks + * - `IllusionData.fusionSpecies` is serialized as just the species ID + * - `PokemonSpeciesForm` and `PokemonSpeciesForm.fusionSpeciesForm` are converted into {@linkcode SerializedSpeciesForm} objects + */ + public toJSON(): SerializedPokemonSummonData { + // Pokemon species forms are never saved, only the species ID. + const illusion = this.illusion; + const speciesForm = this.speciesForm; + const fusionSpeciesForm = this.fusionSpeciesForm; + const illusionSpeciesForm = illusion?.fusionSpecies; + const t = { + // the "as omit" is required to avoid TS resolving the overwritten properties to "never" + // We coerce null to undefined in the type, as the for loop below replaces `null` with `undefined` + ...(this as Omit< + CoerceNullPropertiesToUndefined, + "speciesForm" | "fusionSpeciesForm" | "illusion" + >), + speciesForm: isNullOrUndefined(speciesForm) + ? undefined + : { id: speciesForm.speciesId, formIdx: speciesForm.formIndex }, + fusionSpeciesForm: isNullOrUndefined(fusionSpeciesForm) + ? undefined + : { id: fusionSpeciesForm.speciesId, formIdx: fusionSpeciesForm.formIndex }, + illusion: isNullOrUndefined(illusion) + ? undefined + : { + ...(this.illusion as Omit), + fusionSpecies: illusionSpeciesForm?.speciesId, + }, + }; + // Replace `null` with `undefined`, as `undefined` never gets serialized + for (const [key, value] of Object.entries(t)) { + if (value === null) { + t[key] = undefined; + } + } + return t; + } } // TODO: Merge this inside `summmonData` but exclude from save if/when a save data serializer is added @@ -119,7 +253,6 @@ export class PokemonTempSummonData { * Only currently used for positioning the battle cursor. */ turnCount = 1; - /** * The number of turns this pokemon has spent in the active position since the start of the wave * without switching out. diff --git a/src/data/positional-tags/load-positional-tag.ts b/src/data/positional-tags/load-positional-tag.ts new file mode 100644 index 00000000000..ef3609d93e7 --- /dev/null +++ b/src/data/positional-tags/load-positional-tag.ts @@ -0,0 +1,70 @@ +import { DelayedAttackTag, type PositionalTag, WishTag } from "#data/positional-tags/positional-tag"; +import { PositionalTagType } from "#enums/positional-tag-type"; +import type { ObjectValues } from "#types/type-helpers"; +import type { Constructor } from "#utils/common"; + +/** + * Load the attributes of a {@linkcode PositionalTag}. + * @param tagType - The {@linkcode PositionalTagType} to create + * @param args - The arguments needed to instantize the given tag + * @returns The newly created tag. + * @remarks + * This function does not perform any checking if the added tag is valid. + */ +export function loadPositionalTag({ + tagType, + ...args +}: serializedPosTagMap[T]): posTagInstanceMap[T]; +/** + * Load the attributes of a {@linkcode PositionalTag}. + * @param tag - The {@linkcode SerializedPositionalTag} to instantiate + * @returns The newly created tag. + * @remarks + * This function does not perform any checking if the added tag is valid. + */ +export function loadPositionalTag(tag: SerializedPositionalTag): PositionalTag; +export function loadPositionalTag({ + tagType, + ...rest +}: serializedPosTagMap[T]): posTagInstanceMap[T] { + // Note: We need 2 type assertions here: + // 1 because TS doesn't narrow the type of TagClass correctly based on `T`. + // It converts it into `new (DelayedAttackTag | WishTag) => DelayedAttackTag & WishTag` + const tagClass = posTagConstructorMap[tagType] as new (args: posTagParamMap[T]) => posTagInstanceMap[T]; + // 2 because TS doesn't narrow the type of `rest` correctly + // (from `Omit into `posTagParamMap[T]`) + return new tagClass(rest as unknown as posTagParamMap[T]); +} + +/** Const object mapping tag types to their constructors. */ +const posTagConstructorMap = Object.freeze({ + [PositionalTagType.DELAYED_ATTACK]: DelayedAttackTag, + [PositionalTagType.WISH]: WishTag, +}) satisfies { + // NB: This `satisfies` block ensures that all tag types have corresponding entries in the map. + [k in PositionalTagType]: Constructor; +}; + +/** Type mapping positional tag types to their constructors. */ +type posTagMap = typeof posTagConstructorMap; + +/** Type mapping all positional tag types to their instances. */ +type posTagInstanceMap = { + [k in PositionalTagType]: InstanceType; +}; + +/** Type mapping all positional tag types to their constructors' parameters. */ +type posTagParamMap = { + [k in PositionalTagType]: ConstructorParameters[0]; +}; + +/** + * Type mapping all positional tag types to their constructors' parameters, alongside the `tagType` selector. + * Equivalent to their serialized representations. + */ +export type serializedPosTagMap = { + [k in PositionalTagType]: posTagParamMap[k] & { tagType: k }; +}; + +/** Union type containing all serialized {@linkcode PositionalTag}s. */ +export type SerializedPositionalTag = ObjectValues; diff --git a/src/data/positional-tags/positional-tag-manager.ts b/src/data/positional-tags/positional-tag-manager.ts new file mode 100644 index 00000000000..7bf4d4995c6 --- /dev/null +++ b/src/data/positional-tags/positional-tag-manager.ts @@ -0,0 +1,55 @@ +import { loadPositionalTag } from "#data/positional-tags/load-positional-tag"; +import type { PositionalTag } from "#data/positional-tags/positional-tag"; +import type { BattlerIndex } from "#enums/battler-index"; +import type { PositionalTagType } from "#enums/positional-tag-type"; + +/** A manager for the {@linkcode PositionalTag}s in the arena. */ +export class PositionalTagManager { + /** + * Array containing all pending unactivated {@linkcode PositionalTag}s, + * sorted by order of creation (oldest first). + */ + public tags: PositionalTag[] = []; + + /** + * Add a new {@linkcode PositionalTag} to the arena. + * @remarks + * This function does not perform any checking if the added tag is valid. + */ + public addTag(tag: Parameters>[0]): void { + this.tags.push(loadPositionalTag(tag)); + } + + /** + * Check whether a new {@linkcode PositionalTag} can be added to the battlefield. + * @param tagType - The {@linkcode PositionalTagType} being created + * @param targetIndex - The {@linkcode BattlerIndex} being targeted + * @returns Whether the tag can be added. + */ + public canAddTag(tagType: PositionalTagType, targetIndex: BattlerIndex): boolean { + return !this.tags.some(t => t.tagType === tagType && t.targetIndex === targetIndex); + } + + /** + * Decrement turn counts of and trigger all pending {@linkcode PositionalTag}s on field. + * @remarks + * If multiple tags trigger simultaneously, they will activate in order of **initial creation**, regardless of current speed order. + * (Source: [Smogon]()) + */ + public activateAllTags(): void { + const leftoverTags: PositionalTag[] = []; + for (const tag of this.tags) { + // Check for silent removal, immediately removing invalid tags. + if (--tag.turnCount > 0) { + // tag still cooking + leftoverTags.push(tag); + continue; + } + + if (tag.shouldTrigger()) { + tag.trigger(); + } + } + this.tags = leftoverTags; + } +} diff --git a/src/data/positional-tags/positional-tag.ts b/src/data/positional-tags/positional-tag.ts new file mode 100644 index 00000000000..77ca6f0e9eb --- /dev/null +++ b/src/data/positional-tags/positional-tag.ts @@ -0,0 +1,174 @@ +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +// biome-ignore-start lint/correctness/noUnusedImports: TSDoc +import type { ArenaTag } from "#data/arena-tag"; +// biome-ignore-end lint/correctness/noUnusedImports: TSDoc +import { allMoves } from "#data/data-lists"; +import type { BattlerIndex } from "#enums/battler-index"; +import type { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { PositionalTagType } from "#enums/positional-tag-type"; +import type { Pokemon } from "#field/pokemon"; +import i18next from "i18next"; + +/** + * Baseline arguments used to construct all {@linkcode PositionalTag}s, + * the contents of which are serialized and used to construct new tags. \ + * Does not contain the `tagType` parameter (which is used to select the proper class constructor during tag loading). + * @privateRemarks + * All {@linkcode PositionalTag}s are intended to implement a sub-interface of this containing their respective parameters, + * and should refrain from adding extra serializable fields not contained in said interface. + * This ensures that all tags truly "become" their respective interfaces when converted to and from JSON. + */ +export interface PositionalTagBaseArgs { + /** + * The number of turns remaining until this tag's activation. \ + * Decremented by 1 at the end of each turn until reaching 0, at which point it will + * {@linkcode PositionalTag.trigger | trigger} the tag's effects and be removed. + */ + turnCount: number; + /** + * The {@linkcode BattlerIndex} targeted by this effect. + */ + targetIndex: BattlerIndex; +} + +/** + * A {@linkcode PositionalTag} is a variant of an {@linkcode ArenaTag} that targets a single *slot* of the battlefield. + * Each tag can last one or more turns, triggering various effects on removal. + * Multiple tags of the same kind can stack with one another, provided they are affecting different targets. + */ +export abstract class PositionalTag implements PositionalTagBaseArgs { + /** This tag's {@linkcode PositionalTagType | type} */ + public abstract readonly tagType: PositionalTagType; + // These arguments have to be public to implement the interface, but are functionally private + // outside this and the tag manager. + // Left undocumented to inherit doc comments from the interface + public turnCount: number; + public readonly targetIndex: BattlerIndex; + + constructor({ turnCount, targetIndex }: PositionalTagBaseArgs) { + this.turnCount = turnCount; + this.targetIndex = targetIndex; + } + + /** Trigger this tag's effects prior to removal. */ + public abstract trigger(): void; + + /** + * Check whether this tag should be allowed to {@linkcode trigger} and activate its effects + * upon its duration elapsing. + * @returns Whether this tag should be allowed to trigger prior to being removed. + */ + public abstract shouldTrigger(): boolean; + + /** + * Get the {@linkcode Pokemon} currently targeted by this tag. + * @returns The {@linkcode Pokemon} located in this tag's target position, or `undefined` if none exist in it. + */ + protected getTarget(): Pokemon | undefined { + return globalScene.getField()[this.targetIndex]; + } +} + +/** Interface containing additional properties used to construct a {@linkcode DelayedAttackTag}. */ +interface DelayedAttackArgs extends PositionalTagBaseArgs { + /** + * The {@linkcode Pokemon.id | PID} of the {@linkcode Pokemon} having created this effect. + */ + sourceId: number; + /** The {@linkcode MoveId} that created this attack. */ + sourceMove: MoveId; +} + +/** + * Tag to manage execution of delayed attacks, such as {@linkcode MoveId.FUTURE_SIGHT} or {@linkcode MoveId.DOOM_DESIRE}. \ + * Delayed attacks do nothing for the first several turns after use (including the turn the move is used), + * triggering against a certain slot after the turn count has elapsed. + */ +export class DelayedAttackTag extends PositionalTag implements DelayedAttackArgs { + public override readonly tagType = PositionalTagType.DELAYED_ATTACK; + public readonly sourceMove: MoveId; + public readonly sourceId: number; + + constructor({ sourceId, turnCount, targetIndex, sourceMove }: DelayedAttackArgs) { + super({ turnCount, targetIndex }); + this.sourceId = sourceId; + this.sourceMove = sourceMove; + } + + public override trigger(): void { + // Bangs are justified as the `shouldTrigger` method will queue the tag for removal + // if the source or target no longer exist + const source = globalScene.getPokemonById(this.sourceId)!; + const target = this.getTarget()!; + + source.turnData.extraTurns++; + globalScene.phaseManager.queueMessage( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(target), + moveName: allMoves[this.sourceMove].name, + }), + ); + + globalScene.phaseManager.unshiftNew( + "MoveEffectPhase", + this.sourceId, // TODO: Find an alternate method of passing the source pokemon without a source ID + [this.targetIndex], + allMoves[this.sourceMove], + MoveUseMode.DELAYED_ATTACK, + ); + } + + public override shouldTrigger(): boolean { + const source = globalScene.getPokemonById(this.sourceId); + const target = this.getTarget(); + // Silently disappear if either source or target are missing or happen to be the same pokemon + // (i.e. targeting oneself) + // We also need to check for fainted targets as they don't technically leave the field until _after_ the turn ends + return !!source && !!target && source !== target && !target.isFainted(); + } +} + +/** Interface containing arguments used to construct a {@linkcode WishTag}. */ +interface WishArgs extends PositionalTagBaseArgs { + /** The amount of {@linkcode Stat.HP | HP} to heal; set to 50% of the user's max HP during move usage. */ + healHp: number; + /** The name of the {@linkcode Pokemon} having created the tag. */ + pokemonName: string; +} + +/** + * Tag to implement {@linkcode MoveId.WISH | Wish}. + */ +export class WishTag extends PositionalTag implements WishArgs { + public override readonly tagType = PositionalTagType.WISH; + + public readonly pokemonName: string; + public readonly healHp: number; + + constructor({ turnCount, targetIndex, healHp, pokemonName }: WishArgs) { + super({ turnCount, targetIndex }); + this.healHp = healHp; + this.pokemonName = pokemonName; + } + + public override trigger(): void { + // TODO: Rename this locales key - wish shows a message on REMOVAL, not addition + globalScene.phaseManager.queueMessage( + i18next.t("arenaTag:wishTagOnAdd", { + pokemonNameWithAffix: this.pokemonName, + }), + ); + + globalScene.phaseManager.unshiftNew("PokemonHealPhase", this.targetIndex, this.healHp, null, true, false); + } + + public override shouldTrigger(): boolean { + // Disappear if no target or target is fainted. + // The source need not exist at the time of activation (since all we need is a simple message) + // TODO: Verify whether Wish shows a message if the Pokemon it would affect is KO'd on the turn of activation + const target = this.getTarget(); + return !!target && !target.isFainted(); + } +} diff --git a/src/data/terrain.ts b/src/data/terrain.ts index f5382b1c3ec..7906450d0ea 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -3,6 +3,7 @@ import type { BattlerIndex } from "#enums/battler-index"; import { PokemonType } from "#enums/pokemon-type"; import type { Pokemon } from "#field/pokemon"; import type { Move } from "#moves/move"; +import { isFieldTargeted, isSpreadMove } from "#moves/move-utils"; import i18next from "i18next"; export enum TerrainType { @@ -60,13 +61,19 @@ export class Terrain { isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean { switch (this.terrainType) { case TerrainType.PSYCHIC: - if (!move.hasAttr("ProtectAttr")) { - // Cancels move if the move has positive priority and targets a Pokemon grounded on the Psychic Terrain - return ( - move.getPriority(user) > 0 && - user.getOpponents(true).some(o => targets.includes(o.getBattlerIndex()) && o.isGrounded()) - ); - } + // Cf https://bulbapedia.bulbagarden.net/wiki/Psychic_Terrain_(move)#Generation_VII + // Psychic terrain will only cancel a move if it: + return ( + // ... is neither spread nor field-targeted, + !isFieldTargeted(move) && + !isSpreadMove(move) && + // .. has positive final priority, + move.getPriority(user) > 0 && + // ...and is targeting at least 1 grounded opponent + user + .getOpponents(true) + .some(o => targets.includes(o.getBattlerIndex()) && o.isGrounded()) + ); } return false; diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index 6b882d1ddc1..8eafd9f6404 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -1,12 +1,12 @@ import { TrainerType } from "#enums/trainer-type"; -import { toReadableString } from "#utils/common"; +import { toPascalSnakeCase } from "#utils/strings"; class TrainerNameConfig { public urls: string[]; public femaleUrls: string[] | null; constructor(type: TrainerType, ...urls: string[]) { - this.urls = urls.length ? urls : [toReadableString(TrainerType[type]).replace(/ /g, "_")]; + this.urls = urls.length ? urls : [toPascalSnakeCase(TrainerType[type])]; } hasGenderVariant(...femaleUrls: string[]): TrainerNameConfig { diff --git a/src/data/trainers/trainer-config.ts b/src/data/trainers/trainer-config.ts index 4e88399bec3..5739492f96e 100644 --- a/src/data/trainers/trainer-config.ts +++ b/src/data/trainers/trainer-config.ts @@ -41,15 +41,9 @@ import type { TrainerConfigs, TrainerTierPools, } from "#types/trainer-funcs"; -import { - coerceArray, - isNullOrUndefined, - randSeedInt, - randSeedIntRange, - randSeedItem, - toReadableString, -} from "#utils/common"; +import { coerceArray, isNullOrUndefined, randSeedInt, randSeedIntRange, randSeedItem } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { toSnakeCase, toTitleCase } from "#utils/strings"; import i18next from "i18next"; /** Minimum BST for Pokemon generated onto the Elite Four's teams */ @@ -140,7 +134,7 @@ export class TrainerConfig { constructor(trainerType: TrainerType, allowLegendaries?: boolean) { this.trainerType = trainerType; this.trainerAI = new TrainerAI(); - this.name = toReadableString(TrainerType[this.getDerivedType()]); + this.name = toTitleCase(TrainerType[this.getDerivedType()]); this.battleBgm = "battle_trainer"; this.mixedBattleBgm = "battle_trainer"; this.victoryBgm = "victory_trainer"; @@ -734,7 +728,7 @@ export class TrainerConfig { } // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. - const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); + const nameForCall = toSnakeCase(this.name); this.name = i18next.t(`trainerNames:${nameForCall}`); // Set the title to "elite_four". (this is the key in the i18n file) @@ -1250,12 +1244,58 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("Breeders") .setPartyTemplateFunc(() => getWavePartyTemplate( - trainerPartyTemplates.FOUR_WEAKER, - trainerPartyTemplates.FIVE_WEAKER, - trainerPartyTemplates.SIX_WEAKER, + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.FIVE_WEAK, + trainerPartyTemplates.SIX_WEAK, ), ) - .setSpeciesFilter(s => s.baseTotal < 450), + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TYROGUE, + SpeciesId.SMOOCHUM, + SpeciesId.AZURILL, + SpeciesId.BUDEW, + SpeciesId.CHINGLING, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MANTYKE, + SpeciesId.TOXEL, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.DITTO, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.WYNAUT, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.AUDINO, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.GALAR_PONYTA, + ], + [TrainerPoolTier.SUPER_RARE]: [ + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + ], + }), [TrainerType.CLERK]: new TrainerConfig(++t) .setHasGenders("Clerk Female") .setHasDouble("Colleagues") diff --git a/src/data/trainers/trainer-party-template.ts b/src/data/trainers/trainer-party-template.ts index d4e7fe7a261..0ad3d36dcfa 100644 --- a/src/data/trainers/trainer-party-template.ts +++ b/src/data/trainers/trainer-party-template.ts @@ -144,6 +144,7 @@ export const trainerPartyTemplates = { FIVE_WEAK_BALANCED: new TrainerPartyTemplate(5, PartyMemberStrength.WEAK, false, true), SIX_WEAKER: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER), SIX_WEAKER_SAME: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER, true), + SIX_WEAK: new TrainerPartyTemplate(6, PartyMemberStrength.WEAK), SIX_WEAK_SAME: new TrainerPartyTemplate(6, PartyMemberStrength.WEAK, true), SIX_WEAK_BALANCED: new TrainerPartyTemplate(6, PartyMemberStrength.WEAK, false, true), diff --git a/src/enums/ability-attr.ts b/src/enums/ability-attr.ts index 5f7d107f2d1..a3b9511ad02 100644 --- a/src/enums/ability-attr.ts +++ b/src/enums/ability-attr.ts @@ -1,3 +1,5 @@ +import type { ObjectValues } from "#types/type-helpers"; + /** * Not to be confused with an Ability Attribute. * This is an object literal storing the slot that an ability can occupy. @@ -8,4 +10,4 @@ export const AbilityAttr = Object.freeze({ ABILITY_HIDDEN: 4, }); -export type AbilityAttr = typeof AbilityAttr[keyof typeof AbilityAttr]; \ No newline at end of file +export type AbilityAttr = ObjectValues; \ No newline at end of file diff --git a/src/enums/arena-tag-type.ts b/src/enums/arena-tag-type.ts index 214826993b3..7f9364395c0 100644 --- a/src/enums/arena-tag-type.ts +++ b/src/enums/arena-tag-type.ts @@ -15,9 +15,6 @@ export enum ArenaTagType { SPIKES = "SPIKES", TOXIC_SPIKES = "TOXIC_SPIKES", MIST = "MIST", - FUTURE_SIGHT = "FUTURE_SIGHT", - DOOM_DESIRE = "DOOM_DESIRE", - WISH = "WISH", STEALTH_ROCK = "STEALTH_ROCK", STICKY_WEB = "STICKY_WEB", TRICK_ROOM = "TRICK_ROOM", diff --git a/src/enums/battler-tag-type.ts b/src/enums/battler-tag-type.ts index 719b08c5b81..6d9d2dd4a92 100644 --- a/src/enums/battler-tag-type.ts +++ b/src/enums/battler-tag-type.ts @@ -1,5 +1,4 @@ export enum BattlerTagType { - NONE = "NONE", RECHARGING = "RECHARGING", FLINCHED = "FLINCHED", INTERRUPTED = "INTERRUPTED", diff --git a/src/enums/dex-attr.ts b/src/enums/dex-attr.ts index ee5ceb43ef2..1a98167b4a1 100644 --- a/src/enums/dex-attr.ts +++ b/src/enums/dex-attr.ts @@ -1,3 +1,5 @@ +import type { ObjectValues } from "#types/type-helpers"; + export const DexAttr = Object.freeze({ NON_SHINY: 1n, SHINY: 2n, @@ -8,4 +10,4 @@ export const DexAttr = Object.freeze({ VARIANT_3: 64n, DEFAULT_FORM: 128n, }); -export type DexAttr = typeof DexAttr[keyof typeof DexAttr]; +export type DexAttr = ObjectValues; diff --git a/src/enums/dynamic-phase-type.ts b/src/enums/dynamic-phase-type.ts index a34ac371668..b9ea6bf197d 100644 --- a/src/enums/dynamic-phase-type.ts +++ b/src/enums/dynamic-phase-type.ts @@ -1,6 +1,7 @@ /** - * Enum representation of the phase types held by implementations of {@linkcode PhasePriorityQueue} + * Enum representation of the phase types held by implementations of {@linkcode PhasePriorityQueue}. */ +// TODO: We currently assume these are in order export enum DynamicPhaseType { POST_SUMMON } diff --git a/src/enums/gacha-types.ts b/src/enums/gacha-types.ts index cd0bc67eae0..08f147b27b1 100644 --- a/src/enums/gacha-types.ts +++ b/src/enums/gacha-types.ts @@ -1,7 +1,9 @@ +import type { ObjectValues } from "#types/type-helpers"; + export const GachaType = Object.freeze({ MOVE: 0, LEGENDARY: 1, SHINY: 2 }); -export type GachaType = typeof GachaType[keyof typeof GachaType]; +export type GachaType = ObjectValues; diff --git a/src/enums/hit-check-result.ts b/src/enums/hit-check-result.ts index cf8a2b17194..0866050341e 100644 --- a/src/enums/hit-check-result.ts +++ b/src/enums/hit-check-result.ts @@ -1,3 +1,5 @@ +import type { ObjectValues } from "#types/type-helpers"; + /** The result of a hit check calculation */ export const HitCheckResult = { /** Hit checks haven't been evaluated yet in this pass */ @@ -20,4 +22,4 @@ export const HitCheckResult = { ERROR: 8, } as const; -export type HitCheckResult = typeof HitCheckResult[keyof typeof HitCheckResult]; +export type HitCheckResult = ObjectValues; diff --git a/src/enums/MoveCategory.ts b/src/enums/move-category.ts similarity index 100% rename from src/enums/MoveCategory.ts rename to src/enums/move-category.ts diff --git a/src/enums/MoveEffectTrigger.ts b/src/enums/move-effect-trigger.ts similarity index 100% rename from src/enums/MoveEffectTrigger.ts rename to src/enums/move-effect-trigger.ts diff --git a/src/enums/MoveFlags.ts b/src/enums/move-flags.ts similarity index 75% rename from src/enums/MoveFlags.ts rename to src/enums/move-flags.ts index 06de265df09..6cdc1e5f8cc 100644 --- a/src/enums/MoveFlags.ts +++ b/src/enums/move-flags.ts @@ -4,15 +4,19 @@ */ export enum MoveFlags { NONE = 0, + /** + * Whether the move makes contact. + * Set by default on all contact moves, and unset by default on all special moves. + */ MAKES_CONTACT = 1 << 0, IGNORE_PROTECT = 1 << 1, /** * Sound-based moves have the following effects: - * - Pokemon with the {@linkcode AbilityId.SOUNDPROOF Soundproof Ability} are unaffected by other Pokemon's sound-based moves. - * - Pokemon affected by {@linkcode MoveId.THROAT_CHOP Throat Chop} cannot use sound-based moves for two turns. - * - Sound-based moves used by a Pokemon with {@linkcode AbilityId.LIQUID_VOICE Liquid Voice} become Water-type moves. - * - Sound-based moves used by a Pokemon with {@linkcode AbilityId.PUNK_ROCK Punk Rock} are boosted by 30%. Pokemon with Punk Rock also take half damage from sound-based moves. - * - All sound-based moves (except Howl) can hit Pokemon behind an active {@linkcode MoveId.SUBSTITUTE Substitute}. + * - Pokemon with the {@linkcode AbilityId.SOUNDPROOF | Soundproof} Ability are unaffected by other Pokemon's sound-based moves. + * - Pokemon affected by {@linkcode MoveId.THROAT_CHOP | Throat Chop} cannot use sound-based moves for two turns. + * - Sound-based moves used by a Pokemon with {@linkcode AbilityId.LIQUID_VOICE | Liquid Voice} become Water-type moves. + * - Sound-based moves used by a Pokemon with {@linkcode AbilityId.PUNK_ROCK | Punk Rock} are boosted by 30%. Pokemon with Punk Rock also take half damage from sound-based moves. + * - All sound-based moves (except Howl) can hit Pokemon behind an active {@linkcode MoveId.SUBSTITUTE | Substitute}. * * cf https://bulbapedia.bulbagarden.net/wiki/Sound-based_move */ diff --git a/src/enums/MoveTarget.ts b/src/enums/move-target.ts similarity index 100% rename from src/enums/MoveTarget.ts rename to src/enums/move-target.ts diff --git a/src/enums/move-use-mode.ts b/src/enums/move-use-mode.ts index 1bb9d6374b7..13ea5248853 100644 --- a/src/enums/move-use-mode.ts +++ b/src/enums/move-use-mode.ts @@ -1,5 +1,7 @@ import type { PostDancingMoveAbAttr } from "#abilities/ability"; +import type { DelayedAttackAttr } from "#app/@types/move-types"; import type { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; +import type { ObjectValues } from "#types/type-helpers"; /** * Enum representing all the possible means through which a given move can be executed. @@ -59,11 +61,20 @@ export const MoveUseMode = { * and retain the same copy prevention as {@linkcode MoveUseMode.FOLLOW_UP}, but additionally * **cannot be reflected by other reflecting effects**. */ - REFLECTED: 5 - // TODO: Add use type TRANSPARENT for Future Sight and Doom Desire to prevent move history pushing + REFLECTED: 5, + /** + * This "move" was created by a transparent effect that **does not count as using a move**, + * such as {@linkcode DelayedAttackAttr | Future Sight/Doom Desire}. + * + * In addition to inheriting the cancellation ignores and copy prevention from {@linkcode MoveUseMode.REFLECTED}, + * transparent moves are ignored by **all forms of move usage checks** due to **not pushing to move history**. + * @todo Consider other means of implementing FS/DD than this - we currently only use it + * to prevent pushing to move history and avoid re-delaying the attack portion + */ + DELAYED_ATTACK: 6 } as const; -export type MoveUseMode = (typeof MoveUseMode)[keyof typeof MoveUseMode]; +export type MoveUseMode = ObjectValues; // # HELPER FUNCTIONS // Please update the markdown tables if any new `MoveUseMode`s get added. @@ -75,13 +86,14 @@ export type MoveUseMode = (typeof MoveUseMode)[keyof typeof MoveUseMode]; * @remarks * This function is equivalent to the following truth table: * - * | Use Type | Returns | - * |------------------------------------|---------| - * | {@linkcode MoveUseMode.NORMAL} | `false` | - * | {@linkcode MoveUseMode.IGNORE_PP} | `false` | - * | {@linkcode MoveUseMode.INDIRECT} | `true` | - * | {@linkcode MoveUseMode.FOLLOW_UP} | `true` | - * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | Use Type | Returns | + * |----------------------------------------|---------| + * | {@linkcode MoveUseMode.NORMAL} | `false` | + * | {@linkcode MoveUseMode.IGNORE_PP} | `false` | + * | {@linkcode MoveUseMode.INDIRECT} | `true` | + * | {@linkcode MoveUseMode.FOLLOW_UP} | `true` | + * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | {@linkcode MoveUseMode.DELAYED_ATTACK} | `true` | */ export function isVirtual(useMode: MoveUseMode): boolean { return useMode >= MoveUseMode.INDIRECT @@ -95,13 +107,14 @@ export function isVirtual(useMode: MoveUseMode): boolean { * @remarks * This function is equivalent to the following truth table: * - * | Use Type | Returns | - * |------------------------------------|---------| - * | {@linkcode MoveUseMode.NORMAL} | `false` | - * | {@linkcode MoveUseMode.IGNORE_PP} | `false` | - * | {@linkcode MoveUseMode.INDIRECT} | `false` | - * | {@linkcode MoveUseMode.FOLLOW_UP} | `true` | - * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | Use Type | Returns | + * |----------------------------------------|---------| + * | {@linkcode MoveUseMode.NORMAL} | `false` | + * | {@linkcode MoveUseMode.IGNORE_PP} | `false` | + * | {@linkcode MoveUseMode.INDIRECT} | `false` | + * | {@linkcode MoveUseMode.FOLLOW_UP} | `true` | + * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | {@linkcode MoveUseMode.DELAYED_ATTACK} | `true` | */ export function isIgnoreStatus(useMode: MoveUseMode): boolean { return useMode >= MoveUseMode.FOLLOW_UP; @@ -115,13 +128,14 @@ export function isIgnoreStatus(useMode: MoveUseMode): boolean { * @remarks * This function is equivalent to the following truth table: * - * | Use Type | Returns | - * |------------------------------------|---------| - * | {@linkcode MoveUseMode.NORMAL} | `false` | - * | {@linkcode MoveUseMode.IGNORE_PP} | `true` | - * | {@linkcode MoveUseMode.INDIRECT} | `true` | - * | {@linkcode MoveUseMode.FOLLOW_UP} | `true` | - * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | Use Type | Returns | + * |----------------------------------------|---------| + * | {@linkcode MoveUseMode.NORMAL} | `false` | + * | {@linkcode MoveUseMode.IGNORE_PP} | `true` | + * | {@linkcode MoveUseMode.INDIRECT} | `true` | + * | {@linkcode MoveUseMode.FOLLOW_UP} | `true` | + * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | {@linkcode MoveUseMode.DELAYED_ATTACK} | `true` | */ export function isIgnorePP(useMode: MoveUseMode): boolean { return useMode >= MoveUseMode.IGNORE_PP; @@ -136,14 +150,15 @@ export function isIgnorePP(useMode: MoveUseMode): boolean { * @remarks * This function is equivalent to the following truth table: * - * | Use Type | Returns | - * |------------------------------------|---------| - * | {@linkcode MoveUseMode.NORMAL} | `false` | - * | {@linkcode MoveUseMode.IGNORE_PP} | `false` | - * | {@linkcode MoveUseMode.INDIRECT} | `false` | - * | {@linkcode MoveUseMode.FOLLOW_UP} | `false` | - * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | Use Type | Returns | + * |----------------------------------------|---------| + * | {@linkcode MoveUseMode.NORMAL} | `false` | + * | {@linkcode MoveUseMode.IGNORE_PP} | `false` | + * | {@linkcode MoveUseMode.INDIRECT} | `false` | + * | {@linkcode MoveUseMode.FOLLOW_UP} | `false` | + * | {@linkcode MoveUseMode.REFLECTED} | `true` | + * | {@linkcode MoveUseMode.DELAYED_ATTACK} | `false` | */ export function isReflected(useMode: MoveUseMode): boolean { return useMode === MoveUseMode.REFLECTED; -} +} \ No newline at end of file diff --git a/src/enums/MultiHitType.ts b/src/enums/multi-hit-type.ts similarity index 100% rename from src/enums/MultiHitType.ts rename to src/enums/multi-hit-type.ts diff --git a/src/enums/positional-tag-type.ts b/src/enums/positional-tag-type.ts new file mode 100644 index 00000000000..254503d0de6 --- /dev/null +++ b/src/enums/positional-tag-type.ts @@ -0,0 +1,10 @@ +/** + * Enum representing all positional tag types. + * @privateRemarks + * When adding new tag types, please update `positionalTagConstructorMap` in `src/data/positionalTags` + * with the new tag type. + */ +export enum PositionalTagType { + DELAYED_ATTACK = "DELAYED_ATTACK", + WISH = "WISH", +} diff --git a/src/enums/text-style.ts b/src/enums/text-style.ts new file mode 100644 index 00000000000..964a985cdd6 --- /dev/null +++ b/src/enums/text-style.ts @@ -0,0 +1,59 @@ +export const TextStyle = Object.freeze({ + MESSAGE: 1, + WINDOW: 2, + WINDOW_ALT: 3, + WINDOW_BATTLE_COMMAND: 4, + BATTLE_INFO: 5, + PARTY: 6, + PARTY_RED: 7, + PARTY_CANCEL_BUTTON: 8, + INSTRUCTIONS_TEXT: 9, + MOVE_LABEL: 10, + SUMMARY: 11, + SUMMARY_DEX_NUM: 12, + SUMMARY_DEX_NUM_GOLD: 13, + SUMMARY_ALT: 14, + SUMMARY_HEADER: 15, + SUMMARY_RED: 16, + SUMMARY_BLUE: 17, + SUMMARY_PINK: 18, + SUMMARY_GOLD: 19, + SUMMARY_GRAY: 20, + SUMMARY_GREEN: 21, + SUMMARY_STATS: 22, + SUMMARY_STATS_BLUE: 23, + SUMMARY_STATS_PINK: 24, + SUMMARY_STATS_GOLD: 25, + LUCK_VALUE: 26, + STATS_HEXAGON: 27, + GROWTH_RATE_TYPE: 28, + MONEY: 29, // Money default styling (pale yellow) + MONEY_WINDOW: 30, // Money displayed in Windows (needs different colors based on theme) + HEADER_LABEL: 31, + STATS_LABEL: 32, + STATS_VALUE: 33, + SETTINGS_VALUE: 34, + SETTINGS_LABEL: 35, + SETTINGS_LABEL_NAVBAR: 36, + SETTINGS_SELECTED: 37, + SETTINGS_LOCKED: 38, + EGG_LIST: 39, + EGG_SUMMARY_NAME: 40, + EGG_SUMMARY_DEX: 41, + STARTER_VALUE_LIMIT: 42, + TOOLTIP_TITLE: 43, + TOOLTIP_CONTENT: 44, + FILTER_BAR_MAIN: 45, + MOVE_INFO_CONTENT: 46, + MOVE_PP_FULL: 47, + MOVE_PP_HALF_FULL: 48, + MOVE_PP_NEAR_EMPTY: 49, + MOVE_PP_EMPTY: 50, + SMALLER_WINDOW_ALT: 51, + BGM_BAR: 52, + PERFECT_IV: 53, + ME_OPTION_DEFAULT: 54, // Default style for choices in ME + ME_OPTION_SPECIAL: 55, // Style for choices with special requirements in ME + SHADOW_TEXT: 56 // to obscure unavailable options +}) +export type TextStyle = typeof TextStyle[keyof typeof TextStyle]; \ No newline at end of file diff --git a/src/field/arena.ts b/src/field/arena.ts index 8f27ddb22e9..484450cc5df 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -1,3 +1,7 @@ +// biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports +import type { PositionalTag } from "#data/positional-tags/positional-tag"; +// biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports + import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; import Overrides from "#app/overrides"; @@ -7,6 +11,7 @@ import type { ArenaTag } from "#data/arena-tag"; import { ArenaTrapTag, getArenaTag } from "#data/arena-tag"; import { SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#data/form-change-triggers"; import type { PokemonSpecies } from "#data/pokemon-species"; +import { PositionalTagManager } from "#data/positional-tags/positional-tag-manager"; import { getTerrainClearMessage, getTerrainStartMessage, Terrain, TerrainType } from "#data/terrain"; import { getLegendaryWeatherContinuesMessage, @@ -38,7 +43,14 @@ export class Arena { public biomeType: BiomeId; public weather: Weather | null; public terrain: Terrain | null; - public tags: ArenaTag[]; + /** All currently-active {@linkcode ArenaTag}s on both sides of the field. */ + public tags: ArenaTag[] = []; + /** + * All currently-active {@linkcode PositionalTag}s on both sides of the field, + * sorted by tag type. + */ + public positionalTagManager: PositionalTagManager = new PositionalTagManager(); + public bgm: string; public ignoreAbilities: boolean; public ignoringEffectSource: BattlerIndex | null; @@ -58,7 +70,6 @@ export class Arena { constructor(biome: BiomeId, bgm: string, playerFaints = 0) { this.biomeType = biome; - this.tags = []; this.bgm = bgm; this.trainerPool = biomeTrainerPools[biome]; this.updatePoolsForTimeOfDay(); @@ -676,15 +687,15 @@ export class Arena { } /** - * Adds a new tag to the arena - * @param tagType {@linkcode ArenaTagType} the tag being added - * @param turnCount How many turns the tag lasts - * @param sourceMove {@linkcode MoveId} the move the tag came from, or `undefined` if not from a move - * @param sourceId The ID of the pokemon in play the tag came from (see {@linkcode BattleScene.getPokemonById}) - * @param side {@linkcode ArenaTagSide} which side(s) the tag applies to - * @param quiet If a message should be queued on screen to announce the tag being added - * @param targetIndex The {@linkcode BattlerIndex} of the target pokemon - * @returns `false` if there already exists a tag of this type in the Arena + * Add a new {@linkcode ArenaTag} to the arena, triggering overlap effects on existing tags as applicable. + * @param tagType - The {@linkcode ArenaTagType} of the tag to add. + * @param turnCount - The number of turns the newly-added tag should last. + * @param sourceId - The {@linkcode Pokemon.id | PID} of the Pokemon creating the tag. + * @param sourceMove - The {@linkcode MoveId} of the move creating the tag, or `undefined` if not from a move. + * @param side - The {@linkcode ArenaTagSide}(s) to which the tag should apply; default `ArenaTagSide.BOTH`. + * @param quiet - Whether to suppress messages produced by tag addition; default `false`. + * @returns `true` if the tag was successfully added without overlapping. + // TODO: Do we need the return value here? literally nothing uses it */ addTag( tagType: ArenaTagType, @@ -693,7 +704,6 @@ export class Arena { sourceId: number, side: ArenaTagSide = ArenaTagSide.BOTH, quiet = false, - targetIndex?: BattlerIndex, ): boolean { const existingTag = this.getTagOnSide(tagType, side); if (existingTag) { @@ -708,7 +718,7 @@ export class Arena { } // creates a new tag object - const newTag = getArenaTag(tagType, turnCount || 0, sourceMove, sourceId, targetIndex, side); + const newTag = getArenaTag(tagType, turnCount || 0, sourceMove, sourceId, side); if (newTag) { newTag.onAdd(this, quiet); this.tags.push(newTag); @@ -724,10 +734,19 @@ export class Arena { } /** - * Attempts to get a tag from the Arena via {@linkcode getTagOnSide} that applies to both sides - * @param tagType The {@linkcode ArenaTagType} or {@linkcode ArenaTag} to get - * @returns either the {@linkcode ArenaTag}, or `undefined` if it isn't there + * Attempt to get a tag from the Arena via {@linkcode getTagOnSide} that applies to both sides + * @param tagType - The {@linkcode ArenaTagType} to retrieve + * @returns The existing {@linkcode ArenaTag}, or `undefined` if not present. + * @overload */ + getTag(tagType: ArenaTagType): ArenaTag | undefined; + /** + * Attempt to get a tag from the Arena via {@linkcode getTagOnSide} that applies to both sides + * @param tagType - The constructor of the {@linkcode ArenaTag} to retrieve + * @returns The existing {@linkcode ArenaTag}, or `undefined` if not present. + * @overload + */ + getTag(tagType: Constructor | AbstractConstructor): T | undefined; getTag(tagType: ArenaTagType | Constructor | AbstractConstructor): ArenaTag | undefined { return this.getTagOnSide(tagType, ArenaTagSide.BOTH); } diff --git a/src/field/damage-number-handler.ts b/src/field/damage-number-handler.ts index acb279a17a0..1bbacc19566 100644 --- a/src/field/damage-number-handler.ts +++ b/src/field/damage-number-handler.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; import type { BattlerIndex } from "#enums/battler-index"; import { HitResult } from "#enums/hit-result"; +import { TextStyle } from "#enums/text-style"; import type { Pokemon } from "#field/pokemon"; import type { DamageResult } from "#types/damage-result"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { fixedInt, formatStat } from "#utils/common"; type TextAndShadowArr = [string | null, string | null]; diff --git a/src/field/pokemon-sprite-sparkle-handler.ts b/src/field/pokemon-sprite-sparkle-handler.ts index 725229ce723..bd44dc03330 100644 --- a/src/field/pokemon-sprite-sparkle-handler.ts +++ b/src/field/pokemon-sprite-sparkle-handler.ts @@ -5,10 +5,11 @@ import { coerceArray, fixedInt, randInt } from "#utils/common"; export class PokemonSpriteSparkleHandler { private sprites: Set; + private counterTween?: Phaser.Tweens.Tween; + setup(): void { this.sprites = new Set(); - - globalScene.tweens.addCounter({ + this.counterTween = globalScene.tweens.addCounter({ duration: fixedInt(200), from: 0, to: 1, @@ -78,4 +79,12 @@ export class PokemonSpriteSparkleHandler { this.sprites.delete(s); } } + + destroy(): void { + this.removeAll(); + if (this.counterTween) { + this.counterTween.destroy(); + this.counterTween = undefined; + } + } } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 01f137b28fd..d4f332d887c 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -25,7 +25,6 @@ import { AutotomizedTag, BattlerTag, CritBoostTag, - DragonCheerTag, EncoreTag, ExposedTag, GroundedTag, @@ -61,7 +60,7 @@ import { } from "#data/pokemon-data"; import type { SpeciesFormChange } from "#data/pokemon-forms"; import type { PokemonSpeciesForm } from "#data/pokemon-species"; -import { getFusedSpeciesName, getPokemonSpeciesForm, PokemonSpecies } from "#data/pokemon-species"; +import { PokemonSpecies } from "#data/pokemon-species"; import { getRandomStatus, getStatusEffectOverlapText, Status } from "#data/status-effect"; import { getTerrainBlockMessage, TerrainType } from "#data/terrain"; import type { TypeDamageMultiplier } from "#data/type"; @@ -82,11 +81,11 @@ import { DexAttr } from "#enums/dex-attr"; import { FieldPosition } from "#enums/field-position"; import { HitResult } from "#enums/hit-result"; import { LearnMoveSituation } from "#enums/learn-move-situation"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveTarget } from "#enums/MoveTarget"; import { ModifierTier } from "#enums/modifier-tier"; +import { MoveCategory } from "#enums/move-category"; +import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; +import { MoveTarget } from "#enums/move-target"; import { isIgnorePP, isVirtual, MoveUseMode } from "#enums/move-use-mode"; import { Nature } from "#enums/nature"; import { PokeballType } from "#enums/pokeball"; @@ -169,7 +168,7 @@ import { toDmgValue, } from "#utils/common"; import { getEnumValues } from "#utils/enums"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; import { argbFromRgba, QuantizerCelebi, rgbaFromArgb } from "@material/material-color-utilities"; import i18next from "i18next"; import Phaser from "phaser"; @@ -213,8 +212,11 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * TODO: Stop treating this like a unique ID and stop treating 0 as no pokemon */ public id: number; - public name: string; - public nickname: string; + /** + * The Pokemon's current nickname, or `undefined` if it currently lacks one. + * If omitted, references to this should refer to the default name for this Pokemon's species. + */ + public nickname?: string; public species: PokemonSpecies; public formIndex: number; public abilityIndex: number; @@ -442,10 +444,9 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @returns The name to render for this {@linkcode Pokemon}. */ getNameToRender(useIllusion = true) { - const name: string = - !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.name : this.name; - const nickname: string = - !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.nickname : this.nickname; + const illusion = this.summonData.illusion; + const name = useIllusion ? (illusion?.name ?? this.name) : this.name; + const nickname: string | undefined = useIllusion ? illusion?.nickname : this.nickname; try { if (nickname) { return decodeURIComponent(escape(atob(nickname))); // TODO: Remove `atob` and `escape`... eventually... @@ -463,7 +464,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @returns The {@linkcode PokeballType} that will be shown when this Pokemon is sent out into battle. */ getPokeball(useIllusion = false): PokeballType { - return useIllusion && this.summonData.illusion ? this.summonData.illusion.pokeball : this.pokeball; + return useIllusion ? (this.summonData.illusion?.pokeball ?? this.pokeball) : this.pokeball; } init(): void { @@ -609,24 +610,33 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Generate an illusion of the last pokemon in the party, as other wild pokemon in the area. + * Set this pokemon's illusion to the data of the given pokemon. + * + * @remarks + * When setting the illusion of a wild pokemon, a {@linkcode PokemonSpecies} is generally passed. + * When setting the illusion of a pokemon in this way, the fields required by illusion data + * but missing from `PokemonSpecies` are set as follows + * - `pokeball` and `nickname` are both inherited from this pokemon + * - `shiny` will always be set if this pokemon OR its fusion is shiny + * - `variant` will always be 0 + * - Fields related to fusion will be set to `undefined` or `0` as appropriate + * - The gender is set to be the same as this pokemon, if it is compatible with the provided pokemon. + * - If the provided pokemon can only ever exist as one gender, it is always that gender + * - If this pokemon is genderless but the provided pokemon isn't, then a gender roll is done based on this + * pokemon's ID */ - setIllusion(pokemon: Pokemon): boolean { - if (this.summonData.illusion) { - this.breakIllusion(); - } - if (this.hasTrainer()) { + setIllusion(pokemon: Pokemon | PokemonSpecies): boolean { + this.breakIllusion(); + if (pokemon instanceof Pokemon) { const speciesId = pokemon.species.speciesId; this.summonData.illusion = { - basePokemon: { - name: this.name, - nickname: this.nickname, - shiny: this.shiny, - variant: this.variant, - fusionShiny: this.fusionShiny, - fusionVariant: this.fusionVariant, - }, + name: pokemon.name, + nickname: pokemon.nickname, + shiny: pokemon.shiny, + variant: pokemon.variant, + fusionShiny: pokemon.fusionShiny, + fusionVariant: pokemon.fusionVariant, species: speciesId, formIndex: pokemon.formIndex, gender: pokemon.gender, @@ -636,54 +646,61 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { fusionGender: pokemon.fusionGender, }; - this.name = pokemon.name; - this.nickname = pokemon.nickname; - this.shiny = pokemon.shiny; - this.variant = pokemon.variant; - this.fusionVariant = pokemon.fusionVariant; - this.fusionShiny = pokemon.fusionShiny; - if (this.shiny) { + if (pokemon.shiny || pokemon.fusionShiny) { this.initShinySparkle(); } - this.loadAssets(false, true).then(() => this.playAnim()); - this.updateInfo(); } else { - const randomIllusion: PokemonSpecies = globalScene.arena.randomSpecies( - globalScene.currentBattle.waveIndex, - this.level, - ); - + // Correct the gender in case the illusioned species has a gender incompatible with this pokemon + let gender = this.gender; + switch (pokemon.malePercent) { + case null: + gender = Gender.GENDERLESS; + break; + case 0: + gender = Gender.FEMALE; + break; + case 100: + gender = Gender.MALE; + break; + default: + gender = (this.id % 256) * 0.390625 < pokemon.malePercent ? Gender.MALE : Gender.FEMALE; + } + /* + TODO: Allow setting `variant` to something other than 0, which would require first loading the + assets for the provided species, as its entry would otherwise not + be guaranteed to exist in the `variantData` map. But this would prevent `summonData` from being populated + until the assets are loaded, which would cause issues as this method cannot be easily promisified. + */ this.summonData.illusion = { - basePokemon: { - name: this.name, - nickname: this.nickname, - shiny: this.shiny, - variant: this.variant, - fusionShiny: this.fusionShiny, - fusionVariant: this.fusionVariant, - }, - species: randomIllusion.speciesId, - formIndex: randomIllusion.formIndex, - gender: this.gender, + fusionShiny: false, + fusionVariant: 0, + shiny: this.shiny || this.fusionShiny, + variant: 0, + nickname: this.nickname, + name: pokemon.name, + species: pokemon.speciesId, + formIndex: pokemon.formIndex, + gender, pokeball: this.pokeball, }; - this.name = randomIllusion.name; - this.loadAssets(false, true).then(() => this.playAnim()); + if (this.shiny || this.fusionShiny) { + this.initShinySparkle(); + } } + this.loadAssets(false, true).then(() => this.playAnim()); + this.updateInfo(); return true; } + /** + * Break the illusion of this pokemon, if it has an active illusion. + * @returns Whether an illusion was broken. + */ breakIllusion(): boolean { if (!this.summonData.illusion) { return false; } - this.name = this.summonData.illusion.basePokemon.name; - this.nickname = this.summonData.illusion.basePokemon.nickname; - this.shiny = this.summonData.illusion.basePokemon.shiny; - this.variant = this.summonData.illusion.basePokemon.variant; - this.fusionVariant = this.summonData.illusion.basePokemon.fusionVariant; - this.fusionShiny = this.summonData.illusion.basePokemon.fusionShiny; this.summonData.illusion = null; if (this.isOnField()) { globalScene.playSound("PRSFX- Transform"); @@ -708,7 +725,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Load all assets needed for this Pokemon's use in battle - * @param ignoreOverride - Whether to ignore overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `true` + * @param ignoreOverride - Whether to ignore overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `true` * @param useIllusion - Whether to consider this pokemon's active illusion; default `false` * @returns A promise that resolves once all the corresponding assets have been loaded. */ @@ -718,8 +735,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { // Assets for moves loadPromises.push(loadMoveAnimations(this.getMoveset().map(m => m.getMove().id))); + /** alias for `this.summonData.illusion`; bangs on this are safe when guarded with `useIllusion` being true */ + const illusion = this.summonData.illusion; + useIllusion = useIllusion && !!illusion; + // Load the assets for the species form - const formIndex = useIllusion && this.summonData.illusion ? this.summonData.illusion.formIndex : this.formIndex; + const formIndex = useIllusion ? illusion!.formIndex : this.formIndex; loadPromises.push( this.getSpeciesForm(false, useIllusion).loadAssets( this.getGender(useIllusion) === Gender.FEMALE, @@ -736,16 +757,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { ); } if (this.getFusionSpeciesForm()) { - const fusionFormIndex = - useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionFormIndex : this.fusionFormIndex; - const fusionShiny = - !useIllusion && this.summonData.illusion?.basePokemon - ? this.summonData.illusion.basePokemon.fusionShiny - : this.fusionShiny; - const fusionVariant = - !useIllusion && this.summonData.illusion?.basePokemon - ? this.summonData.illusion.basePokemon.fusionVariant - : this.fusionVariant; + const { fusionFormIndex, fusionShiny, fusionVariant } = useIllusion ? illusion! : this; loadPromises.push( this.getFusionSpeciesForm(false, useIllusion).loadAssets( this.getFusionGender(false, useIllusion) === Gender.FEMALE, @@ -933,8 +945,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { return this.getSpeciesForm(ignoreOverride, false).getSpriteKey( this.getGender(ignoreOverride) === Gender.FEMALE, this.formIndex, - this.summonData.illusion?.basePokemon.shiny ?? this.shiny, - this.summonData.illusion?.basePokemon.variant ?? this.variant, + this.isShiny(false), + this.getVariant(false), ); } @@ -977,11 +989,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } getIconAtlasKey(ignoreOverride = false, useIllusion = true): string { - // TODO: confirm the correct behavior here (is it intentional that the check fails if `illusion.formIndex` is `0`?) - const formIndex = - useIllusion && this.summonData.illusion?.formIndex ? this.summonData.illusion.formIndex : this.formIndex; - const variant = - !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.variant : this.variant; + const illusion = this.summonData.illusion; + const { formIndex, variant } = useIllusion && illusion ? illusion : this; return this.getSpeciesForm(ignoreOverride, useIllusion).getIconAtlasKey( formIndex, this.isBaseShiny(useIllusion), @@ -990,15 +999,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } getFusionIconAtlasKey(ignoreOverride = false, useIllusion = true): string { - // TODO: confirm the correct behavior here (is it intentional that the check fails if `illusion.fusionFormIndex` is `0`?) - const fusionFormIndex = - useIllusion && this.summonData.illusion?.fusionFormIndex - ? this.summonData.illusion.fusionFormIndex - : this.fusionFormIndex; - const fusionVariant = - !useIllusion && this.summonData.illusion - ? this.summonData.illusion.basePokemon.fusionVariant - : this.fusionVariant; + const illusion = this.summonData.illusion; + const { fusionFormIndex, fusionVariant } = useIllusion && illusion ? illusion : this; return this.getFusionSpeciesForm(ignoreOverride, useIllusion).getIconAtlasKey( fusionFormIndex, this.isFusionShiny(), @@ -1006,11 +1008,9 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { ); } - getIconId(ignoreOverride?: boolean, useIllusion = true): string { - const formIndex = - useIllusion && this.summonData.illusion?.formIndex ? this.summonData.illusion?.formIndex : this.formIndex; - const variant = - !useIllusion && !!this.summonData.illusion ? this.summonData.illusion?.basePokemon.variant : this.variant; + getIconId(ignoreOverride?: boolean, useIllusion = false): string { + const illusion = this.summonData.illusion; + const { formIndex, variant } = useIllusion && illusion ? illusion : this; return this.getSpeciesForm(ignoreOverride, useIllusion).getIconId( this.getGender(ignoreOverride, useIllusion) === Gender.FEMALE, formIndex, @@ -1020,14 +1020,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } getFusionIconId(ignoreOverride?: boolean, useIllusion = true): string { - const fusionFormIndex = - useIllusion && this.summonData.illusion?.fusionFormIndex - ? this.summonData.illusion?.fusionFormIndex - : this.fusionFormIndex; - const fusionVariant = - !useIllusion && !!this.summonData.illusion - ? this.summonData.illusion?.basePokemon.fusionVariant - : this.fusionVariant; + const illusion = this.summonData.illusion; + const { fusionFormIndex, fusionVariant } = useIllusion && illusion ? illusion : this; return this.getFusionSpeciesForm(ignoreOverride, useIllusion).getIconId( this.getFusionGender(ignoreOverride, useIllusion) === Gender.FEMALE, fusionFormIndex, @@ -1038,7 +1032,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Return this Pokemon's {@linkcode PokemonSpeciesForm | SpeciesForm}. - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * and overrides `useIllusion`. * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `false`. * @returns This Pokemon's {@linkcode PokemonSpeciesForm}. @@ -1094,7 +1088,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Return the {@linkcode PokemonSpeciesForm | SpeciesForm} of this Pokemon's fusion counterpart. - * @param ignoreOverride - Whether to ignore species overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore species overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @param useIllusion - Whether to consider the species of this Pokemon's illusion; default `false` * @returns The {@linkcode PokemonSpeciesForm} of this Pokemon's fusion counterpart. */ @@ -1395,8 +1389,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { const critBoostTag = source.getTag(CritBoostTag); if (critBoostTag) { // Dragon cheer only gives +1 crit stage to non-dragon types - critStage.value += - critBoostTag instanceof DragonCheerTag && !critBoostTag.typesOnAdd.includes(PokemonType.DRAGON) ? 1 : 2; + critStage.value += critBoostTag.critStages; } console.log(`crit stage: +${critStage.value}`); @@ -1666,7 +1659,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Return this Pokemon's {@linkcode Gender}. - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` * @returns the {@linkcode Gender} of this {@linkcode Pokemon}. */ @@ -1682,7 +1675,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Return this Pokemon's fusion's {@linkcode Gender}. - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` * @returns The {@linkcode Gender} of this {@linkcode Pokemon}'s fusion. */ @@ -1702,29 +1695,18 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @returns Whether this Pokemon is shiny */ isShiny(useIllusion = false): boolean { - if (!useIllusion && this.summonData.illusion) { - return ( - this.summonData.illusion.basePokemon?.shiny || - (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) || - false - ); - } - - return this.shiny || (this.isFusion(useIllusion) && this.fusionShiny); + return this.isBaseShiny(useIllusion) || this.isFusionShiny(useIllusion); } isBaseShiny(useIllusion = false) { - if (!useIllusion && this.summonData.illusion) { - return !!this.summonData.illusion.basePokemon?.shiny; - } - return this.shiny; + return useIllusion ? (this.summonData.illusion?.shiny ?? this.shiny) : this.shiny; } isFusionShiny(useIllusion = false) { - if (!useIllusion && this.summonData.illusion) { - return !!this.summonData.illusion.basePokemon?.fusionShiny; + if (!this.isFusion(useIllusion)) { + return false; } - return this.isFusion(useIllusion) && this.fusionShiny; + return useIllusion ? (this.summonData.illusion?.fusionShiny ?? this.fusionShiny) : this.fusionShiny; } /** @@ -1733,39 +1715,48 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @returns Whether this pokemon's base and fusion counterparts are both shiny. */ isDoubleShiny(useIllusion = false): boolean { - if (!useIllusion && this.summonData.illusion?.basePokemon) { - return ( - this.isFusion(false) && - this.summonData.illusion.basePokemon.shiny && - this.summonData.illusion.basePokemon.fusionShiny - ); - } - - return this.isFusion(useIllusion) && this.shiny && this.fusionShiny; + return this.isFusion(useIllusion) && this.isBaseShiny(useIllusion) && this.isFusionShiny(useIllusion); } /** * Return this Pokemon's {@linkcode Variant | shiny variant}. + * If a fusion, returns the maximum of the two variants. * Only meaningful if this pokemon is actually shiny. * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` * @returns The shiny variant of this Pokemon. */ getVariant(useIllusion = false): Variant { - if (!useIllusion && this.summonData.illusion) { - return !this.isFusion(false) - ? this.summonData.illusion.basePokemon!.variant - : (Math.max(this.variant, this.fusionVariant) as Variant); + const illusion = this.summonData.illusion; + const baseVariant = useIllusion ? (illusion?.variant ?? this.variant) : this.variant; + if (!this.isFusion(useIllusion)) { + return baseVariant; } - - return !this.isFusion(true) ? this.variant : (Math.max(this.variant, this.fusionVariant) as Variant); + const fusionVariant = useIllusion ? (illusion?.fusionVariant ?? this.fusionVariant) : this.fusionVariant; + return Math.max(baseVariant, fusionVariant) as Variant; } - // TODO: Clarify how this differs from `getVariant` - getBaseVariant(doubleShiny: boolean): Variant { - if (doubleShiny) { - return this.summonData.illusion?.basePokemon?.variant ?? this.variant; + /** + * Return the base pokemon's variant. Equivalent to {@linkcode getVariant} if this pokemon is not a fusion. + * @returns The shiny variant of this Pokemon's base species. + */ + getBaseVariant(useIllusion = false): Variant { + const illusion = this.summonData.illusion; + return useIllusion && illusion ? (illusion.variant ?? this.variant) : this.variant; + } + + /** + * Return the fused pokemon's variant. + * + * @remarks + * Always returns `0` if the pokemon is not a fusion. + * @returns The shiny variant of this pokemon's fusion species. + */ + getFusionVariant(useIllusion = false): Variant { + if (!this.isFusion(useIllusion)) { + return 0; } - return this.getVariant(); + const illusion = this.summonData.illusion; + return illusion ? (illusion.fusionVariant ?? this.fusionVariant) : this.fusionVariant; } /** @@ -1782,7 +1773,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @returns Whether this Pokemon is currently fused with another species. */ isFusion(useIllusion = false): boolean { - return useIllusion && this.summonData.illusion ? !!this.summonData.illusion.fusionSpecies : !!this.fusionSpecies; + return useIllusion ? !!this.summonData.illusion?.fusionSpecies : !!this.fusionSpecies; } /** @@ -1792,9 +1783,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @see {@linkcode getNameToRender} - gets this Pokemon's display name. */ getName(useIllusion = false): string { - return !useIllusion && this.summonData.illusion?.basePokemon - ? this.summonData.illusion.basePokemon.name - : this.name; + return useIllusion ? (this.summonData.illusion?.name ?? this.name) : this.name; } /** @@ -1828,12 +1817,10 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Return all the {@linkcode PokemonMove}s that make up this Pokemon's moveset. * Takes into account player/enemy moveset overrides (which will also override PP count). - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @returns An array of {@linkcode PokemonMove}, as described above. */ getMoveset(ignoreOverride = false): PokemonMove[] { - const ret = !ignoreOverride && this.summonData.moveset ? this.summonData.moveset : this.moveset; - // Overrides moveset based on arrays specified in overrides.ts let overrideArray: MoveId | Array = this.isPlayer() ? Overrides.MOVESET_OVERRIDE @@ -1849,7 +1836,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { }); } - return ret; + return !ignoreOverride && this.summonData.moveset ? this.summonData.moveset : this.moveset; } /** @@ -1896,7 +1883,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * Evaluate and return this Pokemon's typing. * @param includeTeraType - Whether to use this Pokemon's tera type if Terastallized; default `false` * @param forDefend - Whether this Pokemon is currently receiving an attack; default `false` - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `false` * @returns An array of {@linkcode PokemonType}s corresponding to this Pokemon's typing (real or percieved). */ @@ -2019,7 +2006,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * @param type - The {@linkcode PokemonType} to check * @param includeTeraType - Whether to use this Pokemon's tera type if Terastallized; default `true` * @param forDefend - Whether this Pokemon is currently receiving an attack; default `false` - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @returns Whether this Pokemon is of the specified type. */ public isOfType(type: PokemonType, includeTeraType = true, forDefend = false, ignoreOverride = false): boolean { @@ -2032,7 +2019,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * Should rarely be called directly in favor of {@linkcode hasAbility} or {@linkcode hasAbilityWithAttr}, * both of which check both ability slots and account for suppression. * @see {@linkcode hasAbility} and {@linkcode hasAbilityWithAttr} are the intended ways to check abilities in most cases - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @returns The non-passive {@linkcode Ability} of this Pokemon. */ public getAbility(ignoreOverride = false): Ability { @@ -2214,7 +2201,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * Accounts for all the various effects which can disable or modify abilities. * @param ability - The {@linkcode Abilities | Ability} to check for * @param canApply - Whether to check if the ability is currently active; default `true` - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @returns Whether this {@linkcode Pokemon} has the given ability */ public hasAbility(ability: AbilityId, canApply = true, ignoreOverride = false): boolean { @@ -2229,7 +2216,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * Accounts for all the various effects which can disable or modify abilities. * @param attrType - The {@linkcode AbAttr | attribute} to check for * @param canApply - Whether to check if the ability is currently active; default `true` - * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode MoveId.TRANSFORM | Transform}; default `false` * @returns Whether this Pokemon has an ability with the given {@linkcode AbAttr}. */ public hasAbilityWithAttr(attrType: AbAttrString, canApply = true, ignoreOverride = false): boolean { @@ -4479,7 +4466,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * Return the most recently executed {@linkcode TurnMove} this {@linkcode Pokemon} has used that is: * - Not {@linkcode MoveId.NONE} * - Non-virtual ({@linkcode MoveUseMode | useMode} < {@linkcode MoveUseMode.INDIRECT}) - * @param ignoreStruggle - Whether to additionally ignore {@linkcode Moves.STRUGGLE}; default `false` + * @param ignoreStruggle - Whether to additionally ignore {@linkcode MoveId.STRUGGLE}; default `false` * @param ignoreFollowUp - Whether to ignore moves with a use type of {@linkcode MoveUseMode.FOLLOW_UP} * (e.g. ones called by Copycat/Mirror Move); default `true`. * @returns The last move this Pokemon has used satisfying the aforementioned conditions, @@ -5107,6 +5094,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { */ resetWaveData(): void { this.waveData = new PokemonWaveData(); + this.tempSummonData.waveTurnCount = 1; } resetTera(): void { @@ -5676,7 +5664,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } export class PlayerPokemon extends Pokemon { - protected battleInfo: PlayerBattleInfo; + protected declare battleInfo: PlayerBattleInfo; public compatibleTms: MoveId[]; constructor( @@ -6205,7 +6193,7 @@ export class PlayerPokemon extends Pokemon { } export class EnemyPokemon extends Pokemon { - protected battleInfo: EnemyBattleInfo; + protected declare battleInfo: EnemyBattleInfo; public trainerSlot: TrainerSlot; public aiType: AiType; public bossSegments: number; diff --git a/src/field/trainer.ts b/src/field/trainer.ts index 7186cc4e928..584c9310932 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -23,13 +23,13 @@ import { } from "#trainers/trainer-party-template"; import { randSeedInt, randSeedItem, randSeedWeightedItem } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { toSnakeCase } from "#utils/strings"; import i18next from "i18next"; export class Trainer extends Phaser.GameObjects.Container { public config: TrainerConfig; public variant: TrainerVariant; public partyTemplateIndex: number; - public name: string; public partnerName: string; public nameKey: string; public partnerNameKey: string | undefined; @@ -170,7 +170,7 @@ export class Trainer extends Phaser.GameObjects.Container { const evilTeamTitles = ["grunt"]; if (this.name === "" && evilTeamTitles.some(t => name.toLocaleLowerCase().includes(t))) { // This is a evil team grunt so we localize it by only using the "name" as the title - title = i18next.t(`trainerClasses:${name.toLowerCase().replace(/\s/g, "_")}`); + title = i18next.t(`trainerClasses:${toSnakeCase(name)}`); console.log("Localized grunt name: " + title); // Since grunts are not named we can just return the title return title; @@ -187,7 +187,7 @@ export class Trainer extends Phaser.GameObjects.Container { } // Get the localized trainer class name from the i18n file and set it as the title. // This is used for trainer class names, not titles like "Elite Four, Champion, etc." - title = i18next.t(`trainerClasses:${name.toLowerCase().replace(/\s/g, "_")}`); + title = i18next.t(`trainerClasses:${toSnakeCase(name)}`); } // If no specific trainer slot is set. @@ -208,7 +208,7 @@ export class Trainer extends Phaser.GameObjects.Container { if (this.config.titleDouble && this.variant === TrainerVariant.DOUBLE && !this.config.doubleOnly) { title = this.config.titleDouble; - name = i18next.t(`trainerNames:${this.config.nameDouble.toLowerCase().replace(/\s/g, "_")}`); + name = i18next.t(`trainerNames:${toSnakeCase(this.config.nameDouble)}`); } console.log(title ? `${title} ${name}` : name); diff --git a/src/init/init.ts b/src/init/init.ts new file mode 100644 index 00000000000..ba9738e2be8 --- /dev/null +++ b/src/init/init.ts @@ -0,0 +1,35 @@ +import { initAbilities } from "#abilities/ability"; +import { initBiomes } from "#balance/biomes"; +import { initEggMoves } from "#balance/egg-moves"; +import { initPokemonPrevolutions, initPokemonStarters } from "#balance/pokemon-evolutions"; +import { initSpecies } from "#balance/pokemon-species"; +import { initChallenges } from "#data/challenge"; +import { initTrainerTypeDialogue } from "#data/dialogue"; +import { initPokemonForms } from "#data/pokemon-forms"; +import { initModifierPools } from "#modifiers/init-modifier-pools"; +import { initModifierTypes } from "#modifiers/modifier-type"; +import { initMoves } from "#moves/move"; +import { initMysteryEncounters } from "#mystery-encounters/mystery-encounters"; +import { initAchievements } from "#system/achv"; +import { initVouchers } from "#system/voucher"; +import { initStatsKeys } from "#ui/game-stats-ui-handler"; + +/** Initialize the game. */ +export function initializeGame() { + initModifierTypes(); + initModifierPools(); + initAchievements(); + initVouchers(); + initStatsKeys(); + initPokemonPrevolutions(); + initPokemonStarters(); + initBiomes(); + initEggMoves(); + initPokemonForms(); + initTrainerTypeDialogue(); + initSpecies(); + initMoves(); + initAbilities(); + initChallenges(); + initMysteryEncounters(); +} diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts index 1607e4ee74f..03d2278f26c 100644 --- a/src/inputs-controller.ts +++ b/src/inputs-controller.ts @@ -3,13 +3,13 @@ import { TouchControl } from "#app/touch-controls"; import { Button } from "#enums/buttons"; import { Device } from "#enums/devices"; import { UiMode } from "#enums/ui-mode"; -import cfg_keyboard_qwerty from "#inputs/cfg_keyboard_qwerty"; -import { assign, getButtonWithKeycode, getIconForLatestInput, swap } from "#inputs/configHandler"; -import pad_dualshock from "#inputs/pad_dualshock"; -import pad_generic from "#inputs/pad_generic"; -import pad_procon from "#inputs/pad_procon"; -import pad_unlicensedSNES from "#inputs/pad_unlicensedSNES"; -import pad_xbox360 from "#inputs/pad_xbox360"; +import cfg_keyboard_qwerty from "#inputs/cfg-keyboard-qwerty"; +import { assign, getButtonWithKeycode, getIconForLatestInput, swap } from "#inputs/config-handler"; +import pad_dualshock from "#inputs/pad-dualshock"; +import pad_generic from "#inputs/pad-generic"; +import pad_procon from "#inputs/pad-procon"; +import pad_unlicensedSNES from "#inputs/pad-unlicensed-snes"; +import pad_xbox360 from "#inputs/pad-xbox360"; import type { SettingGamepad } from "#system/settings-gamepad"; import type { SettingKeyboard } from "#system/settings-keyboard"; import { MoveTouchControlsHandler } from "#ui/move-touch-controls-handler"; diff --git a/src/loading-scene.ts b/src/loading-scene.ts index eb6883e0c68..c5b0263e785 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -1,29 +1,16 @@ -import { initAbilities } from "#abilities/ability"; import { timedEventManager } from "#app/global-event-manager"; +import { initializeGame } from "#app/init/init"; import { SceneBase } from "#app/scene-base"; import { isMobile } from "#app/touch-controls"; -import { initBiomes } from "#balance/biomes"; -import { initEggMoves } from "#balance/egg-moves"; -import { initPokemonPrevolutions, initPokemonStarters } from "#balance/pokemon-evolutions"; -import { initChallenges } from "#data/challenge"; -import { initTrainerTypeDialogue } from "#data/dialogue"; -import { initPokemonForms } from "#data/pokemon-forms"; -import { initSpecies } from "#data/pokemon-species"; import { BiomeId } from "#enums/biome-id"; import { GachaType } from "#enums/gacha-types"; import { getBiomeHasProps } from "#field/arena"; -import { initModifierPools } from "#modifiers/init-modifier-pools"; -import { initModifierTypes } from "#modifiers/modifier-type"; -import { initMoves } from "#moves/move"; -import { initMysteryEncounters } from "#mystery-encounters/mystery-encounters"; import { CacheBustedLoaderPlugin } from "#plugins/cache-busted-loader-plugin"; -import { initAchievements } from "#system/achv"; -import { initVouchers } from "#system/voucher"; -import { initStatsKeys } from "#ui/game-stats-ui-handler"; import { getWindowVariantSuffix, WindowVariant } from "#ui/ui-theme"; import { hasAllLocalizedSprites, localPing } from "#utils/common"; import { getEnumValues } from "#utils/enums"; import i18next from "i18next"; +import type { GameObjects } from "phaser"; export class LoadingScene extends SceneBase { public static readonly KEY = "loading"; @@ -132,6 +119,7 @@ export class LoadingScene extends SceneBase { this.loadImage("party_bg", "ui"); this.loadImage("party_bg_double", "ui"); + this.loadImage("party_bg_double_manage", "ui"); this.loadAtlas("party_slot_main", "ui"); this.loadAtlas("party_slot", "ui"); this.loadImage("party_slot_overlay_lv", "ui"); @@ -139,6 +127,8 @@ export class LoadingScene extends SceneBase { this.loadAtlas("party_slot_hp_overlay", "ui"); this.loadAtlas("party_pb", "ui"); this.loadAtlas("party_cancel", "ui"); + this.loadAtlas("party_discard", "ui"); + this.loadAtlas("party_transfer", "ui"); this.loadImage("summary_bg", "ui"); this.loadImage("summary_overlay_shiny", "ui"); @@ -366,30 +356,12 @@ export class LoadingScene extends SceneBase { this.loadLoadingScreen(); - initModifierTypes(); - initModifierPools(); - - initAchievements(); - initVouchers(); - initStatsKeys(); - initPokemonPrevolutions(); - initPokemonStarters(); - initBiomes(); - initEggMoves(); - initPokemonForms(); - initTrainerTypeDialogue(); - initSpecies(); - initMoves(); - initAbilities(); - initChallenges(); - initMysteryEncounters(); + initializeGame(); } loadLoadingScreen() { const mobile = isMobile(); - const loadingGraphics: any[] = []; - const bg = this.add.image(0, 0, ""); bg.setOrigin(0, 0); bg.setScale(6); @@ -460,6 +432,7 @@ export class LoadingScene extends SceneBase { }); disclaimerDescriptionText.setOrigin(0.5, 0.5); + const loadingGraphics: (GameObjects.Image | GameObjects.Graphics | GameObjects.Text)[] = []; loadingGraphics.push( bg, graphics, diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index f8c35b3e8f9..b31bee7fc69 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -23,6 +23,7 @@ import type { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { BATTLE_STATS, type PermanentStat, Stat, TEMP_BATTLE_STATS, type TempBattleStat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; +import { TextStyle } from "#enums/text-style"; import type { PlayerPokemon, Pokemon } from "#field/pokemon"; import type { DoubleBattleChanceBoosterModifierType, @@ -40,7 +41,7 @@ import type { } from "#modifiers/modifier-type"; import type { VoucherType } from "#system/voucher"; import type { ModifierInstanceMap, ModifierString } from "#types/modifier-types"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, randSeedFloat, toDmgValue } from "#utils/common"; import { getModifierType } from "#utils/modifier-utils"; import i18next from "i18next"; @@ -461,7 +462,7 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { * @see {@linkcode apply} */ export class DoubleBattleChanceBoosterModifier extends LapsingPersistentModifier { - public override type: DoubleBattleChanceBoosterModifierType; + public declare type: DoubleBattleChanceBoosterModifierType; match(modifier: Modifier): boolean { return modifier instanceof DoubleBattleChanceBoosterModifier && modifier.getMaxBattles() === this.getMaxBattles(); @@ -935,7 +936,7 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { * Currently used by Shuckle Juice item */ export class PokemonBaseStatTotalModifier extends PokemonHeldItemModifier { - public override type: PokemonBaseStatTotalModifierType; + public declare type: PokemonBaseStatTotalModifierType; public isTransferable = false; public statModifier: 10 | -15; @@ -2073,7 +2074,7 @@ export abstract class ConsumablePokemonModifier extends ConsumableModifier { } export class TerrastalizeModifier extends ConsumablePokemonModifier { - public override type: TerastallizeModifierType; + public declare type: TerastallizeModifierType; public teraType: PokemonType; constructor(type: TerastallizeModifierType, pokemonId: number, teraType: PokemonType) { @@ -2317,7 +2318,7 @@ export class PokemonLevelIncrementModifier extends ConsumablePokemonModifier { } export class TmModifier extends ConsumablePokemonModifier { - public override type: TmModifierType; + public declare type: TmModifierType; /** * Applies {@linkcode TmModifier} @@ -2364,7 +2365,7 @@ export class RememberMoveModifier extends ConsumablePokemonModifier { } export class EvolutionItemModifier extends ConsumablePokemonModifier { - public override type: EvolutionItemModifierType; + public declare type: EvolutionItemModifierType; /** * Applies {@linkcode EvolutionItemModifier} * @param playerPokemon The {@linkcode PlayerPokemon} that should evolve via item @@ -2529,7 +2530,7 @@ export class ExpBoosterModifier extends PersistentModifier { } export class PokemonExpBoosterModifier extends PokemonHeldItemModifier { - public override type: PokemonExpBoosterModifierType; + public declare type: PokemonExpBoosterModifierType; private boostMultiplier: number; @@ -2626,7 +2627,7 @@ export class ExpBalanceModifier extends PersistentModifier { } export class PokemonFriendshipBoosterModifier extends PokemonHeldItemModifier { - public override type: PokemonFriendshipBoosterModifierType; + public declare type: PokemonFriendshipBoosterModifierType; matchType(modifier: Modifier): boolean { return modifier instanceof PokemonFriendshipBoosterModifier; @@ -2683,7 +2684,7 @@ export class PokemonNatureWeightModifier extends PokemonHeldItemModifier { } export class PokemonMoveAccuracyBoosterModifier extends PokemonHeldItemModifier { - public override type: PokemonMoveAccuracyBoosterModifierType; + public declare type: PokemonMoveAccuracyBoosterModifierType; private accuracyAmount: number; constructor(type: PokemonMoveAccuracyBoosterModifierType, pokemonId: number, accuracy: number, stackCount?: number) { @@ -2735,7 +2736,7 @@ export class PokemonMoveAccuracyBoosterModifier extends PokemonHeldItemModifier } export class PokemonMultiHitModifier extends PokemonHeldItemModifier { - public override type: PokemonMultiHitModifierType; + public declare type: PokemonMultiHitModifierType; matchType(modifier: Modifier): boolean { return modifier instanceof PokemonMultiHitModifier; @@ -2816,7 +2817,7 @@ export class PokemonMultiHitModifier extends PokemonHeldItemModifier { } export class PokemonFormChangeItemModifier extends PokemonHeldItemModifier { - public override type: FormChangeItemModifierType; + public declare type: FormChangeItemModifierType; public formChangeItem: FormChangeItem; public active: boolean; public isTransferable = false; diff --git a/src/phase-manager.ts b/src/phase-manager.ts index 73ea373904f..aa01a0ffc10 100644 --- a/src/phase-manager.ts +++ b/src/phase-manager.ts @@ -9,6 +9,7 @@ import { AttemptCapturePhase } from "#phases/attempt-capture-phase"; import { AttemptRunPhase } from "#phases/attempt-run-phase"; import { BattleEndPhase } from "#phases/battle-end-phase"; import { BerryPhase } from "#phases/berry-phase"; +import { CheckInterludePhase } from "#phases/check-interlude-phase"; import { CheckStatusEffectPhase } from "#phases/check-status-effect-phase"; import { CheckSwitchPhase } from "#phases/check-switch-phase"; import { CommandPhase } from "#phases/command-phase"; @@ -60,6 +61,7 @@ import { PartyHealPhase } from "#phases/party-heal-phase"; import { PokemonAnimPhase } from "#phases/pokemon-anim-phase"; import { PokemonHealPhase } from "#phases/pokemon-heal-phase"; import { PokemonTransformPhase } from "#phases/pokemon-transform-phase"; +import { PositionalTagPhase } from "#phases/positional-tag-phase"; import { PostGameOverPhase } from "#phases/post-game-over-phase"; import { PostSummonPhase } from "#phases/post-summon-phase"; import { PostTurnStatusEffectPhase } from "#phases/post-turn-status-effect-phase"; @@ -121,6 +123,7 @@ const PHASES = Object.freeze({ AttemptRunPhase, BattleEndPhase, BerryPhase, + CheckInterludePhase, CheckStatusEffectPhase, CheckSwitchPhase, CommandPhase, @@ -170,6 +173,7 @@ const PHASES = Object.freeze({ PokemonAnimPhase, PokemonHealPhase, PokemonTransformPhase, + PositionalTagPhase, PostGameOverPhase, PostSummonPhase, PostTurnStatusEffectPhase, @@ -240,6 +244,21 @@ export class PhaseManager { this.dynamicPhaseTypes = [PostSummonPhase]; } + /** + * Clear all previously set phases, then add a new {@linkcode TitlePhase} to transition to the title screen. + * @param addLogin - Whether to add a new {@linkcode LoginPhase} before the {@linkcode TitlePhase} + * (but reset everything else). + * Default `false` + */ + public toTitleScreen(addLogin = false): void { + this.clearAllPhases(); + + if (addLogin) { + this.unshiftNew("LoginPhase"); + } + this.unshiftNew("TitlePhase"); + } + /* Phase Functions */ getCurrentPhase(): Phase | null { return this.currentPhase; @@ -303,7 +322,6 @@ export class PhaseManager { queue.splice(0, queue.length); } this.dynamicPhaseQueues.forEach(queue => queue.clear()); - this.currentPhase = null; this.standbyPhase = null; this.clearPhaseQueueSplice(); } @@ -665,4 +683,15 @@ export class PhaseManager { ): void { this.startDynamicPhase(this.create(phase, ...args)); } + + /** Prevents end of turn effects from triggering when transitioning to a new biome on a X0 wave */ + public onInterlude(): void { + const phasesToRemove = ["WeatherEffectPhase", "BerryPhase", "CheckStatusEffectPhase"]; + this.phaseQueue = this.phaseQueue.filter(p => !phasesToRemove.includes(p.phaseName)); + + const turnEndPhase = this.findPhase(p => p.phaseName === "TurnEndPhase"); + if (turnEndPhase) { + turnEndPhase.upcomingInterlude = true; + } + } } diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index 604d4fd8384..fcddd23dd20 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -279,6 +279,7 @@ export class AttemptCapturePhase extends PokemonPhase { globalScene.updateModifiers(true); removePokemon(); if (newPokemon) { + newPokemon.leaveField(true, true, false); newPokemon.loadAssets().then(end); } else { end(); diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index 8d199915385..2dbb74c4a85 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -58,12 +58,6 @@ export class BattleEndPhase extends BattlePhase { globalScene.phaseManager.unshiftNew("GameOverPhase", true); } - for (const pokemon of globalScene.getField()) { - if (pokemon) { - pokemon.tempSummonData.waveTurnCount = 1; - } - } - for (const pokemon of globalScene.getPokemonAllowedInBattle()) { applyAbAttrs("PostBattleAbAttr", { pokemon, victory: this.isVictory }); } diff --git a/src/phases/check-interlude-phase.ts b/src/phases/check-interlude-phase.ts new file mode 100644 index 00000000000..1589f74f058 --- /dev/null +++ b/src/phases/check-interlude-phase.ts @@ -0,0 +1,18 @@ +import { globalScene } from "#app/global-scene"; +import { Phase } from "#app/phase"; + +export class CheckInterludePhase extends Phase { + public override readonly phaseName = "CheckInterludePhase"; + + public override start(): void { + super.start(); + const { phaseManager } = globalScene; + const { waveIndex } = globalScene.currentBattle; + + if (waveIndex % 10 === 0 && globalScene.getEnemyParty().every(p => p.isFainted())) { + phaseManager.onInterlude(); + } + + this.end(); + } +} diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index 14674037fbe..016d4ff5d3b 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -2,7 +2,6 @@ import type { TurnCommand } from "#app/battle"; import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import { speciesStarterCosts } from "#balance/starters"; -import type { EncoreTag } from "#data/battler-tags"; import { TrappedTag } from "#data/battler-tags"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagSide } from "#enums/arena-tag-side"; @@ -22,59 +21,77 @@ import type { MoveTargetSet } from "#moves/move"; import { getMoveTargets } from "#moves/move-utils"; import { FieldPhase } from "#phases/field-phase"; import type { TurnMove } from "#types/turn-move"; -import { isNullOrUndefined } from "#utils/common"; import i18next from "i18next"; export class CommandPhase extends FieldPhase { public readonly phaseName = "CommandPhase"; protected fieldIndex: number; + /** + * Whether the command phase is handling a switch command + */ + private isSwitch = false; + constructor(fieldIndex: number) { super(); this.fieldIndex = fieldIndex; } - start() { - super.start(); - - globalScene.updateGameInfo(); - + /** + * Resets the cursor to the position of {@linkcode Command.FIGHT} if any of the following are true + * - The setting to remember the last action is not enabled + * - This is the first turn of a mystery encounter, trainer battle, or the END biome + * - The cursor is currently on the POKEMON command + */ + private resetCursorIfNeeded(): void { const commandUiHandler = globalScene.ui.handlers[UiMode.COMMAND]; + const { arena, commandCursorMemory, currentBattle } = globalScene; + const { battleType, turn } = currentBattle; + const { biomeType } = arena; // If one of these conditions is true, we always reset the cursor to Command.FIGHT const cursorResetEvent = - globalScene.currentBattle.battleType === BattleType.MYSTERY_ENCOUNTER || - globalScene.currentBattle.battleType === BattleType.TRAINER || - globalScene.arena.biomeType === BiomeId.END; + battleType === BattleType.MYSTERY_ENCOUNTER || battleType === BattleType.TRAINER || biomeType === BiomeId.END; - if (commandUiHandler) { - if ( - (globalScene.currentBattle.turn === 1 && (!globalScene.commandCursorMemory || cursorResetEvent)) || - commandUiHandler.getCursor() === Command.POKEMON - ) { - commandUiHandler.setCursor(Command.FIGHT); - } else { - commandUiHandler.setCursor(commandUiHandler.getCursor()); - } + if (!commandUiHandler) { + return; + } + if ( + (turn === 1 && (!commandCursorMemory || cursorResetEvent)) || + commandUiHandler.getCursor() === Command.POKEMON + ) { + commandUiHandler.setCursor(Command.FIGHT); + } + } + + /** + * Submethod of {@linkcode start} that validates field index logic for nonzero field indices. + * Must only be called if the field index is nonzero. + */ + private handleFieldIndexLogic(): void { + // If we somehow are attempting to check the right pokemon but there's only one pokemon out + // Switch back to the center pokemon. This can happen rarely in double battles with mid turn switching + // TODO: Prevent this from happening in the first place + if (globalScene.getPlayerField().filter(p => p.isActive()).length === 1) { + this.fieldIndex = FieldPosition.CENTER; + return; } - if (this.fieldIndex) { - // If we somehow are attempting to check the right pokemon but there's only one pokemon out - // Switch back to the center pokemon. This can happen rarely in double battles with mid turn switching - if (globalScene.getPlayerField().filter(p => p.isActive()).length === 1) { - this.fieldIndex = FieldPosition.CENTER; - } else { - const allyCommand = globalScene.currentBattle.turnCommands[this.fieldIndex - 1]; - if (allyCommand?.command === Command.BALL || allyCommand?.command === Command.RUN) { - globalScene.currentBattle.turnCommands[this.fieldIndex] = { - command: allyCommand?.command, - skip: true, - }; - } - } + const allyCommand = globalScene.currentBattle.turnCommands[this.fieldIndex - 1]; + if (allyCommand?.command === Command.BALL || allyCommand?.command === Command.RUN) { + globalScene.currentBattle.turnCommands[this.fieldIndex] = { + command: allyCommand?.command, + skip: true, + }; } + } + /** + * Submethod of {@linkcode start} that sets the turn command to skip if this pokemon + * is commanding its ally via {@linkcode AbilityId.COMMANDER}. + */ + private checkCommander(): void { // If the Pokemon has applied Commander's effects to its ally, skip this command if ( globalScene.currentBattle?.double && @@ -86,377 +103,521 @@ export class CommandPhase extends FieldPhase { skip: true, }; } + } - // Checks if the Pokemon is under the effects of Encore. If so, Encore can end early if the encored move has no more PP. - const encoreTag = this.getPokemon().getTag(BattlerTagType.ENCORE) as EncoreTag | undefined; - if (encoreTag) { - this.getPokemon().lapseTag(BattlerTagType.ENCORE); - } - - if (globalScene.currentBattle.turnCommands[this.fieldIndex]?.skip) { - return this.end(); - } - - const playerPokemon = globalScene.getPlayerField()[this.fieldIndex]; - + /** + * Clear out all unusable moves in front of the currently acting pokemon's move queue. + */ + // TODO: Refactor move queue handling to ensure that this method is not necessary. + private clearUnusuableMoves(): void { + const playerPokemon = this.getPokemon(); const moveQueue = playerPokemon.getMoveQueue(); - - while ( - moveQueue.length && - moveQueue[0] && - moveQueue[0].move && - !isVirtual(moveQueue[0].useMode) && - (!playerPokemon.getMoveset().find(m => m.moveId === moveQueue[0].move) || - !playerPokemon - .getMoveset() - [playerPokemon.getMoveset().findIndex(m => m.moveId === moveQueue[0].move)].isUsable( - playerPokemon, - isIgnorePP(moveQueue[0].useMode), - )) - ) { - moveQueue.shift(); + if (moveQueue.length === 0) { + return; } - // TODO: Refactor this. I did a few simple find/replace matches but this is just ABHORRENTLY structured - if (moveQueue.length > 0) { - const queuedMove = moveQueue[0]; - if (!queuedMove.move) { - this.handleCommand(Command.FIGHT, -1, MoveUseMode.NORMAL); - } else { - const moveIndex = playerPokemon.getMoveset().findIndex(m => m.moveId === queuedMove.move); - if ( - (moveIndex > -1 && - playerPokemon.getMoveset()[moveIndex].isUsable(playerPokemon, isIgnorePP(queuedMove.useMode))) || - isVirtual(queuedMove.useMode) - ) { - this.handleCommand(Command.FIGHT, moveIndex, queuedMove.useMode, queuedMove); - } else { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - } - } - } else { + let entriesToDelete = 0; + const moveset = playerPokemon.getMoveset(); + for (const queuedMove of moveQueue) { + const movesetQueuedMove = moveset.find(m => m.moveId === queuedMove.move); if ( - globalScene.currentBattle.isBattleMysteryEncounter() && - globalScene.currentBattle.mysteryEncounter?.skipToFightInput + queuedMove.move !== MoveId.NONE && + !isVirtual(queuedMove.useMode) && + !movesetQueuedMove?.isUsable(playerPokemon, isIgnorePP(queuedMove.useMode)) ) { - globalScene.ui.clearText(); - globalScene.ui.setMode(UiMode.FIGHT, this.fieldIndex); + entriesToDelete++; } else { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + break; } } + if (entriesToDelete) { + moveQueue.splice(0, entriesToDelete); + } } /** - * TODO: Remove `args` and clean this thing up - * Code will need to be copied over from pkty except replacing the `virtual` and `ignorePP` args with a corresponding `MoveUseMode`. + * Attempt to execute the first usable move in this Pokemon's move queue + * @returns Whether a queued move was successfully set to be executed. */ - handleCommand(command: Command, cursor: number, ...args: any[]): boolean { + private tryExecuteQueuedMove(): boolean { + this.clearUnusuableMoves(); const playerPokemon = globalScene.getPlayerField()[this.fieldIndex]; + const moveQueue = playerPokemon.getMoveQueue(); + + if (moveQueue.length === 0) { + return false; + } + + const queuedMove = moveQueue[0]; + if (queuedMove.move === MoveId.NONE) { + this.handleCommand(Command.FIGHT, -1); + return true; + } + const moveIndex = playerPokemon.getMoveset().findIndex(m => m.moveId === queuedMove.move); + if (!isVirtual(queuedMove.useMode) && moveIndex === -1) { + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + } else { + this.handleCommand(Command.FIGHT, moveIndex, queuedMove.useMode, queuedMove); + } + + return true; + } + + public override start(): void { + super.start(); + + globalScene.updateGameInfo(); + this.resetCursorIfNeeded(); + + if (this.fieldIndex) { + this.handleFieldIndexLogic(); + } + + this.checkCommander(); + + const playerPokemon = this.getPokemon(); + + // Note: It is OK to call this if the target is not under the effect of encore; it will simply do nothing. + playerPokemon.lapseTag(BattlerTagType.ENCORE); + + if (globalScene.currentBattle.turnCommands[this.fieldIndex]?.skip) { + this.end(); + return; + } + + if (this.tryExecuteQueuedMove()) { + return; + } + + if ( + globalScene.currentBattle.isBattleMysteryEncounter() && + globalScene.currentBattle.mysteryEncounter?.skipToFightInput + ) { + globalScene.ui.clearText(); + globalScene.ui.setMode(UiMode.FIGHT, this.fieldIndex); + } else { + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + } + } + + /** + * Submethod of {@linkcode handleFightCommand} responsible for queuing the appropriate + * error message when a move cannot be used. + * @param user - The pokemon using the move + * @param cursor - The index of the move in the moveset + */ + private queueFightErrorMessage(user: PlayerPokemon, cursor: number) { + const move = user.getMoveset()[cursor]; + globalScene.ui.setMode(UiMode.MESSAGE); + + // Decides between a Disabled, Not Implemented, or No PP translation message + const errorMessage = user.isMoveRestricted(move.moveId, user) + ? user.getRestrictingTag(move.moveId, user)!.selectionDeniedText(user, move.moveId) + : move.getName().endsWith(" (N)") + ? "battle:moveNotImplemented" + : "battle:moveNoPP"; + const moveName = move.getName().replace(" (N)", ""); // Trims off the indicator + + globalScene.ui.showText( + i18next.t(errorMessage, { moveName: moveName }), + null, + () => { + globalScene.ui.clearText(); + globalScene.ui.setMode(UiMode.FIGHT, this.fieldIndex); + }, + null, + true, + ); + } + + /** + * Helper method for {@linkcode handleFightCommand} that returns the moveID for the phase + * based on the move passed in or the cursor. + * + * Does not check if the move is usable or not, that should be handled by the caller. + */ + private computeMoveId(playerPokemon: PlayerPokemon, cursor: number, move: TurnMove | undefined): MoveId { + return move?.move ?? (cursor > -1 ? playerPokemon.getMoveset()[cursor]?.moveId : MoveId.NONE); + } + + /** + * Process the logic for executing a fight-related command + * + * @remarks + * - Validates whether the move can be used, using struggle if not + * - Constructs the turn command and inserts it into the battle's turn commands + * + * @param command - The command to handle (FIGHT or TERA) + * @param cursor - The index that the cursor is placed on, or -1 if no move can be selected. + * @param ignorePP - Whether to ignore PP when checking if the move can be used. + * @param move - The move to force the command to use, if any. + */ + private handleFightCommand( + command: Command.FIGHT | Command.TERA, + cursor: number, + useMode: MoveUseMode = MoveUseMode.NORMAL, + move?: TurnMove, + ): boolean { + const playerPokemon = this.getPokemon(); + const ignorePP = isIgnorePP(useMode); + + let canUse = cursor === -1 || playerPokemon.trySelectMove(cursor, ignorePP); + + // Ternary here ensures we don't compute struggle conditions unless necessary + const useStruggle = canUse + ? false + : cursor > -1 && !playerPokemon.getMoveset().some(m => m.isUsable(playerPokemon)); + + canUse ||= useStruggle; + + if (!canUse) { + this.queueFightErrorMessage(playerPokemon, cursor); + return false; + } + + const moveId = useStruggle ? MoveId.STRUGGLE : this.computeMoveId(playerPokemon, cursor, move); + + const turnCommand: TurnCommand = { + command: Command.FIGHT, + cursor, + move: { move: moveId, targets: [], useMode }, + args: [useMode, move], + }; + const preTurnCommand: TurnCommand = { + command, + targets: [this.fieldIndex], + skip: command === Command.FIGHT, + }; + + const moveTargets: MoveTargetSet = + move === undefined + ? getMoveTargets(playerPokemon, moveId) + : { + targets: move.targets, + multiple: move.targets.length > 1, + }; + + if (moveId === MoveId.NONE) { + turnCommand.targets = [this.fieldIndex]; + } + + console.log( + "Move:", + MoveId[moveId], + "Move targets:", + moveTargets, + "\nPlayer Pokemon:", + getPokemonNameWithAffix(playerPokemon), + ); + + if (moveTargets.targets.length > 1 && moveTargets.multiple) { + globalScene.phaseManager.unshiftNew("SelectTargetPhase", this.fieldIndex); + } + + if (turnCommand.move && (moveTargets.targets.length <= 1 || moveTargets.multiple)) { + turnCommand.move.targets = moveTargets.targets; + } else if ( + turnCommand.move && + playerPokemon.getTag(BattlerTagType.CHARGING) && + playerPokemon.getMoveQueue().length >= 1 + ) { + turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; + } else { + globalScene.phaseManager.unshiftNew("SelectTargetPhase", this.fieldIndex); + } + + globalScene.currentBattle.preTurnCommands[this.fieldIndex] = preTurnCommand; + globalScene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; + + return true; + } + + /** + * Set the mode in preparation to show the text, and then show the text. + * Only works for parameterless i18next keys. + * @param key - The i18next key for the text to show + */ + private queueShowText(key: string): void { + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(UiMode.MESSAGE); + + globalScene.ui.showText( + i18next.t(key), + null, + () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + }, + null, + true, + ); + } + + /** + * Helper method for {@linkcode handleBallCommand} that checks if a pokeball can be thrown + * and displays the appropriate error message. + * + * @remarks + * The pokeball may not be thrown if any of the following are true: + * - It is a trainer battle + * - The player is in the {@linkcode BiomeId.END | End} biome and + * - it is not classic mode; or + * - the fresh start challenge is active; or + * - the player has not caught the target before and the player is still missing more than one starter + * - The player is in a mystery encounter that disallows catching the pokemon + * @returns Whether a pokeball can be thrown + */ + private checkCanUseBall(): boolean { + const { arena, currentBattle, gameData, gameMode } = globalScene; + const { battleType } = currentBattle; + const { biomeType } = arena; + const { isClassic } = gameMode; + const { dexData } = gameData; + + const someUncaughtSpeciesOnField = globalScene + .getEnemyField() + .some(p => p.isActive() && !dexData[p.species.speciesId].caughtAttr); + const missingMultipleStarters = + gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1; + if ( + biomeType === BiomeId.END && + (!isClassic || gameMode.isFreshStartChallenge() || (someUncaughtSpeciesOnField && missingMultipleStarters)) + ) { + this.queueShowText("battle:noPokeballForce"); + } else if (battleType === BattleType.TRAINER) { + this.queueShowText("battle:noPokeballTrainer"); + } else if (currentBattle.isBattleMysteryEncounter() && !currentBattle.mysteryEncounter!.catchAllowed) { + this.queueShowText("battle:noPokeballMysteryEncounter"); + } else { + return true; + } + + return false; + } + + /** + * Helper method for {@linkcode handleCommand} that handles the logic when the selected command is to use a pokeball. + * + * @param cursor - The index of the pokeball to use + * @returns Whether the command was successfully initiated + */ + private handleBallCommand(cursor: number): boolean { + const targets = globalScene + .getEnemyField() + .filter(p => p.isActive(true)) + .map(p => p.getBattlerIndex()); + if (targets.length > 1) { + this.queueShowText("battle:noPokeballMulti"); + return false; + } + + if (!this.checkCanUseBall()) { + return false; + } + + const numBallTypes = 5; + if (cursor < numBallTypes) { + const targetPokemon = globalScene.getEnemyPokemon(); + if ( + targetPokemon?.isBoss() && + targetPokemon?.bossSegmentIndex >= 1 && + // TODO: Decouple this hardcoded exception for wonder guard and just check the target... + !targetPokemon?.hasAbility(AbilityId.WONDER_GUARD, false, true) && + cursor < PokeballType.MASTER_BALL + ) { + this.queueShowText("battle:noPokeballStrong"); + return false; + } + + globalScene.currentBattle.turnCommands[this.fieldIndex] = { + command: Command.BALL, + cursor: cursor, + }; + globalScene.currentBattle.turnCommands[this.fieldIndex]!.targets = targets; + if (this.fieldIndex) { + globalScene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; + } + return true; + } + + return false; + } + + /** + * Submethod of {@linkcode tryLeaveField} to handle the logic for effects that prevent the pokemon from leaving the field + * due to trapping abilities or effects. + * + * This method queues the proper messages in the case of trapping abilities or effects. + * + * @returns Whether the pokemon is currently trapped + */ + private handleTrap(): boolean { + const playerPokemon = this.getPokemon(); + const trappedAbMessages: string[] = []; + const isSwitch = this.isSwitch; + if (!playerPokemon.isTrapped(trappedAbMessages)) { + return false; + } + if (trappedAbMessages.length > 0) { + if (isSwitch) { + globalScene.ui.setMode(UiMode.MESSAGE); + } + globalScene.ui.showText( + trappedAbMessages[0], + null, + () => { + globalScene.ui.showText("", 0); + if (isSwitch) { + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + } + }, + null, + true, + ); + } else { + const trapTag = playerPokemon.getTag(TrappedTag); + const fairyLockTag = globalScene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER); + + if (!isSwitch) { + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(UiMode.MESSAGE); + } + if (trapTag) { + this.showNoEscapeText(trapTag, false); + } else if (fairyLockTag) { + this.showNoEscapeText(fairyLockTag, false); + } + } + + return true; + } + + /** + * Common helper method that attempts to have the pokemon leave the field. + * Checks for trapping abilities and effects. + * + * @param cursor - The index of the option that the cursor is on + * @returns Whether the pokemon is able to leave the field, indicating the command phase should end + */ + private tryLeaveField(cursor?: number, isBatonSwitch = false): boolean { + const currentBattle = globalScene.currentBattle; + + if (isBatonSwitch || !this.handleTrap()) { + currentBattle.turnCommands[this.fieldIndex] = this.isSwitch + ? { + command: Command.POKEMON, + cursor, + args: [isBatonSwitch], + } + : { + command: Command.RUN, + }; + if (!this.isSwitch && this.fieldIndex) { + currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; + } + return true; + } + + return false; + } + + /** + * Helper method for {@linkcode handleCommand} that handles the logic when the selected command is RUN. + * + * @remarks + * Checks if the player is allowed to flee, and if not, queues the appropriate message. + * + * The player cannot flee if: + * - The player is in the {@linkcode BiomeId.END | End} biome + * - The player is in a trainer battle + * - The player is in a mystery encounter that disallows fleeing + * - The player's pokemon is trapped by an ability or effect + * @returns Whether the pokemon is able to leave the field, indicating the command phase should end + */ + private handleRunCommand(): boolean { + const { currentBattle, arena } = globalScene; + const mysteryEncounterFleeAllowed = currentBattle.mysteryEncounter?.fleeAllowed ?? true; + if (arena.biomeType === BiomeId.END || !mysteryEncounterFleeAllowed) { + this.queueShowText("battle:noEscapeForce"); + return false; + } + if ( + currentBattle.battleType === BattleType.TRAINER || + currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE + ) { + this.queueShowText("battle:noEscapeTrainer"); + return false; + } + + const success = this.tryLeaveField(); + + return success; + } + + /** + * Show a message indicating that the pokemon cannot escape, and then return to the command phase. + */ + private showNoEscapeText(tag: any, isSwitch: boolean): void { + globalScene.ui.showText( + i18next.t("battle:noEscapePokemon", { + pokemonName: + tag.sourceId && globalScene.getPokemonById(tag.sourceId) + ? getPokemonNameWithAffix(globalScene.getPokemonById(tag.sourceId)!) + : "", + moveName: tag.getMoveName(), + escapeVerb: i18next.t(isSwitch ? "battle:escapeVerbSwitch" : "battle:escapeVerbFlee"), + }), + null, + () => { + globalScene.ui.showText("", 0); + if (!isSwitch) { + globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); + } + }, + null, + true, + ); + } + + // Overloads for handleCommand to provide a more specific signature for the different options + /** + * Process the command phase logic based on the selected command + * + * @param command - The kind of command to handle + * @param cursor - The index of option that the cursor is on, or -1 if no option is selected + * @param useMode - The mode to use for the move, if applicable. For switches, a boolean that specifies whether the switch is a Baton switch. + * @param move - For {@linkcode Command.FIGHT}, the move to use + * @returns Whether the command was successful + */ + handleCommand(command: Command.FIGHT | Command.TERA, cursor: number, useMode?: MoveUseMode, move?: TurnMove): boolean; + handleCommand(command: Command.BALL, cursor: number): boolean; + handleCommand(command: Command.POKEMON, cursor: number, useBaton: boolean): boolean; + handleCommand(command: Command.RUN, cursor: number): boolean; + handleCommand(command: Command, cursor: number, useMode?: boolean | MoveUseMode, move?: TurnMove): boolean; + + public handleCommand( + command: Command, + cursor: number, + useMode: boolean | MoveUseMode = false, + move?: TurnMove, + ): boolean { let success = false; switch (command) { - // TODO: We don't need 2 args for this - moveUseMode is carried over from queuedMove case Command.TERA: - case Command.FIGHT: { - let useStruggle = false; - const turnMove: TurnMove | undefined = args.length === 2 ? (args[1] as TurnMove) : undefined; - if ( - cursor === -1 || - playerPokemon.trySelectMove(cursor, isIgnorePP(args[0] as MoveUseMode)) || - (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length) - ) { - let moveId: MoveId; - if (useStruggle) { - moveId = MoveId.STRUGGLE; - } else if (turnMove !== undefined) { - moveId = turnMove.move; - } else if (cursor > -1) { - moveId = playerPokemon.getMoveset()[cursor].moveId; - } else { - moveId = MoveId.NONE; - } - - const turnCommand: TurnCommand = { - command: Command.FIGHT, - cursor: cursor, - move: { move: moveId, targets: [], useMode: args[0] }, - args: args, - }; - const preTurnCommand: TurnCommand = { - command: command, - targets: [this.fieldIndex], - skip: command === Command.FIGHT, - }; - const moveTargets: MoveTargetSet = - turnMove === undefined - ? getMoveTargets(playerPokemon, moveId) - : { - targets: turnMove.targets, - multiple: turnMove.targets.length > 1, - }; - if (!moveId) { - turnCommand.targets = [this.fieldIndex]; - } - console.log(moveTargets, getPokemonNameWithAffix(playerPokemon)); - if (moveTargets.targets.length > 1 && moveTargets.multiple) { - globalScene.phaseManager.unshiftNew("SelectTargetPhase", this.fieldIndex); - } - if (turnCommand.move && (moveTargets.targets.length <= 1 || moveTargets.multiple)) { - turnCommand.move.targets = moveTargets.targets; - } else if ( - turnCommand.move && - playerPokemon.getTag(BattlerTagType.CHARGING) && - playerPokemon.getMoveQueue().length >= 1 - ) { - turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; - } else { - globalScene.phaseManager.unshiftNew("SelectTargetPhase", this.fieldIndex); - } - globalScene.currentBattle.preTurnCommands[this.fieldIndex] = preTurnCommand; - globalScene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; - success = true; - } else if (cursor < playerPokemon.getMoveset().length) { - const move = playerPokemon.getMoveset()[cursor]; - globalScene.ui.setMode(UiMode.MESSAGE); - - // Decides between a Disabled, Not Implemented, or No PP translation message - const errorMessage = playerPokemon.isMoveRestricted(move.moveId, playerPokemon) - ? playerPokemon - .getRestrictingTag(move.moveId, playerPokemon)! - .selectionDeniedText(playerPokemon, move.moveId) - : move.getName().endsWith(" (N)") - ? "battle:moveNotImplemented" - : "battle:moveNoPP"; - const moveName = move.getName().replace(" (N)", ""); // Trims off the indicator - - globalScene.ui.showText( - i18next.t(errorMessage, { moveName: moveName }), - null, - () => { - globalScene.ui.clearText(); - globalScene.ui.setMode(UiMode.FIGHT, this.fieldIndex); - }, - null, - true, - ); - } + case Command.FIGHT: + success = this.handleFightCommand(command, cursor, typeof useMode === "boolean" ? undefined : useMode, move); break; - } - case Command.BALL: { - const notInDex = - globalScene - .getEnemyField() - .filter(p => p.isActive(true)) - .some(p => !globalScene.gameData.dexData[p.species.speciesId].caughtAttr) && - globalScene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1; - if ( - globalScene.arena.biomeType === BiomeId.END && - (!globalScene.gameMode.isClassic || globalScene.gameMode.isFreshStartChallenge() || notInDex) - ) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noPokeballForce"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else if (globalScene.currentBattle.battleType === BattleType.TRAINER) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noPokeballTrainer"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else if ( - globalScene.currentBattle.isBattleMysteryEncounter() && - !globalScene.currentBattle.mysteryEncounter!.catchAllowed - ) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noPokeballMysteryEncounter"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else { - const targets = globalScene - .getEnemyField() - .filter(p => p.isActive(true)) - .map(p => p.getBattlerIndex()); - if (targets.length > 1) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noPokeballMulti"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else if (cursor < 5) { - const targetPokemon = globalScene.getEnemyField().find(p => p.isActive(true)); - if ( - targetPokemon?.isBoss() && - targetPokemon?.bossSegmentIndex >= 1 && - !targetPokemon?.hasAbility(AbilityId.WONDER_GUARD, false, true) && - cursor < PokeballType.MASTER_BALL - ) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noPokeballStrong"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else { - globalScene.currentBattle.turnCommands[this.fieldIndex] = { - command: Command.BALL, - cursor: cursor, - }; - globalScene.currentBattle.turnCommands[this.fieldIndex]!.targets = targets; - if (this.fieldIndex) { - globalScene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; - } - success = true; - } - } - } + case Command.BALL: + success = this.handleBallCommand(cursor); break; - } case Command.POKEMON: - case Command.RUN: { - const isSwitch = command === Command.POKEMON; - const { currentBattle, arena } = globalScene; - const mysteryEncounterFleeAllowed = currentBattle.mysteryEncounter?.fleeAllowed; - if ( - !isSwitch && - (arena.biomeType === BiomeId.END || - (!isNullOrUndefined(mysteryEncounterFleeAllowed) && !mysteryEncounterFleeAllowed)) - ) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noEscapeForce"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else if ( - !isSwitch && - (currentBattle.battleType === BattleType.TRAINER || - currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) - ) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.ui.showText( - i18next.t("battle:noEscapeTrainer"), - null, - () => { - globalScene.ui.showText("", 0); - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - }, - null, - true, - ); - } else { - const batonPass = isSwitch && (args[0] as boolean); - const trappedAbMessages: string[] = []; - if (batonPass || !playerPokemon.isTrapped(trappedAbMessages)) { - currentBattle.turnCommands[this.fieldIndex] = isSwitch - ? { command: Command.POKEMON, cursor: cursor, args: args } - : { command: Command.RUN }; - success = true; - if (!isSwitch && this.fieldIndex) { - currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; - } - } else if (trappedAbMessages.length > 0) { - if (!isSwitch) { - globalScene.ui.setMode(UiMode.MESSAGE); - } - globalScene.ui.showText( - trappedAbMessages[0], - null, - () => { - globalScene.ui.showText("", 0); - if (!isSwitch) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - } - }, - null, - true, - ); - } else { - const trapTag = playerPokemon.getTag(TrappedTag); - const fairyLockTag = globalScene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER); - - if (!trapTag && !fairyLockTag) { - i18next.t(`battle:noEscape${isSwitch ? "Switch" : "Flee"}`); - break; - } - if (!isSwitch) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - globalScene.ui.setMode(UiMode.MESSAGE); - } - const showNoEscapeText = (tag: any) => { - globalScene.ui.showText( - i18next.t("battle:noEscapePokemon", { - pokemonName: - tag.sourceId && globalScene.getPokemonById(tag.sourceId) - ? getPokemonNameWithAffix(globalScene.getPokemonById(tag.sourceId)!) - : "", - moveName: tag.getMoveName(), - escapeVerb: isSwitch ? i18next.t("battle:escapeVerbSwitch") : i18next.t("battle:escapeVerbFlee"), - }), - null, - () => { - globalScene.ui.showText("", 0); - if (!isSwitch) { - globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); - } - }, - null, - true, - ); - }; - - if (trapTag) { - showNoEscapeText(trapTag); - } else if (fairyLockTag) { - showNoEscapeText(fairyLockTag); - } - } - } + this.isSwitch = true; + success = this.tryLeaveField(cursor, typeof useMode === "boolean" ? useMode : undefined); + this.isSwitch = false; break; - } + case Command.RUN: + success = this.handleRunCommand(); } if (success) { diff --git a/src/phases/end-card-phase.ts b/src/phases/end-card-phase.ts index 5c3f6e1bf9b..b9b383db13d 100644 --- a/src/phases/end-card-phase.ts +++ b/src/phases/end-card-phase.ts @@ -1,7 +1,8 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { PlayerGender } from "#enums/player-gender"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; export class EndCardPhase extends Phase { diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index f8bee8371f2..cad79455af3 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -135,7 +135,7 @@ export class EvolutionPhase extends Phase { sprite .setPipelineData("ignoreTimeTint", true) - .setPipelineData("spriteKey", pokemon.getSpriteKey()) + .setPipelineData("spriteKey", spriteKey) .setPipelineData("shiny", pokemon.shiny) .setPipelineData("variant", pokemon.variant); diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 4446b2071d0..c57e0f6cead 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -13,13 +13,13 @@ import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { HitCheckResult } from "#enums/hit-check-result"; import { HitResult } from "#enums/hit-result"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveEffectTrigger } from "#enums/MoveEffectTrigger"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveTarget } from "#enums/MoveTarget"; +import { MoveCategory } from "#enums/move-category"; +import { MoveEffectTrigger } from "#enums/move-effect-trigger"; +import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; -import { isReflected, isVirtual, MoveUseMode } from "#enums/move-use-mode"; +import { MoveTarget } from "#enums/move-target"; +import { isReflected, MoveUseMode } from "#enums/move-use-mode"; import { PokemonType } from "#enums/pokemon-type"; import type { Pokemon } from "#field/pokemon"; import { @@ -244,43 +244,19 @@ export class MoveEffectPhase extends PokemonPhase { globalScene.currentBattle.lastPlayerInvolved = this.fieldIndex; } - const isDelayedAttack = this.move.hasAttr("DelayedAttackAttr"); - /** If the user was somehow removed from the field and it's not a delayed attack, end this phase */ - if (!user.isOnField()) { - if (!isDelayedAttack) { - super.end(); - return; - } - if (!user.scene) { - /* - * This happens if the Pokemon that used the delayed attack gets caught and released - * on the turn the attack would have triggered. Having access to the global scene - * in the future may solve this entirely, so for now we just cancel the hit - */ - super.end(); - return; - } - } + const move = this.move; /** * Does an effect from this move override other effects on this turn? * e.g. Charging moves (Fly, etc.) on their first turn of use. */ const overridden = new BooleanHolder(false); - const move = this.move; // Apply effects to override a move effect. // Assuming single target here works as this is (currently) // only used for Future Sight, calling and Pledge moves. // TODO: change if any other move effect overrides are introduced - applyMoveAttrs( - "OverrideMoveEffectAttr", - user, - this.getFirstTarget() ?? null, - move, - overridden, - isVirtual(this.useMode), - ); + applyMoveAttrs("OverrideMoveEffectAttr", user, this.getFirstTarget() ?? null, move, overridden, this.useMode); // If other effects were overriden, stop this phase before they can be applied if (overridden.value) { @@ -355,7 +331,7 @@ export class MoveEffectPhase extends PokemonPhase { */ private postAnimCallback(user: Pokemon, targets: Pokemon[]) { // Add to the move history entry - if (this.firstHit) { + if (this.firstHit && this.useMode !== MoveUseMode.DELAYED_ATTACK) { user.pushMoveHistory(this.moveHistoryEntry); applyAbAttrs("ExecutedMoveAbAttr", { pokemon: user }); } @@ -663,6 +639,7 @@ export class MoveEffectPhase extends PokemonPhase { /** @returns The {@linkcode Pokemon} using this phase's invoked move */ public getUserPokemon(): Pokemon | null { + // TODO: Make this purely a battler index if (this.battlerIndex > BattlerIndex.ENEMY_2) { return globalScene.getPokemonById(this.battlerIndex); } diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 09a542861be..f88f9d0cad1 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -2,19 +2,17 @@ import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; -import type { DelayedAttackTag } from "#data/arena-tag"; import { CenterOfAttentionTag } from "#data/battler-tags"; import { SpeciesFormChangePreMoveTrigger } from "#data/form-change-triggers"; import { getStatusEffectActivationText, getStatusEffectHealText } from "#data/status-effect"; import { getTerrainBlockMessage } from "#data/terrain"; import { getWeatherBlockMessage } from "#data/weather"; import { AbilityId } from "#enums/ability-id"; -import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveFlags } from "#enums/MoveFlags"; import { CommonAnim } from "#enums/move-anims-common"; +import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { isIgnorePP, isIgnoreStatus, isReflected, isVirtual, MoveUseMode } from "#enums/move-use-mode"; @@ -297,21 +295,6 @@ export class MovePhase extends BattlePhase { // form changes happen even before we know that the move wll execute. globalScene.triggerPokemonFormChange(this.pokemon, SpeciesFormChangePreMoveTrigger); - // Check the player side arena if another delayed attack is active and hitting the same slot. - if (move.hasAttr("DelayedAttackAttr")) { - const currentTargetIndex = targets[0].getBattlerIndex(); - const delayedAttackHittingSameSlot = globalScene.arena.tags.some( - tag => - (tag.tagType === ArenaTagType.FUTURE_SIGHT || tag.tagType === ArenaTagType.DOOM_DESIRE) && - (tag as DelayedAttackTag).targetIndex === currentTargetIndex, - ); - - if (delayedAttackHittingSameSlot) { - this.failMove(true); - return; - } - } - // Check if the move has any attributes that can interrupt its own use **before** displaying text. // TODO: This should not rely on direct return values let failed = move.getAttrs("PreUseInterruptAttr").some(attr => attr.apply(this.pokemon, targets[0], move)); @@ -666,7 +649,6 @@ export class MovePhase extends BattlePhase { * Displays the move's usage text to the player as applicable for the move being used. */ public showMoveText(): void { - // No text for Moves.NONE, recharging/2-turn moves or interrupted moves if ( this.move.moveId === MoveId.NONE || this.pokemon.getTag(BattlerTagType.RECHARGING) || @@ -675,7 +657,6 @@ export class MovePhase extends BattlePhase { return; } - // Play message for magic coat reflection // TODO: This should be done by the move... globalScene.phaseManager.queueMessage( i18next.t(isReflected(this.useMode) ? "battle:magicCoatActivated" : "battle:useMove", { diff --git a/src/phases/positional-tag-phase.ts b/src/phases/positional-tag-phase.ts new file mode 100644 index 00000000000..dec572273c5 --- /dev/null +++ b/src/phases/positional-tag-phase.ts @@ -0,0 +1,21 @@ +// biome-ignore-start lint/correctness/noUnusedImports: TSDocs +import type { PositionalTag } from "#data/positional-tags/positional-tag"; +import type { TurnEndPhase } from "#phases/turn-end-phase"; +// biome-ignore-end lint/correctness/noUnusedImports: TSDocs + +import { globalScene } from "#app/global-scene"; +import { Phase } from "#app/phase"; + +/** + * Phase to trigger all pending post-turn {@linkcode PositionalTag}s. + * Occurs before {@linkcode TurnEndPhase} to allow for proper electrify timing. + */ +export class PositionalTagPhase extends Phase { + public readonly phaseName = "PositionalTagPhase"; + + public override start(): void { + globalScene.arena.positionalTagManager.activateAllTags(); + super.end(); + return; + } +} diff --git a/src/phases/scan-ivs-phase.ts b/src/phases/scan-ivs-phase.ts index e0865feb7ca..eebee28bfbb 100644 --- a/src/phases/scan-ivs-phase.ts +++ b/src/phases/scan-ivs-phase.ts @@ -2,9 +2,10 @@ import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import type { BattlerIndex } from "#enums/battler-index"; import { PERMANENT_STATS, Stat } from "#enums/stat"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { PokemonPhase } from "#phases/pokemon-phase"; -import { getTextColor, TextStyle } from "#ui/text"; +import { getTextColor } from "#ui/text"; import i18next from "i18next"; export class ScanIvsPhase extends PokemonPhase { diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index af056ebb4ee..d6bd252c77d 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -24,10 +24,11 @@ export class SelectStarterPhase extends Phase { globalScene.ui.setMode(UiMode.STARTER_SELECT, (starters: Starter[]) => { globalScene.ui.clearText(); globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { + // If clicking cancel, back out to title screen if (slotId === -1) { - globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.pushNew("TitlePhase"); - return this.end(); + globalScene.phaseManager.toTitleScreen(); + this.end(); + return; } globalScene.sessionSlotId = slotId; this.initBattle(starters); @@ -98,8 +99,12 @@ export class SelectStarterPhase extends Phase { starterPokemon.generateFusionSpecies(true); } starterPokemon.setVisible(false); - applyChallenges(ChallengeType.STARTER_MODIFY, starterPokemon); + const chalApplied = applyChallenges(ChallengeType.STARTER_MODIFY, starterPokemon); party.push(starterPokemon); + if (chalApplied) { + // If any challenges modified the starter, it should update + loadPokemonAssets.push(starterPokemon.updateInfo()); + } loadPokemonAssets.push(starterPokemon.loadAssets()); }); overrideModifiers(); diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index 38e3ff3a017..6f0493f707d 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -114,11 +114,11 @@ export class TitlePhase extends Phase { }); } } + // Cancel button = back to title options.push({ label: i18next.t("menu:cancel"), handler: () => { - globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.pushNew("TitlePhase"); + globalScene.phaseManager.toTitleScreen(); super.end(); return true; }, @@ -191,11 +191,12 @@ export class TitlePhase extends Phase { initDailyRun(): void { globalScene.ui.clearText(); globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { - globalScene.phaseManager.clearPhaseQueue(); if (slotId === -1) { - globalScene.phaseManager.pushNew("TitlePhase"); - return super.end(); + globalScene.phaseManager.toTitleScreen(); + super.end(); + return; } + globalScene.phaseManager.clearPhaseQueue(); globalScene.sessionSlotId = slotId; const generateDaily = (seed: string) => { diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index ce3b2958c23..463f26e73a2 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -18,6 +18,8 @@ import i18next from "i18next"; export class TurnEndPhase extends FieldPhase { public readonly phaseName = "TurnEndPhase"; + public upcomingInterlude = false; + start() { super.start(); @@ -59,9 +61,11 @@ export class TurnEndPhase extends FieldPhase { pokemon.tempSummonData.waveTurnCount++; }; - this.executeForAll(handlePokemon); + if (!this.upcomingInterlude) { + this.executeForAll(handlePokemon); - globalScene.arena.lapseTags(); + globalScene.arena.lapseTags(); + } if (globalScene.arena.weather && !globalScene.arena.weather.lapse()) { globalScene.arena.trySetWeather(WeatherType.NONE); diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index 0fc126801ec..9c53a333ed0 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -218,6 +218,10 @@ export class TurnStartPhase extends FieldPhase { break; } } + phaseManager.pushNew("CheckInterludePhase"); + + // TODO: Re-order these phases to be consistent with mainline turn order: + // https://www.smogon.com/forums/threads/sword-shield-battle-mechanics-research.3655528/page-64#post-9244179 phaseManager.pushNew("WeatherEffectPhase"); phaseManager.pushNew("BerryPhase"); @@ -225,12 +229,13 @@ export class TurnStartPhase extends FieldPhase { /** Add a new phase to check who should be taking status damage */ phaseManager.pushNew("CheckStatusEffectPhase", moveOrder); + phaseManager.pushNew("PositionalTagPhase"); phaseManager.pushNew("TurnEndPhase"); - /** - * this.end() will call shiftPhase(), which dumps everything from PrependQueue (aka everything that is unshifted()) to the front - * of the queue and dequeues to start the next phase - * this is important since stuff like SwitchSummon, AttemptRun, AttemptCapture Phases break the "flow" and should take precedence + /* + * `this.end()` will call `PhaseManager#shiftPhase()`, which dumps everything from `phaseQueuePrepend` + * (aka everything that is queued via `unshift()`) to the front of the queue and dequeues to start the next phase. + * This is important since stuff like `SwitchSummonPhase`, `AttemptRunPhase`, and `AttemptCapturePhase` break the "flow" and should take precedence */ this.end(); } diff --git a/src/pipelines/field-sprite.ts b/src/pipelines/field-sprite.ts index 647483d1524..b20bacf6a5e 100644 --- a/src/pipelines/field-sprite.ts +++ b/src/pipelines/field-sprite.ts @@ -2,8 +2,8 @@ import { globalScene } from "#app/global-scene"; import { getTerrainColor, TerrainType } from "#data/terrain"; import { getCurrentTime } from "#utils/common"; import Phaser from "phaser"; -import fieldSpriteFragShader from "./glsl/fieldSpriteFragShader.frag?raw"; -import spriteVertShader from "./glsl/spriteShader.vert?raw"; +import fieldSpriteFragShader from "./glsl/field-sprite-frag-shader.frag?raw"; +import spriteVertShader from "./glsl/sprite-shader.vert?raw"; export class FieldSpritePipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline { constructor(game: Phaser.Game, config?: Phaser.Types.Renderer.WebGL.WebGLPipelineConfig) { diff --git a/src/pipelines/glsl/fieldSpriteFragShader.frag b/src/pipelines/glsl/field-sprite-frag-shader.frag similarity index 100% rename from src/pipelines/glsl/fieldSpriteFragShader.frag rename to src/pipelines/glsl/field-sprite-frag-shader.frag diff --git a/src/pipelines/glsl/spriteFragShader.frag b/src/pipelines/glsl/sprite-frag-shader.frag similarity index 100% rename from src/pipelines/glsl/spriteFragShader.frag rename to src/pipelines/glsl/sprite-frag-shader.frag diff --git a/src/pipelines/glsl/spriteShader.vert b/src/pipelines/glsl/sprite-shader.vert similarity index 100% rename from src/pipelines/glsl/spriteShader.vert rename to src/pipelines/glsl/sprite-shader.vert diff --git a/src/pipelines/sprite.ts b/src/pipelines/sprite.ts index 596a761b05f..8d38eda562d 100644 --- a/src/pipelines/sprite.ts +++ b/src/pipelines/sprite.ts @@ -5,8 +5,8 @@ import { Pokemon } from "#field/pokemon"; import { Trainer } from "#field/trainer"; import { variantColorCache } from "#sprites/variant"; import { rgbHexToRgba } from "#utils/common"; -import spriteFragShader from "./glsl/spriteFragShader.frag?raw"; -import spriteVertShader from "./glsl/spriteShader.vert?raw"; +import spriteFragShader from "./glsl/sprite-frag-shader.frag?raw"; +import spriteVertShader from "./glsl/sprite-shader.vert?raw"; export class SpritePipeline extends FieldSpritePipeline { private _tone: number[]; diff --git a/src/plugins/api/pokerogue-account-api.ts b/src/plugins/api/pokerogue-account-api.ts index 56bdc92b9b9..03f522e8dac 100644 --- a/src/plugins/api/pokerogue-account-api.ts +++ b/src/plugins/api/pokerogue-account-api.ts @@ -5,7 +5,7 @@ import type { AccountLoginRequest, AccountLoginResponse, AccountRegisterRequest, -} from "#types/PokerogueAccountApi"; +} from "#types/api/pokerogue-account-api"; import { removeCookie, setCookie } from "#utils/cookies"; /** diff --git a/src/plugins/api/pokerogue-admin-api.ts b/src/plugins/api/pokerogue-admin-api.ts index 4e549c7ff53..7ce4cf8b973 100644 --- a/src/plugins/api/pokerogue-admin-api.ts +++ b/src/plugins/api/pokerogue-admin-api.ts @@ -6,7 +6,7 @@ import type { SearchAccountResponse, UnlinkAccountFromDiscordIdRequest, UnlinkAccountFromGoogledIdRequest, -} from "#types/PokerogueAdminApi"; +} from "#types/api/pokerogue-admin-api"; export class PokerogueAdminApi extends ApiBase { public readonly ERR_USERNAME_NOT_FOUND: string = "Username not found!"; diff --git a/src/plugins/api/pokerogue-api.ts b/src/plugins/api/pokerogue-api.ts index 99600a359a2..ce232685107 100644 --- a/src/plugins/api/pokerogue-api.ts +++ b/src/plugins/api/pokerogue-api.ts @@ -3,7 +3,7 @@ import { PokerogueAccountApi } from "#api/pokerogue-account-api"; import { PokerogueAdminApi } from "#api/pokerogue-admin-api"; import { PokerogueDailyApi } from "#api/pokerogue-daily-api"; import { PokerogueSavedataApi } from "#api/pokerogue-savedata-api"; -import type { TitleStatsResponse } from "#types/PokerogueApi"; +import type { TitleStatsResponse } from "#types/api/pokerogue-api-types"; /** * A wrapper for PokéRogue API requests. diff --git a/src/plugins/api/pokerogue-daily-api.ts b/src/plugins/api/pokerogue-daily-api.ts index 2913c7bd4f2..5ea3846e60e 100644 --- a/src/plugins/api/pokerogue-daily-api.ts +++ b/src/plugins/api/pokerogue-daily-api.ts @@ -1,5 +1,5 @@ import { ApiBase } from "#api/api-base"; -import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#types/PokerogueDailyApi"; +import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#types/api/pokerogue-daily-api"; import type { RankingEntry } from "#ui/daily-run-scoreboard"; /** diff --git a/src/plugins/api/pokerogue-savedata-api.ts b/src/plugins/api/pokerogue-savedata-api.ts index bc77de8060b..f91e7bd027f 100644 --- a/src/plugins/api/pokerogue-savedata-api.ts +++ b/src/plugins/api/pokerogue-savedata-api.ts @@ -2,7 +2,7 @@ import { ApiBase } from "#api/api-base"; import { PokerogueSessionSavedataApi } from "#api/pokerogue-session-savedata-api"; import { PokerogueSystemSavedataApi } from "#api/pokerogue-system-savedata-api"; import { MAX_INT_ATTR_VALUE } from "#app/constants"; -import type { UpdateAllSavedataRequest } from "#types/PokerogueSavedataApi"; +import type { UpdateAllSavedataRequest } from "#types/api/pokerogue-save-data-api"; /** * A wrapper for PokéRogue savedata API requests. diff --git a/src/plugins/api/pokerogue-session-savedata-api.ts b/src/plugins/api/pokerogue-session-savedata-api.ts index a807d4b712c..4ffb0a5d8da 100644 --- a/src/plugins/api/pokerogue-session-savedata-api.ts +++ b/src/plugins/api/pokerogue-session-savedata-api.ts @@ -7,7 +7,7 @@ import type { GetSessionSavedataRequest, NewClearSessionSavedataRequest, UpdateSessionSavedataRequest, -} from "#types/PokerogueSessionSavedataApi"; +} from "#types/api/pokerogue-session-save-data-api"; /** * A wrapper for PokéRogue session savedata API requests. diff --git a/src/plugins/api/pokerogue-system-savedata-api.ts b/src/plugins/api/pokerogue-system-savedata-api.ts index f87aba81ee9..137d4adb18f 100644 --- a/src/plugins/api/pokerogue-system-savedata-api.ts +++ b/src/plugins/api/pokerogue-system-savedata-api.ts @@ -4,7 +4,7 @@ import type { UpdateSystemSavedataRequest, VerifySystemSavedataRequest, VerifySystemSavedataResponse, -} from "#types/PokerogueSystemSavedataApi"; +} from "#types/api/pokerogue-system-save-data-api"; /** * A wrapper for PokéRogue system savedata API requests. diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 4ee4aa730fb..62fc73a10a3 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -1,5 +1,5 @@ import pkg from "#package.json"; -import { camelCaseToKebabCase } from "#utils/common"; +import { toKebabCase } from "#utils/strings"; import i18next from "i18next"; import LanguageDetector from "i18next-browser-languagedetector"; import HttpBackend from "i18next-http-backend"; @@ -79,13 +79,13 @@ const fonts: Array = [ face: new FontFace("emerald", "url(./fonts/pokemon-bw.ttf)", { unicodeRange: rangesByLanguage.japanese, }), - only: ["en", "es", "fr", "it", "de", "pt", "ko", "ja", "ca", "da", "tr", "ro", "ru"], + only: ["en", "es", "fr", "it", "de", "pt", "ko", "ja", "ca", "da", "tr", "ro", "ru", "tl"], }, { face: new FontFace("pkmnems", "url(./fonts/pokemon-bw.ttf)", { unicodeRange: rangesByLanguage.japanese, }), - only: ["en", "es", "fr", "it", "de", "pt", "ko", "ja", "ca", "da", "tr", "ro", "ru"], + only: ["en", "es", "fr", "it", "de", "pt", "ko", "ja", "ca", "da", "tr", "ro", "ru", "tl"], }, ]; @@ -191,17 +191,20 @@ export async function initI18n(): Promise { "tr", "ro", "ru", + "tl", ], backend: { loadPath(lng: string, [ns]: string[]) { + // Use namespace maps where required let fileName: string; if (namespaceMap[ns]) { fileName = namespaceMap[ns]; } else if (ns.startsWith("mysteryEncounters/")) { - fileName = camelCaseToKebabCase(ns + "Dialogue"); + fileName = toKebabCase(ns + "-dialogue"); // mystery-encounters/a-trainers-test-dialogue } else { - fileName = camelCaseToKebabCase(ns); + fileName = toKebabCase(ns); } + // ex: "./locales/en/move-anims" return `./locales/${lng}/${fileName}.json?v=${pkg.version}`; }, }, diff --git a/src/system/achv.ts b/src/system/achv.ts index abe6f264d20..69eade02e35 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -890,7 +890,7 @@ export const achvs = { 100, c => c instanceof FreshStartChallenge && - c.value > 0 && + c.value === 1 && !globalScene.gameMode.challenges.some( c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0, ), diff --git a/src/system/arena-data.ts b/src/system/arena-data.ts index c0ad4a25024..b2a04f96a55 100644 --- a/src/system/arena-data.ts +++ b/src/system/arena-data.ts @@ -1,5 +1,6 @@ import type { ArenaTag } from "#data/arena-tag"; import { loadArenaTag, SerializableArenaTag } from "#data/arena-tag"; +import type { SerializedPositionalTag } from "#data/positional-tags/load-positional-tag"; import { Terrain } from "#data/terrain"; import { Weather } from "#data/weather"; import type { BiomeId } from "#enums/biome-id"; @@ -12,6 +13,7 @@ export interface SerializedArenaData { weather: NonFunctionProperties | null; terrain: NonFunctionProperties | null; tags?: ArenaTagTypeData[]; + positionalTags: SerializedPositionalTag[]; playerTerasUsed?: number; } @@ -20,6 +22,7 @@ export class ArenaData { public weather: Weather | null; public terrain: Terrain | null; public tags: ArenaTag[]; + public positionalTags: SerializedPositionalTag[] = []; public playerTerasUsed: number; constructor(source: Arena | SerializedArenaData) { @@ -37,11 +40,15 @@ export class ArenaData { this.biome = source.biomeType; this.weather = source.weather; this.terrain = source.terrain; + // The assertion here is ok - we ensure that all tags are inside the `posTagConstructorMap` map, + // and that all `PositionalTags` will become their respective interfaces when serialized and de-serialized. + this.positionalTags = (source.positionalTagManager.tags as unknown as SerializedPositionalTag[]) ?? []; return; } this.biome = source.biome; this.weather = source.weather ? new Weather(source.weather.weatherType, source.weather.turnsLeft) : null; this.terrain = source.terrain ? new Terrain(source.terrain.terrainType, source.terrain.turnsLeft) : null; + this.positionalTags = source.positionalTags ?? []; } } diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 9204186bc5e..2f28e87b81e 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -16,6 +16,7 @@ import { allMoves, allSpecies } from "#data/data-lists"; import type { Egg } from "#data/egg"; import { pokemonFormChanges } from "#data/pokemon-forms"; import type { PokemonSpecies } from "#data/pokemon-species"; +import { loadPositionalTag } from "#data/positional-tags/load-positional-tag"; import { TerrainType } from "#data/terrain"; import { AbilityAttr } from "#enums/ability-attr"; import { BattleType } from "#enums/battle-type"; @@ -57,7 +58,7 @@ import { applySessionVersionMigration, applySettingsVersionMigration, applySystemVersionMigration, -} from "#system/version_converter"; +} from "#system/version-migration/version-converter"; import { VoucherType, vouchers } from "#system/voucher"; import { trainerConfigs } from "#trainers/trainer-config"; import type { DexData, DexEntry } from "#types/dex-data"; @@ -1145,6 +1146,10 @@ export class GameData { } } + globalScene.arena.positionalTagManager.tags = sessionData.arena.positionalTags.map(tag => + loadPositionalTag(tag), + ); + if (globalScene.modifiers.length) { console.warn("Existing modifiers not cleared on session load, deleting..."); globalScene.modifiers = []; @@ -1503,11 +1508,10 @@ export class GameData { reader.onload = (_ => { return e => { - let dataName: string; + let dataName = GameDataType[dataType].toLowerCase(); let dataStr = AES.decrypt(e.target?.result?.toString()!, saveKey).toString(enc.Utf8); // TODO: is this bang correct? let valid = false; try { - dataName = GameDataType[dataType].toLowerCase(); switch (dataType) { case GameDataType.SYSTEM: { dataStr = this.convertSystemDataStr(dataStr); @@ -1542,7 +1546,6 @@ export class GameData { const displayError = (error: string) => globalScene.ui.showText(error, null, () => globalScene.ui.showText("", 0), fixedInt(1500)); - dataName = dataName!; // tell TS compiler that dataName is defined! if (!valid) { return globalScene.ui.showText( diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 9cea08bfb13..0ddfedeff84 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -1,7 +1,6 @@ import { globalScene } from "#app/global-scene"; import type { Gender } from "#data/gender"; import { CustomPokemonData, PokemonBattleData, PokemonSummonData } from "#data/pokemon-data"; -import { getPokemonSpeciesForm } from "#data/pokemon-species"; import { Status } from "#data/status-effect"; import { BattleType } from "#enums/battle-type"; import type { BiomeId } from "#enums/biome-id"; @@ -14,7 +13,7 @@ import { TrainerSlot } from "#enums/trainer-slot"; import { EnemyPokemon, Pokemon } from "#field/pokemon"; import { PokemonMove } from "#moves/pokemon-move"; import type { Variant } from "#sprites/variant"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; export class PokemonData { public id: number; @@ -88,12 +87,12 @@ export class PokemonData { this.id = source.id; this.player = sourcePokemon?.isPlayer() ?? source.player; this.species = sourcePokemon?.species.speciesId ?? source.species; - this.nickname = sourcePokemon?.summonData.illusion?.basePokemon.nickname ?? source.nickname; + this.nickname = source.nickname; this.formIndex = Math.max(Math.min(source.formIndex, getPokemonSpecies(this.species).forms.length - 1), 0); this.abilityIndex = source.abilityIndex; this.passive = source.passive; - this.shiny = sourcePokemon?.summonData.illusion?.basePokemon.shiny ?? source.shiny; - this.variant = sourcePokemon?.summonData.illusion?.basePokemon.variant ?? source.variant; + this.shiny = source.shiny; + this.variant = source.variant; this.pokeball = source.pokeball ?? PokeballType.POKEBALL; this.level = source.level; this.exp = source.exp; @@ -134,8 +133,8 @@ export class PokemonData { this.fusionSpecies = sourcePokemon?.fusionSpecies?.speciesId ?? source.fusionSpecies; this.fusionFormIndex = source.fusionFormIndex; this.fusionAbilityIndex = source.fusionAbilityIndex; - this.fusionShiny = sourcePokemon?.summonData.illusion?.basePokemon.fusionShiny ?? source.fusionShiny; - this.fusionVariant = sourcePokemon?.summonData.illusion?.basePokemon.fusionVariant ?? source.fusionVariant; + this.fusionShiny = source.fusionShiny; + this.fusionVariant = source.fusionVariant; this.fusionGender = source.fusionGender; this.fusionLuck = source.fusionLuck ?? (source.fusionShiny ? source.fusionVariant + 1 : 0); this.fusionTeraType = (source.fusionTeraType ?? 0) as PokemonType; diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 19d10baedfd..32d9e0ee2be 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -171,6 +171,7 @@ export const SettingKeys = { UI_Volume: "UI_SOUND_EFFECTS", Battle_Music: "BATTLE_MUSIC", Show_BGM_Bar: "SHOW_BGM_BAR", + Hide_Username: "HIDE_USERNAME", Move_Touch_Controls: "MOVE_TOUCH_CONTROLS", Shop_Overlay_Opacity: "SHOP_OVERLAY_OPACITY", }; @@ -625,6 +626,13 @@ export const Setting: Array = [ default: 1, type: SettingType.DISPLAY, }, + { + key: SettingKeys.Hide_Username, + label: i18next.t("settings:hideUsername"), + options: OFF_ON, + default: 0, + type: SettingType.DISPLAY, + }, { key: SettingKeys.Master_Volume, label: i18next.t("settings:masterVolume"), @@ -792,6 +800,9 @@ export function setSetting(setting: string, value: number): boolean { case SettingKeys.Show_BGM_Bar: globalScene.showBgmBar = Setting[index].options[value].value === "On"; break; + case SettingKeys.Hide_Username: + globalScene.hideUsername = Setting[index].options[value].value === "On"; + break; case SettingKeys.Candy_Upgrade_Notification: if (globalScene.candyUpgradeNotification === value) { break; @@ -970,6 +981,10 @@ export function setSetting(setting: string, value: number): boolean { label: "Română (Needs Help)", handler: () => changeLocaleHandler("ro"), }, + { + label: "Tagalog (Needs Help)", + handler: () => changeLocaleHandler("tl"), + }, { label: i18next.t("settings:back"), handler: () => cancelHandler(), diff --git a/src/system/version_migration/version_converter.ts b/src/system/version-migration/version-converter.ts similarity index 91% rename from src/system/version_migration/version_converter.ts rename to src/system/version-migration/version-converter.ts index c49490da756..6dde611ce84 100644 --- a/src/system/version_migration/version_converter.ts +++ b/src/system/version-migration/version-converter.ts @@ -2,9 +2,9 @@ import { version } from "#package.json"; import type { SessionSaveData, SystemSaveData } from "#system/game-data"; -import type { SessionSaveMigrator } from "#types/SessionSaveMigrator"; -import type { SettingsSaveMigrator } from "#types/SettingsSaveMigrator"; -import type { SystemSaveMigrator } from "#types/SystemSaveMigrator"; +import type { SessionSaveMigrator } from "#types/session-save-migrator"; +import type { SettingsSaveMigrator } from "#types/settings-save-migrator"; +import type { SystemSaveMigrator } from "#types/system-save-migrator"; import { compareVersions } from "compare-versions"; /* @@ -49,11 +49,11 @@ export const settingsMigrators: readonly SettingsSaveMigrator[] = [settingsMigra // Add migrator imports below: // Example: import * as vA_B_C from "#system/vA_B_C"; -import * as v1_0_4 from "#system/v1_0_4"; -import * as v1_7_0 from "#system/v1_7_0"; -import * as v1_8_3 from "#system/v1_8_3"; -import * as v1_9_0 from "#system/v1_9_0"; -import * as v1_10_0 from "#system/v1_10_0"; +import * as v1_0_4 from "#system/version-migration/versions/v1_0_4"; +import * as v1_7_0 from "#system/version-migration/versions/v1_7_0"; +import * as v1_8_3 from "#system/version-migration/versions/v1_8_3"; +import * as v1_9_0 from "#system/version-migration/versions/v1_9_0"; +import * as v1_10_0 from "#system/version-migration/versions/v1_10_0"; /** Current game version */ const LATEST_VERSION = version; diff --git a/src/system/version_migration/versions/v1_0_4.ts b/src/system/version-migration/versions/v1_0_4.ts similarity index 97% rename from src/system/version_migration/versions/v1_0_4.ts rename to src/system/version-migration/versions/v1_0_4.ts index 3523a5b8826..2c50e05d40f 100644 --- a/src/system/version_migration/versions/v1_0_4.ts +++ b/src/system/version-migration/versions/v1_0_4.ts @@ -5,9 +5,9 @@ import { AbilityAttr } from "#enums/ability-attr"; import { DexAttr } from "#enums/dex-attr"; import type { SessionSaveData, SystemSaveData } from "#system/game-data"; import { SettingKeys } from "#system/settings"; -import type { SessionSaveMigrator } from "#types/SessionSaveMigrator"; -import type { SettingsSaveMigrator } from "#types/SettingsSaveMigrator"; -import type { SystemSaveMigrator } from "#types/SystemSaveMigrator"; +import type { SessionSaveMigrator } from "#types/session-save-migrator"; +import type { SettingsSaveMigrator } from "#types/settings-save-migrator"; +import type { SystemSaveMigrator } from "#types/system-save-migrator"; import { isNullOrUndefined } from "#utils/common"; /** diff --git a/src/system/version_migration/versions/v1_10_0.ts b/src/system/version-migration/versions/v1_10_0.ts similarity index 96% rename from src/system/version_migration/versions/v1_10_0.ts rename to src/system/version-migration/versions/v1_10_0.ts index 66436717639..5c13acd4508 100644 --- a/src/system/version_migration/versions/v1_10_0.ts +++ b/src/system/version-migration/versions/v1_10_0.ts @@ -3,7 +3,7 @@ import type { MoveId } from "#enums/move-id"; import type { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; import type { SessionSaveData } from "#system/game-data"; -import type { SessionSaveMigrator } from "#types/SessionSaveMigrator"; +import type { SessionSaveMigrator } from "#types/session-save-migrator"; import type { TurnMove } from "#types/turn-move"; /** Prior signature of `TurnMove`; used to ensure parity */ diff --git a/src/system/version_migration/versions/v1_7_0.ts b/src/system/version-migration/versions/v1_7_0.ts similarity index 91% rename from src/system/version_migration/versions/v1_7_0.ts rename to src/system/version-migration/versions/v1_7_0.ts index 8f757456d0a..69c640756ea 100644 --- a/src/system/version_migration/versions/v1_7_0.ts +++ b/src/system/version-migration/versions/v1_7_0.ts @@ -1,11 +1,10 @@ import { globalScene } from "#app/global-scene"; -import { getPokemonSpeciesForm } from "#data/pokemon-species"; import { DexAttr } from "#enums/dex-attr"; import type { SessionSaveData, SystemSaveData } from "#system/game-data"; -import type { SessionSaveMigrator } from "#types/SessionSaveMigrator"; -import type { SystemSaveMigrator } from "#types/SystemSaveMigrator"; +import type { SessionSaveMigrator } from "#types/session-save-migrator"; +import type { SystemSaveMigrator } from "#types/system-save-migrator"; import { isNullOrUndefined } from "#utils/common"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; /** * If a starter is caught, but the only forms registered as caught are not starterSelectable, diff --git a/src/system/version_migration/versions/v1_8_3.ts b/src/system/version-migration/versions/v1_8_3.ts similarity index 94% rename from src/system/version_migration/versions/v1_8_3.ts rename to src/system/version-migration/versions/v1_8_3.ts index e6b5129d9d5..4907b4e5e57 100644 --- a/src/system/version_migration/versions/v1_8_3.ts +++ b/src/system/version-migration/versions/v1_8_3.ts @@ -1,7 +1,7 @@ import { DexAttr } from "#enums/dex-attr"; import { SpeciesId } from "#enums/species-id"; import type { SystemSaveData } from "#system/game-data"; -import type { SystemSaveMigrator } from "#types/SystemSaveMigrator"; +import type { SystemSaveMigrator } from "#types/system-save-migrator"; import { getPokemonSpecies } from "#utils/pokemon-utils"; /** diff --git a/src/system/version_migration/versions/v1_9_0.ts b/src/system/version-migration/versions/v1_9_0.ts similarity index 95% rename from src/system/version_migration/versions/v1_9_0.ts rename to src/system/version-migration/versions/v1_9_0.ts index 80da5f2996b..fb24b9af837 100644 --- a/src/system/version_migration/versions/v1_9_0.ts +++ b/src/system/version-migration/versions/v1_9_0.ts @@ -2,7 +2,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonMove } from "#moves/pokemon-move"; import type { SessionSaveData } from "#system/game-data"; import type { PokemonData } from "#system/pokemon-data"; -import type { SessionSaveMigrator } from "#types/SessionSaveMigrator"; +import type { SessionSaveMigrator } from "#types/session-save-migrator"; /** * Migrate all lingering rage fist data inside `CustomPokemonData`, diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 02cb7fe8e0d..9877f298404 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -5,8 +5,9 @@ import { Challenges } from "#enums/challenges"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { WeatherType } from "#enums/weather-type"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import type { nil } from "#utils/common"; import { isNullOrUndefined } from "#utils/common"; import i18next from "i18next"; diff --git a/src/@types/i18next.d.ts b/src/typings/i18next.d.ts similarity index 70% rename from src/@types/i18next.d.ts rename to src/typings/i18next.d.ts index 0eaa1e6ff0f..1e1695f6b9a 100644 --- a/src/@types/i18next.d.ts +++ b/src/typings/i18next.d.ts @@ -3,6 +3,7 @@ import type { TOptions } from "i18next"; // Module declared to make referencing keys in the localization files type-safe. declare module "i18next" { interface TFunction { + // biome-ignore lint/style/useShorthandFunctionType: This needs to be an interface due to interface merging (key: string | string[], options?: TOptions & Record): string; } } diff --git a/src/typings/phaser/index.d.ts b/src/typings/phaser/index.d.ts index 26fbcff75bd..caddaedfc59 100644 --- a/src/typings/phaser/index.d.ts +++ b/src/typings/phaser/index.d.ts @@ -1,7 +1,7 @@ import "phaser"; declare module "phaser" { - namespace GameObjects { + namespace GameObjects { interface GameObject { width: number; @@ -16,45 +16,45 @@ declare module "phaser" { y: number; } - interface Container { + interface Container { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): this; - } - interface Sprite { + setPositionRelative(guideObject: any, x: number, y: number): this; + } + interface Sprite { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): this; - } - interface Image { + setPositionRelative(guideObject: any, x: number, y: number): this; + } + interface Image { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): this; - } - interface NineSlice { + setPositionRelative(guideObject: any, x: number, y: number): this; + } + interface NineSlice { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): this; - } - interface Text { + setPositionRelative(guideObject: any, x: number, y: number): this; + } + interface Text { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): this; - } - interface Rectangle { + setPositionRelative(guideObject: any, x: number, y: number): this; + } + interface Rectangle { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): this; - } - } + setPositionRelative(guideObject: any, x: number, y: number): this; + } + } - namespace Input { + namespace Input { namespace Gamepad { interface GamepadPlugin { /** diff --git a/src/ui/ability-bar.ts b/src/ui/ability-bar.ts index 79a68e9dce7..4b868d4e66c 100644 --- a/src/ui/ability-bar.ts +++ b/src/ui/ability-bar.ts @@ -1,5 +1,6 @@ import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; const barWidth = 118; diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts index d93ad8b7665..2fb0159b6ef 100644 --- a/src/ui/abstact-option-select-ui-handler.ts +++ b/src/ui/abstact-option-select-ui-handler.ts @@ -1,7 +1,8 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; -import { addBBCodeTextObject, getTextColor, getTextStyleOptions, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, getTextColor, getTextStyleOptions } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; import { fixedInt, rgbHexToRgba } from "#utils/common"; diff --git a/src/ui/achv-bar.ts b/src/ui/achv-bar.ts index 8e0f2a9404b..bb1ef95c9de 100644 --- a/src/ui/achv-bar.ts +++ b/src/ui/achv-bar.ts @@ -1,8 +1,9 @@ import { globalScene } from "#app/global-scene"; import type { PlayerGender } from "#enums/player-gender"; +import { TextStyle } from "#enums/text-style"; import { Achv, getAchievementDescription } from "#system/achv"; import { Voucher } from "#system/voucher"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; export class AchvBar extends Phaser.GameObjects.Container { private defaultWidth: number; diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index 6b247f6da96..01fd1d45a61 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; import { PlayerGender } from "#enums/player-gender"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; import type { Achv } from "#system/achv"; import { achvs, getAchievementDescription } from "#system/achv"; @@ -9,7 +10,7 @@ import type { Voucher } from "#system/voucher"; import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#system/voucher"; import { MessageUiHandler } from "#ui/message-ui-handler"; import { ScrollBar } from "#ui/scroll-bar"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/admin-ui-handler.ts b/src/ui/admin-ui-handler.ts index 3d0a1153127..e577368363d 100644 --- a/src/ui/admin-ui-handler.ts +++ b/src/ui/admin-ui-handler.ts @@ -1,12 +1,12 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { InputFieldConfig } from "#ui/form-modal-ui-handler"; import { FormModalUiHandler } from "#ui/form-modal-ui-handler"; import type { ModalConfig } from "#ui/modal-ui-handler"; -import { TextStyle } from "#ui/text"; -import { formatText } from "#utils/common"; +import { toTitleCase } from "#utils/strings"; type AdminUiHandlerService = "discord" | "google"; type AdminUiHandlerServiceMode = "Link" | "Unlink"; @@ -21,9 +21,9 @@ export class AdminUiHandler extends FormModalUiHandler { private readonly httpUserNotFoundErrorCode: number = 404; private readonly ERR_REQUIRED_FIELD = (field: string) => { if (field === "username") { - return `${formatText(field)} is required`; + return `${toTitleCase(field)} is required`; } - return `${formatText(field)} Id is required`; + return `${toTitleCase(field)} Id is required`; }; // returns a string saying whether a username has been successfully linked/unlinked to discord/google private readonly SUCCESS_SERVICE_MODE = (service: string, mode: string) => { diff --git a/src/ui/arena-flyout.ts b/src/ui/arena-flyout.ts index 43cc553d936..d2a45646690 100644 --- a/src/ui/arena-flyout.ts +++ b/src/ui/arena-flyout.ts @@ -3,6 +3,7 @@ import { ArenaTrapTag } from "#data/arena-tag"; import { TerrainType } from "#data/terrain"; import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagType } from "#enums/arena-tag-type"; +import { TextStyle } from "#enums/text-style"; import { WeatherType } from "#enums/weather-type"; import type { ArenaEvent } from "#events/arena"; import { @@ -14,10 +15,11 @@ import { } from "#events/arena"; import type { TurnEndEvent } from "#events/battle-scene"; import { BattleSceneEventType } from "#events/battle-scene"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { TimeOfDayWidget } from "#ui/time-of-day-widget"; import { addWindow, WindowVariant } from "#ui/ui-theme"; -import { fixedInt, formatText, toCamelCaseString } from "#utils/common"; +import { fixedInt } from "#utils/common"; +import { toCamelCase, toTitleCase } from "#utils/strings"; import type { ParseKeys } from "i18next"; import i18next from "i18next"; @@ -48,10 +50,10 @@ export function getFieldEffectText(arenaTagType: string): string { if (!arenaTagType || arenaTagType === ArenaTagType.NONE) { return arenaTagType; } - const effectName = toCamelCaseString(arenaTagType); + const effectName = toCamelCase(arenaTagType); const i18nKey = `arenaFlyout:${effectName}` as ParseKeys; const resultName = i18next.t(i18nKey); - return !resultName || resultName === i18nKey ? formatText(arenaTagType) : resultName; + return !resultName || resultName === i18nKey ? toTitleCase(arenaTagType) : resultName; } export class ArenaFlyout extends Phaser.GameObjects.Container { @@ -86,14 +88,14 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { private flyoutTextHeaderPlayer: Phaser.GameObjects.Text; /** The {@linkcode Phaser.GameObjects.Text} header used to indicate the enemy's effects */ private flyoutTextHeaderEnemy: Phaser.GameObjects.Text; - /** The {@linkcode Phaser.GameObjects.Text} header used to indicate neutral effects */ + /** The {@linkcode Phaser.GameObjects.Text} header used to indicate field effects */ private flyoutTextHeaderField: Phaser.GameObjects.Text; /** The {@linkcode Phaser.GameObjects.Text} used to indicate the player's effects */ private flyoutTextPlayer: Phaser.GameObjects.Text; /** The {@linkcode Phaser.GameObjects.Text} used to indicate the enemy's effects */ private flyoutTextEnemy: Phaser.GameObjects.Text; - /** The {@linkcode Phaser.GameObjects.Text} used to indicate neutral effects */ + /** The {@linkcode Phaser.GameObjects.Text} used to indicate field effects */ private flyoutTextField: Phaser.GameObjects.Text; /** Container for all field effects observed by this object */ @@ -163,7 +165,7 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { this.flyoutTextHeaderField = addTextObject( this.flyoutWidth / 2, 5, - i18next.t("arenaFlyout:neutral"), + i18next.t("arenaFlyout:field"), TextStyle.SUMMARY_GREEN, ); this.flyoutTextHeaderField.setFontSize(54); diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index bde340e3cf7..67beb0eba84 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -2,9 +2,10 @@ import { globalScene } from "#app/global-scene"; import { getPokeballName } from "#data/pokeball"; import { Button } from "#enums/buttons"; import { Command } from "#enums/command"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { CommandPhase } from "#phases/command-phase"; -import { addTextObject, getTextStyleOptions, TextStyle } from "#ui/text"; +import { addTextObject, getTextStyleOptions } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/base-stats-overlay.ts b/src/ui/base-stats-overlay.ts index 888b87a8d11..e3ba472475a 100644 --- a/src/ui/base-stats-overlay.ts +++ b/src/ui/base-stats-overlay.ts @@ -1,6 +1,7 @@ import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index 083dc7bbf19..0a67dc9ad37 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -2,12 +2,13 @@ import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import { BerryType } from "#enums/berry-type"; import { MoveId } from "#enums/move-id"; +import { TextStyle } from "#enums/text-style"; import { UiTheme } from "#enums/ui-theme"; import type { BerryUsedEvent, MoveUsedEvent } from "#events/battle-scene"; import { BattleSceneEventType } from "#events/battle-scene"; import type { EnemyPokemon, Pokemon } from "#field/pokemon"; import type { Move } from "#moves/move"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { fixedInt } from "#utils/common"; /** Container for info about a {@linkcode Move} */ diff --git a/src/ui/battle-info/battle-info.ts b/src/ui/battle-info/battle-info.ts index 4a2a6d1804d..0aedfbdf5e7 100644 --- a/src/ui/battle-info/battle-info.ts +++ b/src/ui/battle-info/battle-info.ts @@ -4,9 +4,10 @@ import { getTypeRgb } from "#data/type"; import { PokemonType } from "#enums/pokemon-type"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; +import { TextStyle } from "#enums/text-style"; import type { Pokemon } from "#field/pokemon"; import { getVariantTint } from "#sprites/variant"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { fixedInt, getLocalizedSpriteKey, getShinyDescriptor } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/battle-info/enemy-battle-info.ts b/src/ui/battle-info/enemy-battle-info.ts index 5799fb476ef..d426a49df5c 100644 --- a/src/ui/battle-info/enemy-battle-info.ts +++ b/src/ui/battle-info/enemy-battle-info.ts @@ -1,10 +1,11 @@ import { globalScene } from "#app/global-scene"; import { Stat } from "#enums/stat"; +import { TextStyle } from "#enums/text-style"; import type { EnemyPokemon } from "#field/pokemon"; import { BattleFlyout } from "#ui/battle-flyout"; import type { BattleInfoParamList } from "#ui/battle-info"; import { BattleInfo } from "#ui/battle-info"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import i18next from "i18next"; import type { GameObjects } from "phaser"; diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index bd524f0bb43..b58897b9022 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; import { getStatKey, PERMANENT_STATS } from "#enums/stat"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { MessageUiHandler } from "#ui/message-ui-handler"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; diff --git a/src/ui/bgm-bar.ts b/src/ui/bgm-bar.ts index d8b6bbe8b8a..e2c6925ec30 100644 --- a/src/ui/bgm-bar.ts +++ b/src/ui/bgm-bar.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "#ui/text"; -import { formatText } from "#utils/common"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; +import { toTitleCase } from "#utils/strings"; import i18next from "i18next"; const hiddenX = -150; @@ -100,7 +101,7 @@ export class BgmBar extends Phaser.GameObjects.Container { getRealBgmName(bgmName: string): string { return i18next.t([`bgmName:${bgmName}`, "bgmName:missing_entries"], { - name: formatText(bgmName), + name: toTitleCase(bgmName), }); } } diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts index ea3500d6c4c..239b963227b 100644 --- a/src/ui/candy-bar.ts +++ b/src/ui/candy-bar.ts @@ -1,7 +1,8 @@ import { globalScene } from "#app/global-scene"; import { starterColors } from "#app/global-vars/starter-colors"; import type { SpeciesId } from "#enums/species-id"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; import { rgbHexToRgba } from "#utils/common"; import { argbFromRgba } from "@material/material-color-utilities"; diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index a827cddc9a7..4a7ab7641a3 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -3,8 +3,9 @@ import type { Challenge } from "#data/challenge"; import { Button } from "#enums/buttons"; import { Challenges } from "#enums/challenges"; import { Color, ShadowColor } from "#enums/color"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; import { getLocalizedSpriteKey } from "#utils/common"; @@ -381,8 +382,7 @@ export class GameChallengesUiHandler extends UiHandler { this.cursorObj?.setVisible(true); this.updateChallengeArrows(this.startCursor.visible); } else { - globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.pushNew("TitlePhase"); + globalScene.phaseManager.toTitleScreen(); globalScene.phaseManager.getCurrentPhase()?.end(); } success = true; diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 2e4acfb7c42..41ff559062a 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -5,11 +5,12 @@ import { Button } from "#enums/buttons"; import { Command } from "#enums/command"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { TerastallizeAccessModifier } from "#modifiers/modifier"; import type { CommandPhase } from "#phases/command-phase"; import { PartyUiHandler, PartyUiMode } from "#ui/party-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import i18next from "i18next"; diff --git a/src/ui/daily-run-scoreboard.ts b/src/ui/daily-run-scoreboard.ts index dcd45b40390..9391d02859c 100644 --- a/src/ui/daily-run-scoreboard.ts +++ b/src/ui/daily-run-scoreboard.ts @@ -1,6 +1,7 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import { executeIf } from "#utils/common"; import { getEnumKeys } from "#utils/enums"; diff --git a/src/ui/dropdown.ts b/src/ui/dropdown.ts index 2a100ddbe59..c13d1ab6482 100644 --- a/src/ui/dropdown.ts +++ b/src/ui/dropdown.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import { ScrollBar } from "#ui/scroll-bar"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/egg-counter-container.ts b/src/ui/egg-counter-container.ts index ff536228fde..da394e73b28 100644 --- a/src/ui/egg-counter-container.ts +++ b/src/ui/egg-counter-container.ts @@ -1,8 +1,9 @@ import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import type { EggCountChangedEvent } from "#events/egg"; import { EggEventType } from "#events/egg"; import type { EggHatchSceneHandler } from "#ui/egg-hatch-scene-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; /** diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index 19d1efa75dd..5dcf05e2606 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -6,10 +6,11 @@ import { Egg, getLegendaryGachaSpeciesForTimestamp } from "#data/egg"; import { Button } from "#enums/buttons"; import { EggTier } from "#enums/egg-type"; import { GachaType } from "#enums/gacha-types"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { getVoucherTypeIcon, VoucherType } from "#system/voucher"; import { MessageUiHandler } from "#ui/message-ui-handler"; -import { addTextObject, getEggTierTextTint, getTextStyleOptions, TextStyle } from "#ui/text"; +import { addTextObject, getEggTierTextTint, getTextStyleOptions } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt, randSeedShuffle } from "#utils/common"; import { getEnumValues } from "#utils/enums"; @@ -74,7 +75,7 @@ export class EggGachaUiHandler extends MessageUiHandler { const gachaInfoContainer = globalScene.add.container(160, 46); const currentLanguage = i18next.resolvedLanguage ?? "en"; - let gachaTextStyle = TextStyle.WINDOW_ALT; + let gachaTextStyle: TextStyle = TextStyle.WINDOW_ALT; let gachaX = 4; let gachaY = 0; let pokemonIconX = -20; diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts index 94d6889ed48..42f969b9d38 100644 --- a/src/ui/egg-list-ui-handler.ts +++ b/src/ui/egg-list-ui-handler.ts @@ -1,11 +1,12 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { MessageUiHandler } from "#ui/message-ui-handler"; import { PokemonIconAnimHandler, PokemonIconAnimMode } from "#ui/pokemon-icon-anim-handler"; import { ScrollBar } from "#ui/scroll-bar"; import { ScrollableGridUiHandler } from "#ui/scrollable-grid-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts index 5ad4fc6fdf5..c22cf31faaa 100644 --- a/src/ui/evolution-scene-handler.ts +++ b/src/ui/evolution-scene-handler.ts @@ -1,8 +1,9 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { MessageUiHandler } from "#ui/message-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; export class EvolutionSceneHandler extends MessageUiHandler { public evolutionContainer: Phaser.GameObjects.Container; diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 9c08991e063..42f8cba5df4 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -4,15 +4,16 @@ import { getTypeDamageMultiplierColor } from "#data/type"; import { BattleType } from "#enums/battle-type"; import { Button } from "#enums/buttons"; import { Command } from "#enums/command"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { MoveUseMode } from "#enums/move-use-mode"; import { PokemonType } from "#enums/pokemon-type"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { EnemyPokemon, Pokemon } from "#field/pokemon"; import type { PokemonMove } from "#moves/pokemon-move"; import type { CommandPhase } from "#phases/command-phase"; import { MoveInfoOverlay } from "#ui/move-info-overlay"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { fixedInt, getLocalizedSpriteKey, padInt } from "#utils/common"; import i18next from "i18next"; @@ -284,7 +285,7 @@ export class FightUiHandler extends UiHandler implements InfoToggle { const ppColorStyle = FightUiHandler.ppRatioToColor(pp / maxPP); - //** Changes the text color and shadow according to the determined TextStyle */ + // Changes the text color and shadow according to the determined TextStyle this.ppText.setColor(this.getTextColor(ppColorStyle, false)).setShadowColor(this.getTextColor(ppColorStyle, true)); this.moveInfoOverlay.show(pokemonMove.getMove()); diff --git a/src/ui/filter-bar.ts b/src/ui/filter-bar.ts index 3961ae3415c..ea227655a97 100644 --- a/src/ui/filter-bar.ts +++ b/src/ui/filter-bar.ts @@ -1,10 +1,11 @@ import { globalScene } from "#app/global-scene"; import type { DropDownColumn } from "#enums/drop-down-column"; +import { TextStyle } from "#enums/text-style"; import type { UiTheme } from "#enums/ui-theme"; import type { DropDown } from "#ui/dropdown"; import { DropDownType } from "#ui/dropdown"; import type { StarterContainer } from "#ui/starter-container"; -import { addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addTextObject, getTextColor } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; export class FilterBar extends Phaser.GameObjects.Container { diff --git a/src/ui/filter-text.ts b/src/ui/filter-text.ts index 4a9012e44fc..ff7119dd778 100644 --- a/src/ui/filter-text.ts +++ b/src/ui/filter-text.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { UiTheme } from "#enums/ui-theme"; import type { AwaitableUiHandler } from "#ui/awaitable-ui-handler"; import type { StarterContainer } from "#ui/starter-container"; -import { addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addTextObject, getTextColor } from "#ui/text"; import type { UI } from "#ui/ui"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index 35965b09b80..203d98a86c7 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; import type { ModalConfig } from "#ui/modal-ui-handler"; import { ModalUiHandler } from "#ui/modal-ui-handler"; -import { addTextInputObject, addTextObject, TextStyle } from "#ui/text"; +import { addTextInputObject, addTextObject } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import { fixedInt } from "#utils/common"; import type InputText from "phaser3-rex-plugins/plugins/inputtext"; @@ -71,6 +72,10 @@ export abstract class FormModalUiHandler extends ModalUiHandler { (hasTitle ? 31 : 5) + 20 * (config.length - 1) + 16 + this.getButtonTopMargin(), "", TextStyle.TOOLTIP_CONTENT, + { + fontSize: "42px", + wordWrap: { width: 850 }, + }, ); this.errorMessage.setColor(this.getTextColor(TextStyle.SUMMARY_PINK)); this.errorMessage.setShadowColor(this.getTextColor(TextStyle.SUMMARY_PINK, true)); @@ -83,20 +88,28 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.inputs = []; this.formLabels = []; fieldsConfig.forEach((config, f) => { - const label = addTextObject(10, (hasTitle ? 31 : 5) + 20 * f, config.label, TextStyle.TOOLTIP_CONTENT); + // The Pokédex Scan Window uses width `300` instead of `160` like the other forms + // Therefore, the label does not need to be shortened + const label = addTextObject( + 10, + (hasTitle ? 31 : 5) + 20 * f, + config.label.length > 25 && this.getWidth() < 200 ? config.label.slice(0, 20) + "..." : config.label, + TextStyle.TOOLTIP_CONTENT, + ); label.name = "formLabel" + f; this.formLabels.push(label); this.modalContainer.add(this.formLabels[this.formLabels.length - 1]); - const inputContainer = globalScene.add.container(70, (hasTitle ? 28 : 2) + 20 * f); + const inputWidth = label.width < 320 ? 80 : 80 - (label.width - 320) / 5.5; + const inputContainer = globalScene.add.container(70 + (80 - inputWidth), (hasTitle ? 28 : 2) + 20 * f); inputContainer.setVisible(false); - const inputBg = addWindow(0, 0, 80, 16, false, false, 0, 0, WindowVariant.XTHIN); + const inputBg = addWindow(0, 0, inputWidth, 16, false, false, 0, 0, WindowVariant.XTHIN); const isPassword = config?.isPassword; const isReadOnly = config?.isReadOnly; - const input = addTextInputObject(4, -2, 440, 116, TextStyle.TOOLTIP_CONTENT, { + const input = addTextInputObject(4, -2, inputWidth * 5.5, 116, TextStyle.TOOLTIP_CONTENT, { type: isPassword ? "password" : "text", maxLength: isPassword ? 64 : 20, readOnly: isReadOnly, diff --git a/src/ui/game-stats-ui-handler.ts b/src/ui/game-stats-ui-handler.ts index f9087ba7dfa..ed66230bed7 100644 --- a/src/ui/game-stats-ui-handler.ts +++ b/src/ui/game-stats-ui-handler.ts @@ -2,13 +2,14 @@ import { globalScene } from "#app/global-scene"; import { speciesStarterCosts } from "#balance/starters"; import { Button } from "#enums/buttons"; import { DexAttr } from "#enums/dex-attr"; -import type { UiMode } from "#enums/ui-mode"; +import { TextStyle } from "#enums/text-style"; import { UiTheme } from "#enums/ui-theme"; import type { GameData } from "#system/game-data"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; -import { formatFancyLargeNumber, getPlayTimeString, toReadableString } from "#utils/common"; +import { formatFancyLargeNumber, getPlayTimeString } from "#utils/common"; +import { toTitleCase } from "#utils/strings"; import i18next from "i18next"; import Phaser from "phaser"; @@ -217,152 +218,207 @@ export class GameStatsUiHandler extends UiHandler { private gameStatsContainer: Phaser.GameObjects.Container; private statsContainer: Phaser.GameObjects.Container; - private statLabels: Phaser.GameObjects.Text[]; - private statValues: Phaser.GameObjects.Text[]; + /** The number of rows enabled per page. */ + private static readonly ROWS_PER_PAGE = 9; + + private statLabels: Phaser.GameObjects.Text[] = []; + private statValues: Phaser.GameObjects.Text[] = []; private arrowUp: Phaser.GameObjects.Sprite; private arrowDown: Phaser.GameObjects.Sprite; - constructor(mode: UiMode | null = null) { - super(mode); - - this.statLabels = []; - this.statValues = []; + /** Whether the UI is single column mode */ + private get singleCol(): boolean { + const resolvedLang = i18next.resolvedLanguage ?? "en"; + // NOTE TO TRANSLATION TEAM: Add more languages that want to display + // in a single-column inside of the `[]` (e.g. `["ru", "fr"]`) + return ["fr", "es-ES", "es-MX", "it", "ja", "pt-BR", "ru"].includes(resolvedLang); } + /** The number of columns used by this menu in the resolved language */ + private get columnCount(): 1 | 2 { + return this.singleCol ? 1 : 2; + } + + // #region Columnar-specific properties + + /** The with of each column in the stats view */ + private get colWidth(): number { + return (globalScene.scaledCanvas.width - 2) / this.columnCount; + } + + /** THe width of a column's background window */ + private get colBgWidth(): number { + return this.colWidth - 2; + } + + /** + * Calculate the `x` position of the stat label based on its index. + * + * @remarks + * Should be used for stat labels (e.g. stat name, not its value). For stat value, use {@linkcode calcTextX}. + * @param index - The index of the stat label + * @returns The `x` position for the stat label + */ + private calcLabelX(index: number): number { + if (this.singleCol || !(index & 1)) { + return 8; + } + return 8 + (index & 1 ? this.colBgWidth : 0); + } + + /** + * Calculate the `y` position of the stat label/text based on its index. + * @param index - The index of the stat label + * @returns The `y` position for the stat label + */ + private calcEntryY(index: number): number { + if (!this.singleCol) { + // Floor division by 2 as we want 1 to go to 0 + index >>= 1; + } + return 28 + index * 16; + } + + /** + * Calculate the `x` position of the stat value based on its index. + * @param index - The index of the stat value + * @returns The calculated `x` position + */ + private calcTextX(index: number): number { + if (this.singleCol || !(index & 1)) { + return this.colBgWidth - 8; + } + return this.colBgWidth * 2 - 8; + } + + /** The number of stats on screen at one time (varies with column count) */ + private get statsPerPage(): number { + return GameStatsUiHandler.ROWS_PER_PAGE * this.columnCount; + } + + // #endregion Columnar-specific properties setup() { const ui = this.getUi(); - this.gameStatsContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); + /** The scaled width of the global canvas */ + const sWidth = globalScene.scaledCanvas.width; + /** The scaled height of the global canvas */ + const sHeight = globalScene.scaledCanvas.height; + + const gameStatsContainer = globalScene.add.container(1, -sHeight + 1); + this.gameStatsContainer = gameStatsContainer; this.gameStatsContainer.setInteractive( - new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), + new Phaser.Geom.Rectangle(0, 0, sWidth, sHeight), Phaser.Geom.Rectangle.Contains, ); - const headerBg = addWindow(0, 0, globalScene.game.canvas.width / 6 - 2, 24); - headerBg.setOrigin(0, 0); + const headerBg = addWindow(0, 0, sWidth - 2, 24).setOrigin(0); - const headerText = addTextObject(0, 0, i18next.t("gameStatsUiHandler:stats"), TextStyle.HEADER_LABEL); - headerText.setOrigin(0, 0); - headerText.setPositionRelative(headerBg, 8, 4); + const headerText = addTextObject(0, 0, i18next.t("gameStatsUiHandler:stats"), TextStyle.HEADER_LABEL) + .setOrigin(0) + .setPositionRelative(headerBg, 8, 4); - const statsBgWidth = (globalScene.game.canvas.width / 6 - 2) / 2; - const [statsBgLeft, statsBgRight] = new Array(2).fill(null).map((_, i) => { - const width = statsBgWidth + 2; - const height = Math.floor(globalScene.game.canvas.height / 6 - headerBg.height - 2); - const statsBg = addWindow( - (statsBgWidth - 2) * i, - headerBg.height, - width, - height, - false, - false, - i > 0 ? -3 : 0, - 1, - ); - statsBg.setOrigin(0, 0); - return statsBg; - }); + this.gameStatsContainer.add([headerBg, headerText]); - this.statsContainer = globalScene.add.container(0, 0); + const colWidth = this.colWidth; - for (let i = 0; i < 18; i++) { - const statLabel = addTextObject( - 8 + (i % 2 === 1 ? statsBgWidth : 0), - 28 + Math.floor(i / 2) * 16, - "", - TextStyle.STATS_LABEL, - ); - statLabel.setOrigin(0, 0); - this.statsContainer.add(statLabel); - this.statLabels.push(statLabel); - - const statValue = addTextObject(statsBgWidth * ((i % 2) + 1) - 8, statLabel.y, "", TextStyle.STATS_VALUE); - statValue.setOrigin(1, 0); - this.statsContainer.add(statValue); - this.statValues.push(statValue); + { + const columnCount = this.columnCount; + const headerHeight = headerBg.height; + const statsBgHeight = Math.floor(globalScene.scaledCanvas.height - headerBg.height - 2); + const maskOffsetX = columnCount === 1 ? 0 : -3; + for (let i = 0; i < columnCount; i++) { + gameStatsContainer.add( + addWindow(i * this.colBgWidth, headerHeight, colWidth, statsBgHeight, false, false, maskOffsetX, 1, undefined) // formatting + .setOrigin(0), + ); + } } - this.gameStatsContainer.add(headerBg); - this.gameStatsContainer.add(headerText); - this.gameStatsContainer.add(statsBgLeft); - this.gameStatsContainer.add(statsBgRight); + const length = this.statsPerPage; + this.statLabels = Array.from({ length }, (_, i) => + addTextObject(this.calcLabelX(i), this.calcEntryY(i), "", TextStyle.STATS_LABEL).setOrigin(0), + ); + + this.statValues = Array.from({ length }, (_, i) => + addTextObject(this.calcTextX(i), this.calcEntryY(i), "", TextStyle.STATS_VALUE).setOrigin(1, 0), + ); + this.statsContainer = globalScene.add.container(0, 0, [...this.statLabels, ...this.statValues]); + this.gameStatsContainer.add(this.statsContainer); // arrows to show that we can scroll through the stats const isLegacyTheme = globalScene.uiTheme === UiTheme.LEGACY; - this.arrowDown = globalScene.add.sprite( - statsBgWidth, - globalScene.game.canvas.height / 6 - (isLegacyTheme ? 9 : 5), - "prompt", - ); - this.gameStatsContainer.add(this.arrowDown); - this.arrowUp = globalScene.add.sprite(statsBgWidth, headerBg.height + (isLegacyTheme ? 7 : 3), "prompt"); - this.arrowUp.flipY = true; - this.gameStatsContainer.add(this.arrowUp); + const arrowX = this.singleCol ? colWidth / 2 : colWidth; + this.arrowDown = globalScene.add.sprite(arrowX, sHeight - (isLegacyTheme ? 9 : 5), "prompt"); + + this.arrowUp = globalScene.add + .sprite(arrowX, headerBg.height + (isLegacyTheme ? 7 : 3), "prompt") // + .setFlipY(true); + + this.gameStatsContainer.add([this.arrowDown, this.arrowUp]); ui.add(this.gameStatsContainer); this.setCursor(0); - this.gameStatsContainer.setVisible(false); } show(args: any[]): boolean { super.show(args); + this.gameStatsContainer.setActive(true).setVisible(true); - this.setCursor(0); - - this.updateStats(); - - this.arrowUp.play("prompt"); - this.arrowDown.play("prompt"); + this.arrowUp.setActive(true).play("prompt").setVisible(false); + this.arrowDown.setActive(true).play("prompt"); + /* `setCursor` handles updating stats if the position is different from before. + When opening this UI, we want to update stats regardless of the prior position. */ + if (!this.setCursor(0)) { + this.updateStats(); + } if (globalScene.uiTheme === UiTheme.LEGACY) { this.arrowUp.setTint(0x484848); this.arrowDown.setTint(0x484848); } - this.updateArrows(); - - this.gameStatsContainer.setVisible(true); - - this.getUi().moveTo(this.gameStatsContainer, this.getUi().length - 1); - - this.getUi().hideTooltip(); + this.getUi() + .moveTo(this.gameStatsContainer, this.getUi().length - 1) + .hideTooltip(); return true; } - updateStats(): void { - const statKeys = Object.keys(displayStats).slice(this.cursor * 2, this.cursor * 2 + 18); + /** + * Update the stat labels and values to reflect the current cursor position. + * + * @remarks + * + * Invokes each stat's {@linkcode DisplayStat.sourceFunc | sourceFunc} to obtain its value. + * Stat labels are shown as `???` if the stat is marked as hidden and its value is zero. + */ + private updateStats(): void { + const perPage = this.statsPerPage; + const columns = this.columnCount; + const statKeys = Object.keys(displayStats).slice(this.cursor * columns, this.cursor * columns + perPage); statKeys.forEach((key, s) => { const stat = displayStats[key] as DisplayStat; - const value = stat.sourceFunc!(globalScene.gameData); // TODO: is this bang correct? + const value = stat.sourceFunc?.(globalScene.gameData) ?? "-"; + const valAsInt = Number.parseInt(value); this.statLabels[s].setText( - !stat.hidden || Number.isNaN(Number.parseInt(value)) || Number.parseInt(value) - ? i18next.t(`gameStatsUiHandler:${stat.label_key}`) - : "???", + !stat.hidden || Number.isNaN(value) || valAsInt ? i18next.t(`gameStatsUiHandler:${stat.label_key}`) : "???", ); this.statValues[s].setText(value); }); - if (statKeys.length < 18) { - for (let s = statKeys.length; s < 18; s++) { - this.statLabels[s].setText(""); - this.statValues[s].setText(""); - } + for (let s = statKeys.length; s < perPage; s++) { + this.statLabels[s].setText(""); + this.statValues[s].setText(""); } } - /** - * Show arrows at the top / bottom of the page if it's possible to scroll in that direction - */ - updateArrows(): void { - const showUpArrow = this.cursor > 0; - this.arrowUp.setVisible(showUpArrow); - - const showDownArrow = this.cursor < Math.ceil((Object.keys(displayStats).length - 18) / 2); - this.arrowDown.setVisible(showDownArrow); + /** The maximum cursor position */ + private get maxCursorPos(): number { + return Math.ceil((Object.keys(displayStats).length - this.statsPerPage) / this.columnCount); } processInput(button: Button): boolean { @@ -370,45 +426,59 @@ export class GameStatsUiHandler extends UiHandler { let success = false; - if (button === Button.CANCEL) { - success = true; - globalScene.ui.revertMode(); - } else { - switch (button) { - case Button.UP: - if (this.cursor) { - success = this.setCursor(this.cursor - 1); - } - break; - case Button.DOWN: - if (this.cursor < Math.ceil((Object.keys(displayStats).length - 18) / 2)) { - success = this.setCursor(this.cursor + 1); - } - break; - } + /** The direction to move the cursor (up/down) */ + let dir: 1 | -1 = 1; + switch (button) { + case Button.CANCEL: + success = true; + globalScene.ui.revertMode(); + break; + // biome-ignore lint/suspicious/noFallthroughSwitchClause: intentional + case Button.UP: + dir = -1; + case Button.DOWN: + success = this.setCursor(this.cursor + dir); } if (success) { ui.playSelect(); + return true; } - return success; + return false; } - setCursor(cursor: number): boolean { - const ret = super.setCursor(cursor); - - if (ret) { - this.updateStats(); - this.updateArrows(); + /** + * Set the cursor to the specified position, if able and update the stats display. + * + * @remarks + * + * If `newCursor` is not between `0` and {@linkcode maxCursorPos}, or if it is the same as {@linkcode newCursor} + * then no updates happen and `false` is returned. + * + * Otherwise, updates the up/down arrow visibility and calls {@linkcode updateStats} + * + * @param newCursor - The position to set the cursor to. + * @returns Whether the cursor successfully moved to a new position + */ + override setCursor(newCursor: number): boolean { + if (newCursor < 0 || newCursor > this.maxCursorPos || this.cursor === newCursor) { + return false; } - return ret; + this.cursor = newCursor; + + this.updateStats(); + // NOTE: Do not toggle the arrows' "active" property here, as this would cause their animations to desync + this.arrowUp.setVisible(this.cursor > 0); + this.arrowDown.setVisible(this.cursor < this.maxCursorPos); + + return true; } clear() { super.clear(); - this.gameStatsContainer.setVisible(false); + this.gameStatsContainer.setVisible(false).setActive(false); } } @@ -433,11 +503,9 @@ export function initStatsKeys() { sourceFunc: gameData => gameData.gameStats[key].toString(), }; } - if (!(displayStats[key] as DisplayStat).label_key) { + if (!displayStats[key].label_key) { const splittableKey = key.replace(/([a-z]{2,})([A-Z]{1}(?:[^A-Z]|$))/g, "$1_$2"); - (displayStats[key] as DisplayStat).label_key = toReadableString( - `${splittableKey[0].toUpperCase()}${splittableKey.slice(1)}`, - ); + displayStats[key].label_key = toTitleCase(splittableKey); } } } diff --git a/src/ui/loading-modal-ui-handler.ts b/src/ui/loading-modal-ui-handler.ts index 585d70d51db..de00d911c47 100644 --- a/src/ui/loading-modal-ui-handler.ts +++ b/src/ui/loading-modal-ui-handler.ts @@ -1,6 +1,7 @@ +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; import { ModalUiHandler } from "#ui/modal-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; export class LoadingModalUiHandler extends ModalUiHandler { diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index 417a9031bf7..524eaeece86 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -1,11 +1,12 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; import type { InputFieldConfig } from "#ui/form-modal-ui-handler"; import { FormModalUiHandler } from "#ui/form-modal-ui-handler"; import type { ModalConfig } from "#ui/modal-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 4e45dfedcb3..fa65cccab2f 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -5,13 +5,14 @@ import { bypassLogin } from "#app/global-vars/bypass-login"; import { handleTutorial, Tutorial } from "#app/tutorial"; import { Button } from "#enums/buttons"; import { GameDataType } from "#enums/game-data-type"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { OptionSelectConfig, OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; import { AdminMode, getAdminModeName } from "#ui/admin-ui-handler"; import type { AwaitableUiHandler } from "#ui/awaitable-ui-handler"; import { BgmBar } from "#ui/bgm-bar"; import { MessageUiHandler } from "#ui/message-ui-handler"; -import { addTextObject, getTextStyleOptions, TextStyle } from "#ui/text"; +import { addTextObject, getTextStyleOptions } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import { fixedInt, isLocal, sessionIdKey } from "#utils/common"; import { getCookie } from "#utils/cookies"; diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts index 844f7f43930..228d80968b9 100644 --- a/src/ui/modal-ui-handler.ts +++ b/src/ui/modal-ui-handler.ts @@ -1,7 +1,8 @@ import { globalScene } from "#app/global-scene"; import type { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow, WindowVariant } from "#ui/ui-theme"; @@ -151,7 +152,12 @@ export abstract class ModalUiHandler extends UiHandler { updateContainer(config?: ModalConfig): void { const [marginTop, marginRight, marginBottom, marginLeft] = this.getMargin(config); - const [width, height] = [this.getWidth(config), this.getHeight(config)]; + /** + * If the total amount of characters for the 2 buttons exceeds ~30 characters, + * the width in `registration-form-ui-handler.ts` and `login-form-ui-handler.ts` needs to be increased. + */ + const width = this.getWidth(config); + const height = this.getHeight(config); this.modalContainer.setPosition( (globalScene.game.canvas.width / 6 - (width + (marginRight - marginLeft))) / 2, (-globalScene.game.canvas.height / 6 - (height + (marginBottom - marginTop))) / 2, @@ -165,10 +171,14 @@ export abstract class ModalUiHandler extends UiHandler { this.titleText.setX(width / 2); this.titleText.setVisible(!!title); - for (let b = 0; b < this.buttonContainers.length; b++) { - const sliceWidth = width / (this.buttonContainers.length + 1); - - this.buttonContainers[b].setPosition(sliceWidth * (b + 1), this.modalBg.height - (this.buttonBgs[b].height + 8)); + if (this.buttonContainers.length > 0) { + const spacing = 12; + const totalWidth = this.buttonBgs.reduce((sum, bg) => sum + bg.width, 0) + spacing * (this.buttonBgs.length - 1); + let x = (this.modalBg.width - totalWidth) / 2; + this.buttonContainers.forEach((container, i) => { + container.setPosition(x + this.buttonBgs[i].width / 2, this.modalBg.height - (this.buttonBgs[i].height + 8)); + x += this.buttonBgs[i].width + spacing; + }); } } diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 264804eb627..16eecf6993d 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -6,13 +6,14 @@ import { getPokeballAtlasKey } from "#data/pokeball"; import { Button } from "#enums/buttons"; import type { PokeballType } from "#enums/pokeball"; import { ShopCursorTarget } from "#enums/shop-cursor-target"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { HealShopCostModifier, LockModifierTiersModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; import type { ModifierTypeOption } from "#modifiers/modifier-type"; import { getPlayerShopModifierTypeOptionsForWave, TmModifierType } from "#modifiers/modifier-type"; import { AwaitableUiHandler } from "#ui/awaitable-ui-handler"; import { MoveInfoOverlay } from "#ui/move-info-overlay"; -import { addTextObject, getModifierTierTextTint, getTextColor, getTextStyleOptions, TextStyle } from "#ui/text"; +import { addTextObject, getModifierTierTextTint, getTextColor, getTextStyleOptions } from "#ui/text"; import { formatMoney, NumberHolder } from "#utils/common"; import i18next from "i18next"; import Phaser from "phaser"; @@ -68,7 +69,7 @@ export class ModifierSelectUiHandler extends AwaitableUiHandler { if (context) { context.font = styleOptions.fontSize + "px " + styleOptions.fontFamily; - this.transferButtonWidth = context.measureText(i18next.t("modifierSelectUiHandler:transfer")).width; + this.transferButtonWidth = context.measureText(i18next.t("modifierSelectUiHandler:manageItems")).width; this.checkButtonWidth = context.measureText(i18next.t("modifierSelectUiHandler:checkTeam")).width; } @@ -80,7 +81,7 @@ export class ModifierSelectUiHandler extends AwaitableUiHandler { this.transferButtonContainer.setVisible(false); ui.add(this.transferButtonContainer); - const transferButtonText = addTextObject(-4, -2, i18next.t("modifierSelectUiHandler:transfer"), TextStyle.PARTY); + const transferButtonText = addTextObject(-4, -2, i18next.t("modifierSelectUiHandler:manageItems"), TextStyle.PARTY); transferButtonText.setName("text-transfer-btn"); transferButtonText.setOrigin(1, 0); this.transferButtonContainer.add(transferButtonText); @@ -273,12 +274,23 @@ export class ModifierSelectUiHandler extends AwaitableUiHandler { // causing errors if reroll is selected this.awaitingActionInput = false; - // TODO: Replace with `Promise.withResolvers` when possible. - let tweenResolve: () => void; - const tweenPromise = new Promise(resolve => (tweenResolve = resolve)); + const { promise: tweenPromise, resolve: tweenResolve } = Promise.withResolvers(); let i = 0; - // TODO: Rework this bespoke logic for animating the modifier options. + // #region: animation + /** Holds promises that resolve once each reward's *upgrade animation* has finished playing */ + const rewardAnimPromises: Promise[] = []; + /** Holds promises that resolves once *all* animations for a reward have finished playing */ + const rewardAnimAllSettledPromises: Promise[] = []; + + /* + * A counter here is used instead of a loop to "stagger" the apperance of each reward, + * using `sine.easeIn` to speed up the appearance of the rewards as each animation progresses. + * + * The `onComplete` callback for this tween is set to resolve once the upgrade animations + * for each reward has finished playing, allowing for the next set of animations to + * start to appear. + */ globalScene.tweens.addCounter({ ease: "Sine.easeIn", duration: 1250, @@ -288,30 +300,35 @@ export class ModifierSelectUiHandler extends AwaitableUiHandler { const index = Math.floor(value * typeOptions.length); if (index > i && index <= typeOptions.length) { const option = this.options[i]; - option?.show( - Math.floor((1 - value) * 1250) * 0.325 + 2000 * maxUpgradeCount, - -(maxUpgradeCount - typeOptions[i].upgradeCount), - ); + if (option) { + rewardAnimPromises.push( + option.show( + Math.floor((1 - value) * 1250) * 0.325 + 2000 * maxUpgradeCount, + -(maxUpgradeCount - typeOptions[i].upgradeCount), + rewardAnimAllSettledPromises, + ), + ); + } i++; } }, onComplete: () => { - tweenResolve(); + Promise.allSettled(rewardAnimPromises).then(() => tweenResolve()); }, }); - let shopResolve: () => void; - const shopPromise = new Promise(resolve => (shopResolve = resolve)); - tweenPromise.then(() => { - globalScene.time.delayedCall(1000, () => { - for (const shopOption of this.shopOptionsRows.flat()) { - shopOption.show(0, 0); - } - shopResolve(); - }); + /** Holds promises that resolve once each shop item has finished animating */ + const shopAnimPromises: Promise[] = []; + globalScene.time.delayedCall(1000 + maxUpgradeCount * 2000, () => { + for (const shopOption of this.shopOptionsRows.flat()) { + // It is safe to skip awaiting the `show` method here, + // as the promise it returns is also part of the promise appended to `shopAnimPromises`, + // which is awaited later on. + shopOption.show(0, 0, shopAnimPromises, false); + } }); - shopPromise.then(() => { + tweenPromise.then(() => { globalScene.time.delayedCall(500, () => { if (partyHasHeldItem) { this.transferButtonContainer.setAlpha(0); @@ -344,31 +361,39 @@ export class ModifierSelectUiHandler extends AwaitableUiHandler { duration: 250, }); - const updateCursorTarget = () => { - if (globalScene.shopCursorTarget === ShopCursorTarget.CHECK_TEAM) { - this.setRowCursor(0); - this.setCursor(2); - } else if (globalScene.shopCursorTarget === ShopCursorTarget.SHOP && globalScene.gameMode.hasNoShop) { - this.setRowCursor(ShopCursorTarget.REWARDS); - this.setCursor(0); - } else { - this.setRowCursor(globalScene.shopCursorTarget); - this.setCursor(0); - } - }; + // Ensure that the reward animations have completed before allowing input to proceed. + // Required to ensure that the user cannot interact with the UI before the animations + // have completed, (which, among other things, would allow the GameObjects to be destroyed + // before the animations have completed, causing errors). + Promise.allSettled([...shopAnimPromises, ...rewardAnimAllSettledPromises]).then(() => { + const updateCursorTarget = () => { + if (globalScene.shopCursorTarget === ShopCursorTarget.CHECK_TEAM) { + this.setRowCursor(0); + this.setCursor(2); + } else if (globalScene.shopCursorTarget === ShopCursorTarget.SHOP && globalScene.gameMode.hasNoShop) { + this.setRowCursor(ShopCursorTarget.REWARDS); + this.setCursor(0); + } else { + this.setRowCursor(globalScene.shopCursorTarget); + this.setCursor(0); + } + }; - updateCursorTarget(); + updateCursorTarget(); - handleTutorial(Tutorial.Select_Item).then(res => { - if (res) { - updateCursorTarget(); - } - this.awaitingActionInput = true; - this.onActionInput = args[2]; + handleTutorial(Tutorial.Select_Item).then(res => { + if (res) { + updateCursorTarget(); + } + this.awaitingActionInput = true; + this.onActionInput = args[2]; + }); }); }); }); + // #endregion: animation + return true; } @@ -576,7 +601,7 @@ export class ModifierSelectUiHandler extends AwaitableUiHandler { (globalScene.game.canvas.width - this.transferButtonWidth - this.checkButtonWidth) / 6 - 30, OPTION_BUTTON_YPOSITION + 4, ); - ui.showText(i18next.t("modifierSelectUiHandler:transferDesc")); + ui.showText(i18next.t("modifierSelectUiHandler:manageItemsDesc")); } else if (cursor === 2) { this.cursorObj.setPosition( (globalScene.game.canvas.width - this.checkButtonWidth) / 6 - 10, @@ -820,14 +845,45 @@ class ModifierOption extends Phaser.GameObjects.Container { } } - show(remainingDuration: number, upgradeCountOffset: number) { - if (!this.modifierTypeOption.cost) { + /** + * Start the tweens responsible for animating the option's appearance + * + * @privateremarks + * This method is unusual. It "returns" (one via the actual return, one by via appending to the `promiseHolder` + * parameter) two promises. The promise returned by the method resolves once the option's appearance animations have + * completed, and is meant to allow callers to synchronize with the completion of the option's appearance animations. + * The promise appended to `promiseHolder` resolves once *all* animations started by this method have completed, + * and should be used by callers to ensure that all animations have completed before proceeding. + * + * @param remainingDuration - The duration in milliseconds that the animation can play for + * @param upgradeCountOffset - The offset to apply to the upgrade count for options whose rarity is being upgraded + * @param promiseHolder - A promise that resolves once all tweens started by this method have completed will be pushed to this array. + * @param isReward - Whether the option being shown is a reward, meaning it should show pokeball and upgrade animations. + * @returns A promise that resolves once the *option's apperance animations* have completed. This promise will resolve _before_ all + * promises that are initiated in this method complete. Instead, the `promiseHolder` array will contain a new promise + * that will resolve once all animations have completed. + * + */ + async show( + remainingDuration: number, + upgradeCountOffset: number, + promiseHolder: Promise[], + isReward = true, + ): Promise { + /** Promises for the pokeball and upgrade animations */ + const animPromises: Promise[] = []; + if (isReward) { + const { promise: bouncePromise, resolve: resolveBounce } = Promise.withResolvers(); globalScene.tweens.add({ targets: this.pb, y: 0, duration: 1250, ease: "Bounce.Out", + onComplete: () => { + resolveBounce(); + }, }); + animPromises.push(bouncePromise); let lastValue = 1; let bounceCount = 0; @@ -857,7 +913,9 @@ class ModifierOption extends Phaser.GameObjects.Container { // TODO: Figure out proper delay between chains and then convert this into a single tween chain // rather than starting multiple tween chains. + for (let u = 0; u < this.modifierTypeOption.upgradeCount; u++) { + const { resolve, promise } = Promise.withResolvers(); globalScene.tweens.chain({ tweens: [ { @@ -883,65 +941,99 @@ class ModifierOption extends Phaser.GameObjects.Container { ease: "Sine.easeOut", onComplete: () => { this.pbTint.setVisible(false); + resolve(); }, }, ], }); + animPromises.push(promise); } } + const finalPromises: Promise[] = []; globalScene.time.delayedCall(remainingDuration + 2000, () => { - if (!globalScene) { - return; - } - - if (!this.modifierTypeOption.cost) { + if (isReward) { this.pb.setTexture("pb", `${this.getPbAtlasKey(0)}_open`); globalScene.playSound("se/pb_rel"); + const { resolve: pbResolve, promise: pbPromise } = Promise.withResolvers(); + globalScene.tweens.add({ targets: this.pb, duration: 500, - delay: 250, ease: "Sine.easeIn", alpha: 0, - onComplete: () => this.pb.destroy(), + onComplete: () => { + Promise.allSettled(animPromises).then(() => this.pb.destroy()); + pbResolve(); + }, }); + finalPromises.push(pbPromise); } + /** Delay for the rest of the tweens to ensure they show after the pokeball animation begins to appear */ + const delay = isReward ? 250 : 0; + + const { resolve: itemResolve, promise: itemPromise } = Promise.withResolvers(); globalScene.tweens.add({ targets: this.itemContainer, + delay, duration: 500, ease: "Elastic.Out", scale: 2, alpha: 1, + onComplete: () => { + itemResolve(); + }, }); - if (!this.modifierTypeOption.cost) { + finalPromises.push(itemPromise); + + if (isReward) { + const { resolve: itemTintResolve, promise: itemTintPromise } = Promise.withResolvers(); globalScene.tweens.add({ targets: this.itemTint, alpha: 0, + delay, duration: 500, ease: "Sine.easeIn", - onComplete: () => this.itemTint.destroy(), + onComplete: () => { + this.itemTint.destroy(); + itemTintResolve(); + }, }); + finalPromises.push(itemTintPromise); } + + const { resolve: itemTextResolve, promise: itemTextPromise } = Promise.withResolvers(); globalScene.tweens.add({ targets: this.itemText, + delay, duration: 500, alpha: 1, y: 25, ease: "Cubic.easeInOut", + onComplete: () => itemTextResolve(), }); + finalPromises.push(itemTextPromise); + if (this.itemCostText) { + const { resolve: itemCostResolve, promise: itemCostPromise } = Promise.withResolvers(); globalScene.tweens.add({ targets: this.itemCostText, + delay, duration: 500, alpha: 1, y: 35, ease: "Cubic.easeInOut", + onComplete: () => itemCostResolve(), }); + finalPromises.push(itemCostPromise); } }); + // The `.then` suppresses the return type for the Promise.allSettled so that it returns void. + promiseHolder.push(Promise.allSettled([...animPromises, ...finalPromises]).then()); + + await Promise.allSettled(animPromises); } getPbAtlasKey(tierOffset = 0) { diff --git a/src/ui/move-info-overlay.ts b/src/ui/move-info-overlay.ts index 1747021b7ec..f8632eb244e 100644 --- a/src/ui/move-info-overlay.ts +++ b/src/ui/move-info-overlay.ts @@ -1,9 +1,10 @@ import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { PokemonType } from "#enums/pokemon-type"; +import { TextStyle } from "#enums/text-style"; import type { Move } from "#moves/move"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt, getLocalizedSpriteKey } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/mystery-encounter-ui-handler.ts b/src/ui/mystery-encounter-ui-handler.ts index 37f0efb50e4..b6bc464855c 100644 --- a/src/ui/mystery-encounter-ui-handler.ts +++ b/src/ui/mystery-encounter-ui-handler.ts @@ -3,13 +3,14 @@ import { getPokeballAtlasKey } from "#data/pokeball"; import { Button } from "#enums/buttons"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { getEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; import type { OptionSelectSettings } from "#mystery-encounters/encounter-phase-utils"; import type { MysteryEncounterOption } from "#mystery-encounters/mystery-encounter-option"; import type { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { PartyUiMode } from "#ui/party-ui-handler"; -import { addBBCodeTextObject, getBBCodeFrag, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, getBBCodeFrag } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow, WindowVariant } from "#ui/ui-theme"; import { fixedInt, isNullOrUndefined } from "#utils/common"; diff --git a/src/ui/party-exp-bar.ts b/src/ui/party-exp-bar.ts index 0d6ec936a92..952a1f8227a 100644 --- a/src/ui/party-exp-bar.ts +++ b/src/ui/party-exp-bar.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import type { Pokemon } from "#field/pokemon"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; export class PartyExpBar extends Phaser.GameObjects.Container { diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index ce5f60813c7..0337e487200 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -13,6 +13,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { PlayerPokemon, Pokemon } from "#field/pokemon"; import type { PokemonFormChangeItemModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; @@ -23,9 +24,10 @@ import type { TurnMove } from "#types/turn-move"; import { MessageUiHandler } from "#ui/message-ui-handler"; import { MoveInfoOverlay } from "#ui/move-info-overlay"; import { PokemonIconAnimHandler, PokemonIconAnimMode } from "#ui/pokemon-icon-anim-handler"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; -import { BooleanHolder, getLocalizedSpriteKey, randInt, toReadableString } from "#utils/common"; +import { BooleanHolder, getLocalizedSpriteKey, randInt } from "#utils/common"; +import { toTitleCase } from "#utils/strings"; import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; @@ -101,6 +103,11 @@ export enum PartyUiMode { * This is generally used in for Mystery Encounter or special effects that require the player to select a Pokemon */ SELECT, + /** + * Indicates that the party UI is open to select a party member from which items will be discarded. + * This type of selection can be cancelled. + */ + DISCARD, } export enum PartyOption { @@ -119,6 +126,7 @@ export enum PartyOption { RELEASE, RENAME, SELECT, + DISCARD, SCROLL_UP = 1000, SCROLL_DOWN = 1001, FORM_CHANGE_ITEM = 2000, @@ -153,6 +161,7 @@ export class PartyUiHandler extends MessageUiHandler { private partySlotsContainer: Phaser.GameObjects.Container; private partySlots: PartySlot[]; private partyCancelButton: PartyCancelButton; + private partyDiscardModeButton: PartyDiscardModeButton; private partyMessageBox: Phaser.GameObjects.NineSlice; private moveInfoOverlay: MoveInfoOverlay; @@ -178,6 +187,8 @@ export class PartyUiHandler extends MessageUiHandler { private transferAll: boolean; private lastCursor = 0; + private lastLeftPokemonCursor = 0; + private lastRightPokemonCursor = 0; private selectCallback: PartySelectCallback | PartyModifierTransferSelectCallback | null; private selectFilter: PokemonSelectFilter | PokemonModifierTransferSelectFilter; private moveSelectFilter: PokemonMoveSelectFilter; @@ -306,6 +317,12 @@ export class PartyUiHandler extends MessageUiHandler { this.iconAnimHandler = new PokemonIconAnimHandler(); this.iconAnimHandler.setup(); + const partyDiscardModeButton = new PartyDiscardModeButton(60, -globalScene.game.canvas.height / 15 - 1, this); + + partyContainer.add(partyDiscardModeButton); + + this.partyDiscardModeButton = partyDiscardModeButton; + // prepare move overlay. in case it appears to be too big, set the overlayScale to .5 const overlayScale = 1; this.moveInfoOverlay = new MoveInfoOverlay({ @@ -347,8 +364,18 @@ export class PartyUiHandler extends MessageUiHandler { this.showMovePp = args.length > 6 && args[6]; this.partyContainer.setVisible(true); - this.partyBg.setTexture(`party_bg${globalScene.currentBattle.double ? "_double" : ""}`); + if (this.isItemManageMode()) { + this.partyBg.setTexture(`party_bg${globalScene.currentBattle.double ? "_double_manage" : ""}`); + } else { + this.partyBg.setTexture(`party_bg${globalScene.currentBattle.double ? "_double" : ""}`); + } + this.populatePartySlots(); + // If we are currently transferring items, set the icon to its proper state and reveal the button. + if (this.isItemManageMode()) { + this.partyDiscardModeButton.toggleIcon(this.partyUiMode as PartyUiMode.MODIFIER_TRANSFER | PartyUiMode.DISCARD); + } + this.showPartyText(); this.setCursor(0); return true; @@ -593,7 +620,7 @@ export class PartyUiHandler extends MessageUiHandler { const option = this.options[this.optionsCursor]; if (button === Button.LEFT) { /** Decrease quantity for the current item and update UI */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + if (this.isItemManageMode()) { this.transferQuantities[option] = this.transferQuantities[option] === 1 ? this.transferQuantitiesMax[option] @@ -607,7 +634,7 @@ export class PartyUiHandler extends MessageUiHandler { if (button === Button.RIGHT) { /** Increase quantity for the current item and update UI */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + if (this.isItemManageMode()) { this.transferQuantities[option] = this.transferQuantities[option] === this.transferQuantitiesMax[option] ? 1 @@ -637,6 +664,45 @@ export class PartyUiHandler extends MessageUiHandler { return success; } + private processDiscardMenuInput(pokemon: PlayerPokemon) { + const ui = this.getUi(); + const option = this.options[this.optionsCursor]; + this.clearOptions(); + + this.blockInput = true; + this.showText(i18next.t("partyUiHandler:discardConfirmation"), null, () => { + this.blockInput = false; + ui.setModeWithoutClear( + UiMode.CONFIRM, + () => { + ui.setMode(UiMode.PARTY); + this.doDiscard(option, pokemon); + }, + () => { + ui.setMode(UiMode.PARTY); + this.showPartyText(); + }, + ); + }); + + return true; + } + + private doDiscard(option: PartyOption, pokemon: PlayerPokemon) { + const itemModifiers = this.getTransferrableItemsFromPokemon(pokemon); + this.clearOptions(); + + if (option === PartyOption.ALL) { + // Discard all currently held items + for (let i = 0; i < itemModifiers.length; i++) { + globalScene.tryDiscardHeldItemModifier(itemModifiers[i], this.transferQuantities[i]); + } + } else { + // Discard the currently selected item + globalScene.tryDiscardHeldItemModifier(itemModifiers[option], this.transferQuantities[option]); + } + } + private moveOptionCursor(button: Button.UP | Button.DOWN): boolean { if (button === Button.UP) { return this.setCursor(this.optionsCursor ? this.optionsCursor - 1 : this.options.length - 1); @@ -723,6 +789,10 @@ export class PartyUiHandler extends MessageUiHandler { return this.processModifierTransferModeInput(pokemon); } + if (this.partyUiMode === PartyUiMode.DISCARD) { + return this.processDiscardMenuInput(pokemon); + } + // options specific to the mode (moves) if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { return this.processRememberMoveModeInput(pokemon); @@ -757,6 +827,11 @@ export class PartyUiHandler extends MessageUiHandler { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); } + // This is processed before the filter result since releasing does not depend on status. + if (option === PartyOption.RELEASE) { + return this.processReleaseOption(pokemon); + } + // If the pokemon is filtered out for this option, we cannot continue const filterResult = this.getFilterResult(option, pokemon); if (filterResult) { @@ -780,10 +855,6 @@ export class PartyUiHandler extends MessageUiHandler { // PartyUiMode.POST_BATTLE_SWITCH (SEND_OUT) // These are the options that need a callback - if (option === PartyOption.RELEASE) { - return this.processReleaseOption(pokemon); - } - if (this.partyUiMode === PartyUiMode.SPLICE) { if (option === PartyOption.SPLICE) { (this.selectCallback as PartyModifierSpliceSelectCallback)(this.transferCursor, this.cursor); @@ -862,7 +933,7 @@ export class PartyUiHandler extends MessageUiHandler { } if (button === Button.LEFT || button === Button.RIGHT) { - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + if (this.isItemManageMode()) { return this.processModifierTransferModeLeftRightInput(button); } } @@ -917,10 +988,22 @@ export class PartyUiHandler extends MessageUiHandler { return !(this.partyUiMode === PartyUiMode.FAINT_SWITCH || this.partyUiMode === PartyUiMode.REVIVAL_BLESSING); } + /** + * Return whether this UI handler is responsible for managing items. + * Used to ensure proper placement of mode toggle buttons in the UI, etc. + * @returns Whether the current handler is responsible for managing items. + */ + private isItemManageMode(): boolean { + return this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER || this.partyUiMode === PartyUiMode.DISCARD; + } + private processPartyActionInput(): boolean { const ui = this.getUi(); if (this.cursor < 6) { - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode) { + if ( + (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode) || + this.partyUiMode === PartyUiMode.DISCARD + ) { /** Initialize item quantities for the selected Pokemon */ const itemModifiers = globalScene.findModifiers( m => @@ -934,6 +1017,25 @@ export class PartyUiHandler extends MessageUiHandler { this.showOptions(); ui.playSelect(); } + + // Toggle item transfer mode to discard items or vice versa + if (this.cursor === 7) { + switch (this.partyUiMode) { + case PartyUiMode.DISCARD: + this.partyUiMode = PartyUiMode.MODIFIER_TRANSFER; + break; + case PartyUiMode.MODIFIER_TRANSFER: + this.partyUiMode = PartyUiMode.DISCARD; + break; + default: + ui.playError(); + return false; + } + this.partyDiscardModeButton.toggleIcon(this.partyUiMode); + ui.playSelect(); + return true; + } + // Pressing return button if (this.cursor === 6) { if (!this.allowCancel()) { @@ -954,6 +1056,7 @@ export class PartyUiHandler extends MessageUiHandler { this.clearTransfer(); ui.playSelect(); } else if (this.allowCancel()) { + this.partyDiscardModeButton.clear(); if (this.selectCallback) { const selectCallback = this.selectCallback; this.selectCallback = null; @@ -972,30 +1075,74 @@ export class PartyUiHandler extends MessageUiHandler { const slotCount = this.partySlots.length; const battlerCount = globalScene.currentBattle.getBattlerCount(); + if (this.lastCursor < battlerCount) { + this.lastLeftPokemonCursor = this.lastCursor; + } + if (this.lastCursor >= battlerCount && this.lastCursor < 6) { + this.lastRightPokemonCursor = this.lastCursor; + } + let success = false; switch (button) { + // Item manage mode adds an extra 8th "toggle mode" button to the UI, located *below* both active party members. + // The following logic serves to ensure its menu behaviour matches its in-game position, + // being selected when scrolling up from the first inactive party member or down from the last active one. case Button.UP: + if (this.isItemManageMode()) { + if (this.cursor === 1) { + success = this.setCursor(globalScene.currentBattle.double ? 0 : 7); + break; + } + if (this.cursor === 2) { + success = this.setCursor(globalScene.currentBattle.double ? 7 : 1); + break; + } + if (this.cursor === 6) { + success = this.setCursor(slotCount <= globalScene.currentBattle.getBattlerCount() ? 7 : slotCount - 1); + break; + } + if (this.cursor === 7) { + success = this.setCursor(globalScene.currentBattle.double && slotCount > 1 ? 1 : 0); + break; + } + } success = this.setCursor(this.cursor ? (this.cursor < 6 ? this.cursor - 1 : slotCount - 1) : 6); break; case Button.DOWN: + if (this.isItemManageMode()) { + if (this.cursor === 0) { + success = this.setCursor(globalScene.currentBattle.double && slotCount > 1 ? 1 : 7); + break; + } + if (this.cursor === 1) { + success = this.setCursor(globalScene.currentBattle.double ? 7 : slotCount > 2 ? 2 : 6); + break; + } + if (this.cursor === 7) { + success = this.setCursor( + slotCount > globalScene.currentBattle.getBattlerCount() ? globalScene.currentBattle.getBattlerCount() : 6, + ); + break; + } + } success = this.setCursor(this.cursor < 6 ? (this.cursor < slotCount - 1 ? this.cursor + 1 : 6) : 0); break; case Button.LEFT: - if (this.cursor >= battlerCount && this.cursor <= 6) { - success = this.setCursor(0); + if (this.cursor === 6) { + success = this.setCursor(this.isItemManageMode() ? 7 : this.lastLeftPokemonCursor); + } + if (this.cursor >= battlerCount && this.cursor < 6) { + success = this.setCursor(this.lastLeftPokemonCursor); } break; case Button.RIGHT: - if (slotCount === battlerCount) { + // Scrolling right from item transfer button or with no backup party members goes to cancel + if (this.cursor === 7 || slotCount <= battlerCount) { success = this.setCursor(6); break; } - if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1) { - success = this.setCursor(2); - break; - } - if (slotCount > battlerCount && this.cursor < battlerCount) { - success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); + if (this.cursor < battlerCount) { + success = this.setCursor(this.lastRightPokemonCursor || battlerCount); break; } } @@ -1042,11 +1189,15 @@ export class PartyUiHandler extends MessageUiHandler { this.partySlots[this.lastCursor].deselect(); } else if (this.lastCursor === 6) { this.partyCancelButton.deselect(); + } else if (this.lastCursor === 7) { + this.partyDiscardModeButton.deselect(); } if (cursor < 6) { this.partySlots[cursor].select(); } else if (cursor === 6) { this.partyCancelButton.select(); + } else if (cursor === 7) { + this.partyDiscardModeButton.select(); } } return changed; @@ -1141,14 +1292,16 @@ export class PartyUiHandler extends MessageUiHandler { optionsMessage = i18next.t("partyUiHandler:selectAnotherPokemonToSplice"); } break; + case PartyUiMode.DISCARD: + optionsMessage = i18next.t("partyUiHandler:changeQuantityDiscard"); } this.showText(optionsMessage, 0); this.updateOptions(); - /** When an item is being selected for transfer, the message box is taller as the message occupies two lines */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + /** When an item is being selected for transfer or discard, the message box is taller as the message occupies two lines */ + if (this.isItemManageMode()) { this.partyMessageBox.setSize(262 - Math.max(this.optionsBg.displayWidth - 56, 0), 42); } else { this.partyMessageBox.setSize(262 - Math.max(this.optionsBg.displayWidth - 56, 0), 30); @@ -1157,6 +1310,20 @@ export class PartyUiHandler extends MessageUiHandler { this.setCursor(0); } + showPartyText() { + switch (this.partyUiMode) { + case PartyUiMode.MODIFIER_TRANSFER: + this.showText(i18next.t("partyUiHandler:partyTransfer")); + break; + case PartyUiMode.DISCARD: + this.showText(i18next.t("partyUiHandler:partyDiscard")); + break; + default: + this.showText("", 0); + break; + } + } + private allowBatonModifierSwitch(): boolean { return !!( this.partyUiMode !== PartyUiMode.FAINT_SWITCH && @@ -1274,6 +1441,9 @@ export class PartyUiHandler extends MessageUiHandler { this.addCommonOptions(pokemon); } break; + case PartyUiMode.DISCARD: + this.updateOptionsWithModifierTransferMode(pokemon); + break; // TODO: This still needs to be broken up. // It could use a rework differentiating different kind of switches // to treat baton passing separately from switching on faint. @@ -1379,7 +1549,8 @@ export class PartyUiHandler extends MessageUiHandler { optionName = "↓"; } else if ( (this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER && - (this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER || this.transferMode)) || + (this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER || this.transferMode) && + this.partyUiMode !== PartyUiMode.DISCARD) || option === PartyOption.CANCEL ) { switch (option) { @@ -1408,7 +1579,7 @@ export class PartyUiHandler extends MessageUiHandler { if (this.localizedOptions.includes(option)) { optionName = i18next.t(`partyUiHandler:${PartyOption[option]}`); } else { - optionName = toReadableString(PartyOption[option]); + optionName = toTitleCase(PartyOption[option]); } } break; @@ -1442,7 +1613,7 @@ export class PartyUiHandler extends MessageUiHandler { const itemModifiers = this.getItemModifiers(pokemon); const itemModifier = itemModifiers[option]; if ( - this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && + this.isItemManageMode() && this.transferQuantitiesMax[option] > 1 && !this.transferMode && itemModifier !== undefined && @@ -1472,7 +1643,6 @@ export class PartyUiHandler extends MessageUiHandler { optionText.x = 15 - this.optionsBg.width; } } - startTransfer(): void { this.transferMode = true; this.transferCursor = this.cursor; @@ -1606,7 +1776,7 @@ export class PartyUiHandler extends MessageUiHandler { this.eraseOptionsCursor(); this.partyMessageBox.setSize(262, 30); - this.showText("", 0); + this.showPartyText(); } eraseOptionsCursor() { @@ -1661,7 +1831,9 @@ class PartySlot extends Phaser.GameObjects.Container { ? -184 + (globalScene.currentBattle.double ? -40 : 0) + (28 + (globalScene.currentBattle.double ? 8 : 0)) * slotIndex - : -124 + (globalScene.currentBattle.double ? -8 : 0) + slotIndex * 64, + : partyUiMode === PartyUiMode.MODIFIER_TRANSFER + ? -124 + (globalScene.currentBattle.double ? -20 : 0) + slotIndex * 55 + : -124 + (globalScene.currentBattle.double ? -8 : 0) + slotIndex * 64, ); this.slotIndex = slotIndex; @@ -1791,17 +1963,16 @@ class PartySlot extends Phaser.GameObjects.Container { const shinyStar = globalScene.add.image(0, 0, `shiny_star_small${doubleShiny ? "_1" : ""}`); shinyStar.setOrigin(0, 0); shinyStar.setPositionRelative(this.slotName, -9, 3); - shinyStar.setTint(getVariantTint(this.pokemon.getBaseVariant(doubleShiny))); + shinyStar.setTint(getVariantTint(this.pokemon.getBaseVariant())); slotInfoContainer.add(shinyStar); if (doubleShiny) { - const fusionShinyStar = globalScene.add.image(0, 0, "shiny_star_small_2"); - fusionShinyStar.setOrigin(0, 0); - fusionShinyStar.setPosition(shinyStar.x, shinyStar.y); - fusionShinyStar.setTint( - getVariantTint(this.pokemon.summonData.illusion?.basePokemon.fusionVariant ?? this.pokemon.fusionVariant), - ); + const fusionShinyStar = globalScene.add + .image(0, 0, "shiny_star_small_2") + .setOrigin(0) + .setPosition(shinyStar.x, shinyStar.y) + .setTint(getVariantTint(this.pokemon.fusionVariant)); slotInfoContainer.add(fusionShinyStar); } @@ -1917,7 +2088,6 @@ class PartySlot extends Phaser.GameObjects.Container { class PartyCancelButton extends Phaser.GameObjects.Container { private selected: boolean; - private partyCancelBg: Phaser.GameObjects.Sprite; private partyCancelPb: Phaser.GameObjects.Sprite; @@ -1964,3 +2134,96 @@ class PartyCancelButton extends Phaser.GameObjects.Container { this.partyCancelPb.setFrame("party_pb"); } } + +class PartyDiscardModeButton extends Phaser.GameObjects.Container { + private selected: boolean; + private transferIcon: Phaser.GameObjects.Sprite; + private discardIcon: Phaser.GameObjects.Sprite; + private textBox: Phaser.GameObjects.Text; + private party: PartyUiHandler; + + constructor(x: number, y: number, party: PartyUiHandler) { + super(globalScene, x, y); + + this.setup(party); + } + + setup(party: PartyUiHandler) { + this.transferIcon = globalScene.add.sprite(0, 0, "party_transfer"); + this.discardIcon = globalScene.add.sprite(0, 0, "party_discard"); + this.textBox = addTextObject(-8, -7, i18next.t("partyUiHandler:TRANSFER"), TextStyle.PARTY); + this.party = party; + + this.add(this.transferIcon); + this.add(this.discardIcon); + this.add(this.textBox); + + this.clear(); + } + + select() { + if (this.selected) { + return; + } + + this.selected = true; + + this.party.showText(i18next.t("partyUiHandler:changeMode")); + + this.transferIcon.setFrame("selected"); + this.discardIcon.setFrame("selected"); + } + + deselect() { + if (!this.selected) { + return; + } + + this.selected = false; + this.party.showPartyText(); + + this.transferIcon.setFrame("normal"); + this.discardIcon.setFrame("normal"); + } + + /** + * If the current mode deals with transferring items, toggle the discard items button's name and assets. + * @param partyMode - The current {@linkcode PartyUiMode} + * @remarks + * This will also reveal the button if it is currently hidden. + */ + public toggleIcon(partyMode: PartyUiMode.MODIFIER_TRANSFER | PartyUiMode.DISCARD): void { + this.setActive(true).setVisible(true); + switch (partyMode) { + case PartyUiMode.MODIFIER_TRANSFER: + this.transferIcon.setVisible(true); + this.discardIcon.setVisible(false); + this.textBox.setVisible(true); + this.textBox.setText(i18next.t("partyUiHandler:TRANSFER")); + this.setPosition( + globalScene.currentBattle.double ? 64 : 60, + globalScene.currentBattle.double ? -48 : -globalScene.game.canvas.height / 15 - 1, + ); + this.transferIcon.displayWidth = this.textBox.text.length * 9 + 3; + break; + case PartyUiMode.DISCARD: + this.transferIcon.setVisible(false); + this.discardIcon.setVisible(true); + this.textBox.setVisible(true); + this.textBox.setText(i18next.t("partyUiHandler:DISCARD")); + this.setPosition( + globalScene.currentBattle.double ? 64 : 60, + globalScene.currentBattle.double ? -48 : -globalScene.game.canvas.height / 15 - 1, + ); + this.discardIcon.displayWidth = this.textBox.text.length * 9 + 3; + break; + } + } + + clear() { + this.setActive(false).setVisible(false); + this.transferIcon.setVisible(false); + this.discardIcon.setVisible(false); + this.textBox.setVisible(false); + } +} diff --git a/src/ui/pokedex-info-overlay.ts b/src/ui/pokedex-info-overlay.ts index 6d3b8f1009f..0f2f5fa3dde 100644 --- a/src/ui/pokedex-info-overlay.ts +++ b/src/ui/pokedex-info-overlay.ts @@ -1,6 +1,7 @@ import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt } from "#utils/common"; diff --git a/src/ui/pokedex-mon-container.ts b/src/ui/pokedex-mon-container.ts index 73799870e6b..cfb8555e6c9 100644 --- a/src/ui/pokedex-mon-container.ts +++ b/src/ui/pokedex-mon-container.ts @@ -1,7 +1,8 @@ import { globalScene } from "#app/global-scene"; import type { PokemonSpecies } from "#data/pokemon-species"; +import { TextStyle } from "#enums/text-style"; import type { Variant } from "#sprites/variant"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { isNullOrUndefined } from "#utils/common"; interface SpeciesDetails { diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index ff96aa55772..227b86c4d4d 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -25,7 +25,7 @@ import { getNatureName } from "#data/nature"; import type { SpeciesFormChange } from "#data/pokemon-forms"; import { pokemonFormChanges } from "#data/pokemon-forms"; import type { PokemonSpecies } from "#data/pokemon-species"; -import { getPokemonSpeciesForm, normalForm } from "#data/pokemon-species"; +import { normalForm } from "#data/pokemon-species"; import { AbilityAttr } from "#enums/ability-attr"; import type { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; @@ -38,6 +38,7 @@ import type { Nature } from "#enums/nature"; import { Passive as PassiveAttr } from "#enums/passive"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { TimeOfDay } from "#enums/time-of-day"; import { UiMode } from "#enums/ui-mode"; import type { Variant } from "#sprites/variant"; @@ -51,18 +52,12 @@ import { MessageUiHandler } from "#ui/message-ui-handler"; import { MoveInfoOverlay } from "#ui/move-info-overlay"; import { PokedexInfoOverlay } from "#ui/pokedex-info-overlay"; import { StatsContainer } from "#ui/stats-container"; -import { addBBCodeTextObject, addTextObject, getTextColor, getTextStyleOptions, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject, getTextColor, getTextStyleOptions } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; -import { - BooleanHolder, - getLocalizedSpriteKey, - isNullOrUndefined, - padInt, - rgbHexToRgba, - toReadableString, -} from "#utils/common"; +import { BooleanHolder, getLocalizedSpriteKey, isNullOrUndefined, padInt, rgbHexToRgba } from "#utils/common"; import { getEnumValues } from "#utils/enums"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; +import { toTitleCase } from "#utils/strings"; import { argbFromRgba } from "@material/material-color-utilities"; import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; @@ -2619,7 +2614,7 @@ export class PokedexPageUiHandler extends MessageUiHandler { // Setting growth rate text if (isFormCaught) { - let growthReadable = toReadableString(GrowthRate[species.growthRate]); + let growthReadable = toTitleCase(GrowthRate[species.growthRate]); const growthAux = growthReadable.replace(" ", "_"); if (i18next.exists("growth:" + growthAux)) { growthReadable = i18next.t(("growth:" + growthAux) as any); diff --git a/src/ui/pokedex-scan-ui-handler.ts b/src/ui/pokedex-scan-ui-handler.ts index bcf869f6f39..ab3258a03de 100644 --- a/src/ui/pokedex-scan-ui-handler.ts +++ b/src/ui/pokedex-scan-ui-handler.ts @@ -158,8 +158,11 @@ export class PokedexScanUiHandler extends FormModalUiHandler { if (super.show(args)) { const config = args[0] as ModalConfig; - this.inputs[0].resize(1150, 116); - this.inputContainers[0].list[0].width = 200; + const label = this.formLabels[0]; + + const inputWidth = label.width < 420 ? 200 : 200 - (label.width - 420) / 5.75; + this.inputs[0].resize(inputWidth * 5.75, 116); + this.inputContainers[0].list[0].width = inputWidth; if (args[1] && typeof (args[1] as PlayerPokemon).getNameToRender === "function") { this.inputs[0].text = (args[1] as PlayerPokemon).getNameToRender(); } else { diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index c2f595cb190..cd1dc312f4d 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -15,7 +15,7 @@ import { import { speciesTmMoves } from "#balance/tms"; import { allAbilities, allMoves, allSpecies } from "#data/data-lists"; import type { PokemonForm, PokemonSpecies } from "#data/pokemon-species"; -import { getPokemonSpeciesForm, getPokerusStarters, normalForm } from "#data/pokemon-species"; +import { normalForm } from "#data/pokemon-species"; import { AbilityAttr } from "#enums/ability-attr"; import { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; @@ -26,6 +26,7 @@ import type { Nature } from "#enums/nature"; import { Passive as PassiveAttr } from "#enums/passive"; import { PokemonType } from "#enums/pokemon-type"; import type { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { Variant } from "#sprites/variant"; import { getVariantIcon, getVariantTint } from "#sprites/variant"; @@ -40,11 +41,12 @@ import { MessageUiHandler } from "#ui/message-ui-handler"; import { PokedexMonContainer } from "#ui/pokedex-mon-container"; import { PokemonIconAnimHandler, PokemonIconAnimMode } from "#ui/pokemon-icon-anim-handler"; import { ScrollBar } from "#ui/scroll-bar"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { BooleanHolder, fixedInt, getLocalizedSpriteKey, padInt, randIntRange, rgbHexToRgba } from "#utils/common"; import type { StarterPreferences } from "#utils/data"; import { loadStarterPreferences } from "#utils/data"; +import { getPokemonSpeciesForm, getPokerusStarters } from "#utils/pokemon-utils"; import { argbFromRgba } from "@material/material-color-utilities"; import i18next from "i18next"; diff --git a/src/ui/pokemon-hatch-info-container.ts b/src/ui/pokemon-hatch-info-container.ts index 8bcd62316cd..bb1cc22e9fd 100644 --- a/src/ui/pokemon-hatch-info-container.ts +++ b/src/ui/pokemon-hatch-info-container.ts @@ -5,13 +5,14 @@ import { allMoves } from "#data/data-lists"; import { getEggTierForSpecies } from "#data/egg"; import type { EggHatchData } from "#data/egg-hatch-data"; import { Gender } from "#data/gender"; -import { getPokemonSpeciesForm } from "#data/pokemon-species"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import type { PlayerPokemon } from "#field/pokemon"; import { PokemonInfoContainer } from "#ui/pokemon-info-container"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { padInt, rgbHexToRgba } from "#utils/common"; +import { getPokemonSpeciesForm } from "#utils/pokemon-utils"; import { argbFromRgba } from "@material/material-color-utilities"; /** diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index c95f412c834..3b2349348a8 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -3,13 +3,14 @@ import { Gender, getGenderColor, getGenderSymbol } from "#data/gender"; import { getNatureName } from "#data/nature"; import { DexAttr } from "#enums/dex-attr"; import { PokemonType } from "#enums/pokemon-type"; +import { TextStyle } from "#enums/text-style"; import type { Pokemon } from "#field/pokemon"; import { getVariantTint } from "#sprites/variant"; import type { StarterDataEntry } from "#system/game-data"; import type { DexEntry } from "#types/dex-data"; import { ConfirmUiHandler } from "#ui/confirm-ui-handler"; import { StatsContainer } from "#ui/stats-container"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt, getShinyDescriptor } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/registration-form-ui-handler.ts b/src/ui/registration-form-ui-handler.ts index 2466603af71..2c8080d534d 100644 --- a/src/ui/registration-form-ui-handler.ts +++ b/src/ui/registration-form-ui-handler.ts @@ -1,25 +1,13 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { InputFieldConfig } from "#ui/form-modal-ui-handler"; import { FormModalUiHandler } from "#ui/form-modal-ui-handler"; import type { ModalConfig } from "#ui/modal-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; -interface LanguageSetting { - inputFieldFontSize?: string; - warningMessageFontSize?: string; - errorMessageFontSize?: string; -} - -const languageSettings: { [key: string]: LanguageSetting } = { - "es-ES": { - inputFieldFontSize: "50px", - errorMessageFontSize: "40px", - }, -}; - export class RegistrationFormUiHandler extends FormModalUiHandler { getModalTitle(_config?: ModalConfig): string { return i18next.t("menu:register"); @@ -34,7 +22,7 @@ export class RegistrationFormUiHandler extends FormModalUiHandler { } getButtonTopMargin(): number { - return 8; + return 12; } getButtonLabels(_config?: ModalConfig): string[] { @@ -75,18 +63,9 @@ export class RegistrationFormUiHandler extends FormModalUiHandler { setup(): void { super.setup(); - this.modalContainer.list.forEach((child: Phaser.GameObjects.GameObject) => { - if (child instanceof Phaser.GameObjects.Text && child !== this.titleText) { - const inputFieldFontSize = languageSettings[i18next.resolvedLanguage!]?.inputFieldFontSize; - if (inputFieldFontSize) { - child.setFontSize(inputFieldFontSize); - } - } - }); - - const warningMessageFontSize = languageSettings[i18next.resolvedLanguage!]?.warningMessageFontSize ?? "42px"; const label = addTextObject(10, 87, i18next.t("menu:registrationAgeWarning"), TextStyle.TOOLTIP_CONTENT, { - fontSize: warningMessageFontSize, + fontSize: "42px", + wordWrap: { width: 850 }, }); this.modalContainer.add(label); @@ -106,10 +85,6 @@ export class RegistrationFormUiHandler extends FormModalUiHandler { const onFail = error => { globalScene.ui.setMode(UiMode.REGISTRATION_FORM, Object.assign(config, { errorMessage: error?.trim() })); globalScene.ui.playError(); - const errorMessageFontSize = languageSettings[i18next.resolvedLanguage!]?.errorMessageFontSize; - if (errorMessageFontSize) { - this.errorMessage.setFontSize(errorMessageFontSize); - } }; if (!this.inputs[0].text) { return onFail(i18next.t("menu:emptyUsername")); diff --git a/src/ui/run-history-ui-handler.ts b/src/ui/run-history-ui-handler.ts index f810468aea1..00aa47ae65d 100644 --- a/src/ui/run-history-ui-handler.ts +++ b/src/ui/run-history-ui-handler.ts @@ -3,13 +3,14 @@ import { BattleType } from "#enums/battle-type"; import { Button } from "#enums/buttons"; import { GameModes } from "#enums/game-modes"; import { PlayerGender } from "#enums/player-gender"; +import { TextStyle } from "#enums/text-style"; import { TrainerVariant } from "#enums/trainer-variant"; import { UiMode } from "#enums/ui-mode"; import type { RunEntry } from "#system/game-data"; import type { PokemonData } from "#system/pokemon-data"; import { MessageUiHandler } from "#ui/message-ui-handler"; import { RunDisplayMode } from "#ui/run-info-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt, formatLargeNumber } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index 9284dc5d92c..2a4d312283d 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -12,6 +12,7 @@ import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PlayerGender } from "#enums/player-gender"; import { PokemonType } from "#enums/pokemon-type"; import type { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { TrainerVariant } from "#enums/trainer-variant"; import { UiMode } from "#enums/ui-mode"; // biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` @@ -21,7 +22,7 @@ import { getVariantTint } from "#sprites/variant"; import type { SessionSaveData } from "#system/game-data"; import type { PokemonData } from "#system/pokemon-data"; import { SettingKeyboard } from "#system/settings-keyboard"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; import { formatFancyLargeNumber, formatLargeNumber, formatMoney, getPlayTimeString } from "#utils/common"; diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index 4acca93c353..ffe7024b00e 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -3,6 +3,7 @@ import { globalScene } from "#app/global-scene"; import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler"; import { Button } from "#enums/buttons"; import { GameModes } from "#enums/game-modes"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; // biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` import * as Modifier from "#modifiers/modifier"; @@ -10,7 +11,7 @@ import type { SessionSaveData } from "#system/game-data"; import type { PokemonData } from "#system/pokemon-data"; import { MessageUiHandler } from "#ui/message-ui-handler"; import { RunDisplayMode } from "#ui/run-info-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { fixedInt, formatLargeNumber, getPlayTimeString, isNullOrUndefined } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/session-reload-modal-ui-handler.ts b/src/ui/session-reload-modal-ui-handler.ts index ab1197324a6..1f5a205f990 100644 --- a/src/ui/session-reload-modal-ui-handler.ts +++ b/src/ui/session-reload-modal-ui-handler.ts @@ -1,7 +1,8 @@ +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; import type { ModalConfig } from "#ui/modal-ui-handler"; import { ModalUiHandler } from "#ui/modal-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; export class SessionReloadModalUiHandler extends ModalUiHandler { constructor(mode: UiMode | null = null) { diff --git a/src/ui/settings/abstract-binding-ui-handler.ts b/src/ui/settings/abstract-binding-ui-handler.ts index aaf3572b489..eb68456a69d 100644 --- a/src/ui/settings/abstract-binding-ui-handler.ts +++ b/src/ui/settings/abstract-binding-ui-handler.ts @@ -1,8 +1,9 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import { NavigationManager } from "#ui/navigationMenu"; -import { addTextObject, TextStyle } from "#ui/text"; +import { NavigationManager } from "#ui/navigation-menu"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/settings/abstract-control-settings-ui-handler.ts b/src/ui/settings/abstract-control-settings-ui-handler.ts index 67cc3ad7c03..ee9e990ee2a 100644 --- a/src/ui/settings/abstract-control-settings-ui-handler.ts +++ b/src/ui/settings/abstract-control-settings-ui-handler.ts @@ -2,13 +2,15 @@ import { globalScene } from "#app/global-scene"; import type { InterfaceConfig } from "#app/inputs-controller"; import { Button } from "#enums/buttons"; import type { Device } from "#enums/devices"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import { getIconWithSettingName } from "#inputs/configHandler"; -import { NavigationManager, NavigationMenu } from "#ui/navigationMenu"; +import { getIconWithSettingName } from "#inputs/config-handler"; +import { NavigationManager, NavigationMenu } from "#ui/navigation-menu"; import { ScrollBar } from "#ui/scroll-bar"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; +import { toCamelCase } from "#utils/strings"; import i18next from "i18next"; export interface InputsIcons { @@ -87,12 +89,6 @@ export abstract class AbstractControlSettingsUiHandler extends UiHandler { return settings; } - private camelize(string: string): string { - return string - .replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => (index === 0 ? word.toLowerCase() : word.toUpperCase())) - .replace(/\s+/g, ""); - } - /** * Setup UI elements. */ @@ -209,14 +205,15 @@ export abstract class AbstractControlSettingsUiHandler extends UiHandler { settingFiltered.forEach((setting, s) => { // Convert the setting key from format 'Key_Name' to 'Key name' for display. - const settingName = setting.replace(/_/g, " "); + // TODO: IDK if this can be followed by both an underscore and a space, so leaving it as a regex matching both for now + const i18nKey = toCamelCase(setting.replace(/Alt(_| )/, "")); // Create and add a text object for the setting name to the scene. const isLock = this.settingBlacklisted.includes(this.setting[setting]); const labelStyle = isLock ? TextStyle.SETTINGS_LOCKED : TextStyle.SETTINGS_LABEL; + const isAlt = setting.includes("Alt"); let labelText: string; - const i18nKey = this.camelize(settingName.replace("Alt ", "")); - if (settingName.toLowerCase().includes("alt")) { + if (isAlt) { labelText = `${i18next.t(`settings:${i18nKey}`)}${i18next.t("settings:alt")}`; } else { labelText = i18next.t(`settings:${i18nKey}`); diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index 303ad229ea6..81d733220fc 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -1,13 +1,14 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { SettingType } from "#system/settings"; import { Setting, SettingKeys } from "#system/settings"; import type { InputsIcons } from "#ui/abstract-control-settings-ui-handler"; import { MessageUiHandler } from "#ui/message-ui-handler"; -import { NavigationManager, NavigationMenu } from "#ui/navigationMenu"; +import { NavigationManager, NavigationMenu } from "#ui/navigation-menu"; import { ScrollBar } from "#ui/scroll-bar"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/settings/gamepad-binding-ui-handler.ts b/src/ui/settings/gamepad-binding-ui-handler.ts index c514e93ec51..53d606b6f84 100644 --- a/src/ui/settings/gamepad-binding-ui-handler.ts +++ b/src/ui/settings/gamepad-binding-ui-handler.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; import { Device } from "#enums/devices"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import { getIconWithSettingName, getKeyWithKeycode } from "#inputs/configHandler"; +import { getIconWithSettingName, getKeyWithKeycode } from "#inputs/config-handler"; import { AbstractBindingUiHandler } from "#ui/abstract-binding-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; export class GamepadBindingUiHandler extends AbstractBindingUiHandler { diff --git a/src/ui/settings/keyboard-binding-ui-handler.ts b/src/ui/settings/keyboard-binding-ui-handler.ts index a789225a8ef..b339ac16188 100644 --- a/src/ui/settings/keyboard-binding-ui-handler.ts +++ b/src/ui/settings/keyboard-binding-ui-handler.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; import { Device } from "#enums/devices"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import { getKeyWithKeycode } from "#inputs/configHandler"; +import { getKeyWithKeycode } from "#inputs/config-handler"; import { AbstractBindingUiHandler } from "#ui/abstract-binding-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import i18next from "i18next"; export class KeyboardBindingUiHandler extends AbstractBindingUiHandler { diff --git a/src/ui/settings/navigationMenu.ts b/src/ui/settings/navigation-menu.ts similarity index 98% rename from src/ui/settings/navigationMenu.ts rename to src/ui/settings/navigation-menu.ts index 1303c32d3a5..2f3aa50f7f3 100644 --- a/src/ui/settings/navigationMenu.ts +++ b/src/ui/settings/navigation-menu.ts @@ -1,8 +1,9 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { InputsIcons } from "#ui/abstract-control-settings-ui-handler"; -import { addTextObject, setTextStyle, TextStyle } from "#ui/text"; +import { addTextObject, setTextStyle } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; diff --git a/src/ui/settings/settings-display-ui-handler.ts b/src/ui/settings/settings-display-ui-handler.ts index 3c261d6ddab..1a0481b8e8d 100644 --- a/src/ui/settings/settings-display-ui-handler.ts +++ b/src/ui/settings/settings-display-ui-handler.ts @@ -117,6 +117,12 @@ export class SettingsDisplayUiHandler extends AbstractSettingsUiHandler { label: "Română (Needs Help)", }; break; + case "tl": + this.settings[languageIndex].options[0] = { + value: "Tagalog", + label: "Tagalog (Needs Help)", + }; + break; default: this.settings[languageIndex].options[0] = { value: "English", diff --git a/src/ui/settings/settings-gamepad-ui-handler.ts b/src/ui/settings/settings-gamepad-ui-handler.ts index 63dd4c74618..57a70411f4c 100644 --- a/src/ui/settings/settings-gamepad-ui-handler.ts +++ b/src/ui/settings/settings-gamepad-ui-handler.ts @@ -1,10 +1,11 @@ import { globalScene } from "#app/global-scene"; import type { InterfaceConfig } from "#app/inputs-controller"; import { Device } from "#enums/devices"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import pad_dualshock from "#inputs/pad_dualshock"; -import pad_unlicensedSNES from "#inputs/pad_unlicensedSNES"; -import pad_xbox360 from "#inputs/pad_xbox360"; +import pad_dualshock from "#inputs/pad-dualshock"; +import pad_unlicensedSNES from "#inputs/pad-unlicensed-snes"; +import pad_xbox360 from "#inputs/pad-xbox360"; import { SettingGamepad, setSettingGamepad, @@ -13,7 +14,7 @@ import { settingGamepadOptions, } from "#system/settings-gamepad"; import { AbstractControlSettingsUiHandler } from "#ui/abstract-control-settings-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { truncateString } from "#utils/common"; import i18next from "i18next"; diff --git a/src/ui/settings/settings-keyboard-ui-handler.ts b/src/ui/settings/settings-keyboard-ui-handler.ts index 581e3e938be..295a71abe36 100644 --- a/src/ui/settings/settings-keyboard-ui-handler.ts +++ b/src/ui/settings/settings-keyboard-ui-handler.ts @@ -1,9 +1,10 @@ import { globalScene } from "#app/global-scene"; import type { InterfaceConfig } from "#app/inputs-controller"; import { Device } from "#enums/devices"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; -import cfg_keyboard_qwerty from "#inputs/cfg_keyboard_qwerty"; -import { deleteBind } from "#inputs/configHandler"; +import cfg_keyboard_qwerty from "#inputs/cfg-keyboard-qwerty"; +import { deleteBind } from "#inputs/config-handler"; import { SettingKeyboard, setSettingKeyboard, @@ -12,9 +13,10 @@ import { settingKeyboardOptions, } from "#system/settings-keyboard"; import { AbstractControlSettingsUiHandler } from "#ui/abstract-control-settings-ui-handler"; -import { NavigationManager } from "#ui/navigationMenu"; -import { addTextObject, TextStyle } from "#ui/text"; -import { reverseValueToKeySetting, truncateString } from "#utils/common"; +import { NavigationManager } from "#ui/navigation-menu"; +import { addTextObject } from "#ui/text"; +import { truncateString } from "#utils/common"; +import { toPascalSnakeCase } from "#utils/strings"; import i18next from "i18next"; /** @@ -100,7 +102,7 @@ export class SettingsKeyboardUiHandler extends AbstractControlSettingsUiHandler } const cursor = this.cursor + this.scrollCursor; // Calculate the absolute cursor position. const selection = this.settingLabels[cursor].text; - const key = reverseValueToKeySetting(selection); + const key = toPascalSnakeCase(selection); const settingName = SettingKeyboard[key]; const activeConfig = this.getActiveConfig(); const success = deleteBind(this.getActiveConfig(), settingName); diff --git a/src/ui/settings/shiny_icons.json b/src/ui/settings/shiny_icons.json deleted file mode 100644 index f40c606ca47..00000000000 --- a/src/ui/settings/shiny_icons.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "textures": [ - { - "image": "shiny_icons.png", - "format": "RGBA8888", - "size": { - "w": 45, - "h": 14 - }, - "scale": 1, - "frames": [ - { - "filename": "0", - "rotated": false, - "trimmed": false, - "sourceSize": { - "w": 45, - "h": 14 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 15, - "h": 14 - }, - "frame": { - "x": 0, - "y": 0, - "w": 15, - "h": 14 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a3275c7504a9b35b288265e191b1d14c:420725f3fb73c2cac0ab3bbc0a46f2e1:3a8b8ca0f0e4be067dd46c07b78ee013$" - } -} diff --git a/src/ui/starter-container.ts b/src/ui/starter-container.ts index 4c174dc5955..f81ac8e5bfb 100644 --- a/src/ui/starter-container.ts +++ b/src/ui/starter-container.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; import type { PokemonSpecies } from "#data/pokemon-species"; -import { addTextObject, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addTextObject } from "#ui/text"; export class StarterContainer extends Phaser.GameObjects.Container { public species: PokemonSpecies; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 18a3fbc30a3..dac6bc677a2 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -24,7 +24,6 @@ import { Gender, getGenderColor, getGenderSymbol } from "#data/gender"; import { getNatureName } from "#data/nature"; import { pokemonFormChanges } from "#data/pokemon-forms"; import type { PokemonSpecies } from "#data/pokemon-species"; -import { getPokemonSpeciesForm, getPokerusStarters } from "#data/pokemon-species"; import { AbilityAttr } from "#enums/ability-attr"; import { AbilityId } from "#enums/ability-id"; import { Button } from "#enums/buttons"; @@ -39,6 +38,7 @@ import type { Nature } from "#enums/nature"; import { Passive as PassiveAttr } from "#enums/passive"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { CandyUpgradeNotificationChangedEvent } from "#events/battle-scene"; import { BattleSceneEventType } from "#events/battle-scene"; @@ -57,7 +57,7 @@ import { PokemonIconAnimHandler, PokemonIconAnimMode } from "#ui/pokemon-icon-an import { ScrollBar } from "#ui/scroll-bar"; import { StarterContainer } from "#ui/starter-container"; import { StatsContainer } from "#ui/stats-container"; -import { addBBCodeTextObject, addTextObject, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject } from "#ui/text"; import { addWindow } from "#ui/ui-theme"; import { BooleanHolder, @@ -68,10 +68,11 @@ import { padInt, randIntRange, rgbHexToRgba, - toReadableString, } from "#utils/common"; import type { StarterPreferences } from "#utils/data"; import { loadStarterPreferences, saveStarterPreferences } from "#utils/data"; +import { getPokemonSpeciesForm, getPokerusStarters } from "#utils/pokemon-utils"; +import { toTitleCase } from "#utils/strings"; import { argbFromRgba } from "@material/material-color-utilities"; import i18next from "i18next"; import type { GameObjects } from "phaser"; @@ -175,6 +176,10 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoYOffset: 0.5, starterInfoXPos: 26, }, + tl: { + starterInfoTextSize: "56px", + instructionTextSize: "38px", + }, }; const valueReductionMax = 2; @@ -1476,7 +1481,7 @@ export class StarterSelectUiHandler extends MessageUiHandler { loop: -1, // Make the initial bounce a little randomly delayed delay: randIntRange(0, 50) * 5, - loopDelay: 1000, + loopDelay: fixedInt(1000), tweens: [ { targets: icon, @@ -3526,7 +3531,7 @@ export class StarterSelectUiHandler extends MessageUiHandler { this.pokemonLuckLabelText.setVisible(this.pokemonLuckText.visible); //Growth translate - let growthReadable = toReadableString(GrowthRate[species.growthRate]); + let growthReadable = toTitleCase(GrowthRate[species.growthRate]); const growthAux = growthReadable.replace(" ", "_"); if (i18next.exists("growth:" + growthAux)) { growthReadable = i18next.t(("growth:" + growthAux) as any); @@ -4302,7 +4307,10 @@ export class StarterSelectUiHandler extends MessageUiHandler { return true; } - tryExit(): boolean { + /** + * Attempt to back out of the starter selection screen into the appropriate parent modal + */ + tryExit(): void { this.blockInput = true; const ui = this.getUi(); @@ -4316,12 +4324,13 @@ export class StarterSelectUiHandler extends MessageUiHandler { UiMode.CONFIRM, () => { ui.setMode(UiMode.STARTER_SELECT); - globalScene.phaseManager.clearPhaseQueue(); - if (globalScene.gameMode.isChallenge) { + // Non-challenge modes go directly back to title, while challenge modes go to the selection screen. + if (!globalScene.gameMode.isChallenge) { + globalScene.phaseManager.toTitleScreen(); + } else { + globalScene.phaseManager.clearPhaseQueue(); globalScene.phaseManager.pushNew("SelectChallengePhase"); globalScene.phaseManager.pushNew("EncounterPhase"); - } else { - globalScene.phaseManager.pushNew("TitlePhase"); } this.clearText(); globalScene.phaseManager.getCurrentPhase()?.end(); @@ -4332,8 +4341,6 @@ export class StarterSelectUiHandler extends MessageUiHandler { 19, ); }); - - return true; } tryStart(manualTrigger = false): boolean { diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts index 6b89e80b80a..e9af5eed3e3 100644 --- a/src/ui/stats-container.ts +++ b/src/ui/stats-container.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; import { getStatKey, PERMANENT_STATS } from "#enums/stat"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { TextStyle } from "#enums/text-style"; +import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index da0a7f9a40f..b51bdfdb157 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -10,12 +10,13 @@ import { getNatureName, getNatureStatMultiplier } from "#data/nature"; import { getPokeballAtlasKey } from "#data/pokeball"; import { getTypeRgb } from "#data/type"; import { Button } from "#enums/buttons"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { Nature } from "#enums/nature"; import { PlayerGender } from "#enums/player-gender"; import { PokemonType } from "#enums/pokemon-type"; import { getStatKey, PERMANENT_STATS, Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import type { PlayerPokemon } from "#field/pokemon"; import { modifierSortFunc, PokemonHeldItemModifier } from "#modifiers/modifier"; @@ -24,7 +25,7 @@ import type { PokemonMove } from "#moves/pokemon-move"; import type { Variant } from "#sprites/variant"; import { getVariantTint } from "#sprites/variant"; import { achvs } from "#system/achv"; -import { addBBCodeTextObject, addTextObject, getBBCodeFrag, TextStyle } from "#ui/text"; +import { addBBCodeTextObject, addTextObject, getBBCodeFrag } from "#ui/text"; import { UiHandler } from "#ui/ui-handler"; import { fixedInt, @@ -34,9 +35,9 @@ import { isNullOrUndefined, padInt, rgbHexToRgba, - toReadableString, } from "#utils/common"; import { getEnumValues } from "#utils/enums"; +import { toTitleCase } from "#utils/strings"; import { argbFromRgba } from "@material/material-color-utilities"; import i18next from "i18next"; @@ -354,18 +355,13 @@ export class SummaryUiHandler extends UiHandler { } catch (err: unknown) { console.error(`Failed to play animation for ${spriteKey}`, err); } - this.pokemonSprite.setPipelineData("teraColor", getTypeRgb(this.pokemon.getTeraType())); - this.pokemonSprite.setPipelineData("isTerastallized", this.pokemon.isTerastallized); - this.pokemonSprite.setPipelineData("ignoreTimeTint", true); - this.pokemonSprite.setPipelineData("spriteKey", this.pokemon.getSpriteKey()); - this.pokemonSprite.setPipelineData( - "shiny", - this.pokemon.summonData.illusion?.basePokemon.shiny ?? this.pokemon.shiny, - ); - this.pokemonSprite.setPipelineData( - "variant", - this.pokemon.summonData.illusion?.basePokemon.variant ?? this.pokemon.variant, - ); + this.pokemonSprite + .setPipelineData("teraColor", getTypeRgb(this.pokemon.getTeraType())) + .setPipelineData("isTerastallized", this.pokemon.isTerastallized) + .setPipelineData("ignoreTimeTint", true) + .setPipelineData("spriteKey", this.pokemon.getSpriteKey()) + .setPipelineData("shiny", this.pokemon.shiny) + .setPipelineData("variant", this.pokemon.variant); ["spriteColors", "fusionSpriteColors"].map(k => { delete this.pokemonSprite.pipelineData[`${k}Base`]; if (this.pokemon?.summonData.speciesForm) { @@ -463,9 +459,7 @@ export class SummaryUiHandler extends UiHandler { this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); this.fusionShinyIcon.setVisible(doubleShiny); if (isFusion) { - this.fusionShinyIcon.setTint( - getVariantTint(this.pokemon.summonData.illusion?.basePokemon.fusionVariant ?? this.pokemon.fusionVariant), - ); + this.fusionShinyIcon.setTint(getVariantTint(this.pokemon.fusionVariant)); } this.pokeball.setFrame(getPokeballAtlasKey(this.pokemon.pokeball)); @@ -810,24 +804,34 @@ export class SummaryUiHandler extends UiHandler { case Page.PROFILE: { const profileContainer = globalScene.add.container(0, -pageBg.height); pageContainer.add(profileContainer); + const otColor = + globalScene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE; + const usernameReplacement = + globalScene.gameData.gender === PlayerGender.FEMALE + ? i18next.t("trainerNames:player_f") + : i18next.t("trainerNames:player_m"); // TODO: should add field for original trainer name to Pokemon object, to support gift/traded Pokemon from MEs const trainerText = addBBCodeTextObject( 7, 12, - `${i18next.t("pokemonSummary:ot")}/${getBBCodeFrag(loggedInUser?.username || i18next.t("pokemonSummary:unknown"), globalScene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE)}`, + `${i18next.t("pokemonSummary:ot")}/${getBBCodeFrag( + !globalScene.hideUsername + ? loggedInUser?.username || i18next.t("pokemonSummary:unknown") + : usernameReplacement, + otColor, + )}`, TextStyle.SUMMARY_ALT, - ); - trainerText.setOrigin(0, 0); + ).setOrigin(0); profileContainer.add(trainerText); + const idToDisplay = globalScene.hideUsername ? "*****" : globalScene.gameData.trainerId.toString(); const trainerIdText = addTextObject( 141, 12, - `${i18next.t("pokemonSummary:idNo")}${globalScene.gameData.trainerId.toString()}`, + `${i18next.t("pokemonSummary:idNo")}${idToDisplay}`, TextStyle.SUMMARY_ALT, - ); - trainerIdText.setOrigin(0, 0); + ).setOrigin(0); profileContainer.add(trainerIdText); const typeLabel = addTextObject(7, 28, `${i18next.t("pokemonSummary:type")}/`, TextStyle.WINDOW_ALT); @@ -958,8 +962,8 @@ export class SummaryUiHandler extends UiHandler { this.passiveContainer?.descriptionText?.setVisible(false); const closeFragment = getBBCodeFrag("", TextStyle.WINDOW_ALT); - const rawNature = toReadableString(Nature[this.pokemon?.getNature()!]); // TODO: is this bang correct? - const nature = `${getBBCodeFrag(toReadableString(getNatureName(this.pokemon?.getNature()!)), TextStyle.SUMMARY_RED)}${closeFragment}`; // TODO: is this bang correct? + const rawNature = toTitleCase(Nature[this.pokemon?.getNature()!]); // TODO: is this bang correct? + const nature = `${getBBCodeFrag(toTitleCase(getNatureName(this.pokemon?.getNature()!)), TextStyle.SUMMARY_RED)}${closeFragment}`; // TODO: is this bang correct? const memoString = i18next.t("pokemonSummary:memoString", { metFragment: i18next.t( diff --git a/src/ui/text.ts b/src/ui/text.ts index b2a1894c85c..8aa50983874 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -1,79 +1,14 @@ import { globalScene } from "#app/global-scene"; import { EggTier } from "#enums/egg-type"; import { ModifierTier } from "#enums/modifier-tier"; +import { TextStyle } from "#enums/text-style"; import { UiTheme } from "#enums/ui-theme"; import i18next from "#plugins/i18n"; +import type { TextStyleOptions } from "#types/ui"; import type Phaser from "phaser"; import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; import type InputText from "phaser3-rex-plugins/plugins/inputtext"; -export enum TextStyle { - MESSAGE, - WINDOW, - WINDOW_ALT, - WINDOW_BATTLE_COMMAND, - BATTLE_INFO, - PARTY, - PARTY_RED, - PARTY_CANCEL_BUTTON, - INSTRUCTIONS_TEXT, - MOVE_LABEL, - SUMMARY, - SUMMARY_DEX_NUM, - SUMMARY_DEX_NUM_GOLD, - SUMMARY_ALT, - SUMMARY_HEADER, - SUMMARY_RED, - SUMMARY_BLUE, - SUMMARY_PINK, - SUMMARY_GOLD, - SUMMARY_GRAY, - SUMMARY_GREEN, - SUMMARY_STATS, - SUMMARY_STATS_BLUE, - SUMMARY_STATS_PINK, - SUMMARY_STATS_GOLD, - LUCK_VALUE, - STATS_HEXAGON, - GROWTH_RATE_TYPE, - MONEY, // Money default styling (pale yellow) - MONEY_WINDOW, // Money displayed in Windows (needs different colors based on theme) - HEADER_LABEL, - STATS_LABEL, - STATS_VALUE, - SETTINGS_VALUE, - SETTINGS_LABEL, - SETTINGS_LABEL_NAVBAR, - SETTINGS_SELECTED, - SETTINGS_LOCKED, - EGG_LIST, - EGG_SUMMARY_NAME, - EGG_SUMMARY_DEX, - STARTER_VALUE_LIMIT, - TOOLTIP_TITLE, - TOOLTIP_CONTENT, - FILTER_BAR_MAIN, - MOVE_INFO_CONTENT, - MOVE_PP_FULL, - MOVE_PP_HALF_FULL, - MOVE_PP_NEAR_EMPTY, - MOVE_PP_EMPTY, - SMALLER_WINDOW_ALT, - BGM_BAR, - PERFECT_IV, - ME_OPTION_DEFAULT, // Default style for choices in ME - ME_OPTION_SPECIAL, // Style for choices with special requirements in ME - SHADOW_TEXT, // To obscure unavailable options -} - -export interface TextStyleOptions { - scale: number; - styleOptions: Phaser.Types.GameObjects.Text.TextStyle | InputText.IConfig; - shadowColor: string; - shadowXpos: number; - shadowYpos: number; -} - export function addTextObject( x: number, y: number, @@ -87,9 +22,10 @@ export function addTextObject( extraStyleOptions, ); - const ret = globalScene.add.text(x, y, content, styleOptions); - ret.setScale(scale); - ret.setShadow(shadowXpos, shadowYpos, shadowColor); + const ret = globalScene.add + .text(x, y, content, styleOptions) + .setScale(scale) + .setShadow(shadowXpos, shadowYpos, shadowColor); if (!(styleOptions as Phaser.Types.GameObjects.Text.TextStyle).lineSpacing) { ret.setLineSpacing(scale * 30); } @@ -107,8 +43,7 @@ export function setTextStyle( globalScene.uiTheme, extraStyleOptions, ); - obj.setScale(scale); - obj.setShadow(shadowXpos, shadowYpos, shadowColor); + obj.setScale(scale).setShadow(shadowXpos, shadowYpos, shadowColor); if (!(styleOptions as Phaser.Types.GameObjects.Text.TextStyle).lineSpacing) { obj.setLineSpacing(scale * 30); } @@ -133,8 +68,7 @@ export function addBBCodeTextObject( const ret = new BBCodeText(globalScene, x, y, content, styleOptions as BBCodeText.TextStyle); globalScene.add.existing(ret); - ret.setScale(scale); - ret.setShadow(shadowXpos, shadowYpos, shadowColor); + ret.setScale(scale).setShadow(shadowXpos, shadowYpos, shadowColor); if (!(styleOptions as BBCodeText.TextStyle).lineSpacing) { ret.setLineSpacing(scale * 60); } diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index b7c37538a3e..66cb69f6a26 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -5,10 +5,11 @@ import { TimedEventDisplay } from "#app/timed-event-manager"; import { getSplashMessages } from "#data/splash-messages"; import { PlayerGender } from "#enums/player-gender"; import type { SpeciesId } from "#enums/species-id"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { version } from "#package.json"; import { OptionSelectUiHandler } from "#ui/option-select-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { fixedInt, randInt, randItem } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts index c7b25c90205..7dde6b22dcd 100644 --- a/src/ui/ui-handler.ts +++ b/src/ui/ui-handler.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import type { Button } from "#enums/buttons"; +import type { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; -import type { TextStyle } from "#ui/text"; import { getTextColor } from "#ui/text"; /** diff --git a/src/ui/ui.ts b/src/ui/ui.ts index 79e3c7a0cef..d43fc77d3a8 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -2,6 +2,7 @@ import { globalScene } from "#app/global-scene"; import type { Button } from "#enums/buttons"; import { Device } from "#enums/devices"; import { PlayerGender } from "#enums/player-gender"; +import { TextStyle } from "#enums/text-style"; import { UiMode } from "#enums/ui-mode"; import { AchvBar } from "#ui/achv-bar"; import { AchvsUiHandler } from "#ui/achvs-ui-handler"; @@ -29,7 +30,7 @@ import { MenuUiHandler } from "#ui/menu-ui-handler"; import { MessageUiHandler } from "#ui/message-ui-handler"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { MysteryEncounterUiHandler } from "#ui/mystery-encounter-ui-handler"; -import { NavigationManager } from "#ui/navigationMenu"; +import { NavigationManager } from "#ui/navigation-menu"; import { OptionSelectUiHandler } from "#ui/option-select-ui-handler"; import { PartyUiHandler } from "#ui/party-ui-handler"; import { PokedexPageUiHandler } from "#ui/pokedex-page-ui-handler"; @@ -51,7 +52,7 @@ import { StarterSelectUiHandler } from "#ui/starter-select-ui-handler"; import { SummaryUiHandler } from "#ui/summary-ui-handler"; import { TargetSelectUiHandler } from "#ui/target-select-ui-handler"; import { TestDialogueUiHandler } from "#ui/test-dialogue-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { TitleUiHandler } from "#ui/title-ui-handler"; import type { UiHandler } from "#ui/ui-handler"; import { addWindow } from "#ui/ui-theme"; diff --git a/src/ui/unavailable-modal-ui-handler.ts b/src/ui/unavailable-modal-ui-handler.ts index 420a47664a7..5c3dc513473 100644 --- a/src/ui/unavailable-modal-ui-handler.ts +++ b/src/ui/unavailable-modal-ui-handler.ts @@ -1,9 +1,10 @@ import { updateUserInfo } from "#app/account"; import { globalScene } from "#app/global-scene"; +import { TextStyle } from "#enums/text-style"; import type { UiMode } from "#enums/ui-mode"; import type { ModalConfig } from "#ui/modal-ui-handler"; import { ModalUiHandler } from "#ui/modal-ui-handler"; -import { addTextObject, TextStyle } from "#ui/text"; +import { addTextObject } from "#ui/text"; import { sessionIdKey } from "#utils/common"; import { removeCookie } from "#utils/cookies"; import i18next from "i18next"; diff --git a/src/utils/common.ts b/src/utils/common.ts index e9ba3acb5e5..1c75dac93b4 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,6 +1,5 @@ import { pokerogueApi } from "#api/pokerogue-api"; import { MoneyFormat } from "#enums/money-format"; -import { MoveId } from "#enums/move-id"; import type { Variant } from "#sprites/variant"; import i18next from "i18next"; @@ -10,19 +9,6 @@ export const MissingTextureKey = "__MISSING"; // TODO: Draft tests for these utility functions // TODO: Break up this file -/** - * Convert a `snake_case` string in any capitalization (such as one from an enum reverse mapping) - * into a readable `Title Case` version. - * @param str - The snake case string to be converted. - * @returns The result of converting `str` into title case. - */ -export function toReadableString(str: string): string { - return str - .replace(/_/g, " ") - .split(" ") - .map(s => capitalizeFirstLetter(s.toLowerCase())) - .join(" "); -} export function randomString(length: number, seeded = false) { const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; @@ -278,7 +264,7 @@ export function formatMoney(format: MoneyFormat, amount: number) { } export function formatStat(stat: number, forHp = false): string { - return formatLargeNumber(stat, forHp ? 100000 : 1000000); + return formatLargeNumber(stat, forHp ? 100_000 : 1_000_000); } export function executeIf(condition: boolean, promiseFunc: () => Promise): Promise { @@ -359,31 +345,6 @@ export function fixedInt(value: number): number { return new FixedInt(value) as unknown as number; } -/** - * Formats a string to title case - * @param unformattedText Text to be formatted - * @returns the formatted string - */ -export function formatText(unformattedText: string): string { - const text = unformattedText.split("_"); - for (let i = 0; i < text.length; i++) { - text[i] = text[i].charAt(0).toUpperCase() + text[i].substring(1).toLowerCase(); - } - - return text.join(" "); -} - -export function toCamelCaseString(unformattedText: string): string { - if (!unformattedText) { - return ""; - } - return unformattedText - .split(/[_ ]/) - .filter(f => f) - .map((f, i) => (i ? `${f[0].toUpperCase()}${f.slice(1).toLowerCase()}` : f.toLowerCase())) - .join(""); -} - export function rgbToHsv(r: number, g: number, b: number) { const v = Math.max(r, g, b); const c = v - Math.min(r, g, b); @@ -475,6 +436,7 @@ export function hasAllLocalizedSprites(lang?: string): boolean { case "ja": case "ca": case "ru": + case "tl": return true; default: return false; @@ -510,41 +472,6 @@ export function truncateString(str: string, maxLength = 10) { return str; } -/** - * Convert a space-separated string into a capitalized and underscored string. - * @param input - The string to be converted. - * @returns The converted string with words capitalized and separated by underscores. - */ -export function reverseValueToKeySetting(input: string) { - // Split the input string into an array of words - const words = input.split(" "); - // Capitalize the first letter of each word and convert the rest to lowercase - const capitalizedWords = words.map((word: string) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()); - // Join the capitalized words with underscores and return the result - return capitalizedWords.join("_"); -} - -/** - * Capitalize a string. - * @param str - The string to be capitalized. - * @param sep - The separator between the words of the string. - * @param lowerFirstChar - Whether the first character of the string should be lowercase or not. - * @param returnWithSpaces - Whether the returned string should have spaces between the words or not. - * @returns The capitalized string. - */ -export function capitalizeString(str: string, sep: string, lowerFirstChar = true, returnWithSpaces = false) { - if (str) { - const splitedStr = str.toLowerCase().split(sep); - - for (let i = +lowerFirstChar; i < splitedStr?.length; i++) { - splitedStr[i] = splitedStr[i].charAt(0).toUpperCase() + splitedStr[i].substring(1); - } - - return returnWithSpaces ? splitedStr.join(" ") : splitedStr.join(""); - } - return null; -} - /** * Report whether a given value is nullish (`null`/`undefined`). * @param val - The value whose nullishness is being checked @@ -554,15 +481,6 @@ export function isNullOrUndefined(val: any): val is null | undefined { return val === null || val === undefined; } -/** - * Capitalize the first letter of a string. - * @param str - The string whose first letter is being capitalized - * @return The original string with its first letter capitalized - */ -export function capitalizeFirstLetter(str: string) { - return str.charAt(0).toUpperCase() + str.slice(1); -} - /** * This function is used in the context of a Pokémon battle game to calculate the actual integer damage value from a float result. * Many damage calculation formulas involve various parameters and result in float values. @@ -597,26 +515,6 @@ export function isBetween(num: number, min: number, max: number): boolean { return min <= num && num <= max; } -/** - * Helper method to return the animation filename for a given move - * - * @param move the move for which the animation filename is needed - */ -export function animationFileName(move: MoveId): string { - return MoveId[move].toLowerCase().replace(/_/g, "-"); -} - -/** - * Transforms a camelCase string into a kebab-case string - * @param str The camelCase string - * @returns A kebab-case string - * - * @source {@link https://stackoverflow.com/a/67243723/} - */ -export function camelCaseToKebabCase(str: string): string { - return str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, (s, o) => (o ? "-" : "") + s.toLowerCase()); -} - /** Get the localized shiny descriptor for the provided variant * @param variant - The variant to get the shiny descriptor for * @returns The localized shiny descriptor diff --git a/src/utils/enums.ts b/src/utils/enums.ts index 98cb4272ee9..25ee864794c 100644 --- a/src/utils/enums.ts +++ b/src/utils/enums.ts @@ -1,5 +1,5 @@ -import type { EnumOrObject, EnumValues, NormalEnum, TSNumericEnum } from "#app/@types/enum-types"; -import type { InferKeys } from "#app/@types/type-helpers"; +import type { EnumOrObject, NormalEnum, TSNumericEnum } from "#types/enum-types"; +import type { InferKeys, ObjectValues } from "#types/type-helpers"; /** * Return the string keys of an Enum object, excluding reverse-mapped numbers. @@ -61,7 +61,7 @@ export function getEnumValues(enumType: TSNumericEnum * If multiple keys map to the same value, the first one (in insertion order) will be retrieved, * but the return type will be the union of ALL their corresponding keys. */ -export function enumValueToKey>( +export function enumValueToKey>( object: NormalEnum, val: V, ): InferKeys { diff --git a/src/utils/pokemon-utils.ts b/src/utils/pokemon-utils.ts index da39cfe11ad..8de0a3bfcf1 100644 --- a/src/utils/pokemon-utils.ts +++ b/src/utils/pokemon-utils.ts @@ -1,6 +1,9 @@ +import { globalScene } from "#app/global-scene"; +import { POKERUS_STARTER_COUNT, speciesStarterCosts } from "#balance/starters"; import { allSpecies } from "#data/data-lists"; -import type { PokemonSpecies } from "#data/pokemon-species"; +import type { PokemonSpecies, PokemonSpeciesForm } from "#data/pokemon-species"; import type { SpeciesId } from "#enums/species-id"; +import { randSeedItem } from "./common"; /** * Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode SpeciesId} enum given @@ -19,3 +22,104 @@ export function getPokemonSpecies(species: SpeciesId | SpeciesId[]): PokemonSpec } return allSpecies[species - 1]; } + +/** + * Method to get the daily list of starters with Pokerus. + * @returns A list of starters with Pokerus + */ +export function getPokerusStarters(): PokemonSpecies[] { + const pokerusStarters: PokemonSpecies[] = []; + const date = new Date(); + date.setUTCHours(0, 0, 0, 0); + globalScene.executeWithSeedOffset( + () => { + while (pokerusStarters.length < POKERUS_STARTER_COUNT) { + const randomSpeciesId = Number.parseInt(randSeedItem(Object.keys(speciesStarterCosts)), 10); + const species = getPokemonSpecies(randomSpeciesId); + if (!pokerusStarters.includes(species)) { + pokerusStarters.push(species); + } + } + }, + 0, + date.getTime().toString(), + ); + return pokerusStarters; +} + +export function getFusedSpeciesName(speciesAName: string, speciesBName: string): string { + const fragAPattern = /([a-z]{2}.*?[aeiou(?:y$)\-']+)(.*?)$/i; + const fragBPattern = /([a-z]{2}.*?[aeiou(?:y$)\-'])(.*?)$/i; + + const [speciesAPrefixMatch, speciesBPrefixMatch] = [speciesAName, speciesBName].map(n => /^(?:[^ ]+) /.exec(n)); + const [speciesAPrefix, speciesBPrefix] = [speciesAPrefixMatch, speciesBPrefixMatch].map(m => (m ? m[0] : "")); + + if (speciesAPrefix) { + speciesAName = speciesAName.slice(speciesAPrefix.length); + } + if (speciesBPrefix) { + speciesBName = speciesBName.slice(speciesBPrefix.length); + } + + const [speciesASuffixMatch, speciesBSuffixMatch] = [speciesAName, speciesBName].map(n => / (?:[^ ]+)$/.exec(n)); + const [speciesASuffix, speciesBSuffix] = [speciesASuffixMatch, speciesBSuffixMatch].map(m => (m ? m[0] : "")); + + if (speciesASuffix) { + speciesAName = speciesAName.slice(0, -speciesASuffix.length); + } + if (speciesBSuffix) { + speciesBName = speciesBName.slice(0, -speciesBSuffix.length); + } + + const splitNameA = speciesAName.split(/ /g); + const splitNameB = speciesBName.split(/ /g); + + const fragAMatch = fragAPattern.exec(speciesAName); + const fragBMatch = fragBPattern.exec(speciesBName); + + let fragA: string; + let fragB: string; + + fragA = splitNameA.length === 1 ? (fragAMatch ? fragAMatch[1] : speciesAName) : splitNameA[splitNameA.length - 1]; + + if (splitNameB.length === 1) { + if (fragBMatch) { + const lastCharA = fragA.slice(fragA.length - 1); + const prevCharB = fragBMatch[1].slice(fragBMatch.length - 1); + fragB = (/[-']/.test(prevCharB) ? prevCharB : "") + fragBMatch[2] || prevCharB; + if (lastCharA === fragB[0]) { + if (/[aiu]/.test(lastCharA)) { + fragB = fragB.slice(1); + } else { + const newCharMatch = new RegExp(`[^${lastCharA}]`).exec(fragB); + if (newCharMatch?.index !== undefined && newCharMatch.index > 0) { + fragB = fragB.slice(newCharMatch.index); + } + } + } + } else { + fragB = speciesBName; + } + } else { + fragB = splitNameB[splitNameB.length - 1]; + } + + if (splitNameA.length > 1) { + fragA = `${splitNameA.slice(0, splitNameA.length - 1).join(" ")} ${fragA}`; + } + + fragB = `${fragB.slice(0, 1).toLowerCase()}${fragB.slice(1)}`; + + return `${speciesAPrefix || speciesBPrefix}${fragA}${fragB}${speciesBSuffix || speciesASuffix}`; +} + +export function getPokemonSpeciesForm(species: SpeciesId, formIndex: number): PokemonSpeciesForm { + const retSpecies: PokemonSpecies = + species >= 2000 + ? allSpecies.find(s => s.speciesId === species)! // TODO: is the bang correct? + : allSpecies[species - 1]; + if (formIndex < retSpecies.forms?.length) { + return retSpecies.forms[formIndex]; + } + return retSpecies; +} diff --git a/src/utils/strings.ts b/src/utils/strings.ts new file mode 100644 index 00000000000..bf5e5c6473f --- /dev/null +++ b/src/utils/strings.ts @@ -0,0 +1,181 @@ +// TODO: Standardize file and path casing to remove the need for all these different casing methods + +// #region Split string code + +// Regexps involved with splitting words in various case formats. +// Sourced from https://www.npmjs.com/package/change-case (with slight tweaking here and there) + +/** Regex to split at word boundaries.*/ +const SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu; +/** Regex to split around single-letter uppercase words.*/ +const SPLIT_UPPER_UPPER_RE = /(\p{Lu})([\p{Lu}][\p{Ll}])/gu; +/** Regexp involved with stripping non-word delimiters from the result. */ +const DELIM_STRIP_REGEXP = /[-_ ]+/giu; +// The replacement value for splits. +const SPLIT_REPLACE_VALUE = "$1\0$2"; + +/** + * Split any cased string into an array of its constituent words. + * @param string - The string to be split + * @returns The new string, delimited at each instance of one or more spaces, underscores, hyphens + * or lower-to-upper boundaries. + * @remarks + * **DO NOT USE THIS FUNCTION!** + * Exported only to allow for testing. + * @todo Consider tests into [in-source testing](https://vitest.dev/guide/in-source.html) and converting this to unexported + */ +export function splitWords(value: string): string[] { + let result = value.trim(); + result = result.replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE); + result = result.replace(DELIM_STRIP_REGEXP, "\0"); + + // Trim the delimiter from around the output string + return trimFromStartAndEnd(result, "\0").split(/\0/g); +} + +/** + * Helper function to remove one or more sequences of characters from either end of a string. + * @param str - The string to replace + * @param charToTrim - The string to remove + * @returns The result of removing all instances of {@linkcode charsToTrim} from either end of {@linkcode str}. + */ +function trimFromStartAndEnd(str: string, charToTrim: string): string { + let start = 0; + let end = str.length; + const blockLength = charToTrim.length; + + while (str.startsWith(charToTrim, start)) { + start += blockLength; + } + if (start - end === blockLength) { + // Occurs if the ENTIRE string is made up of charToTrim (at which point we return nothing) + return ""; + } + while (str.endsWith(charToTrim, end)) { + end -= blockLength; + } + return str.slice(start, end); +} + +// #endregion Split String code + +/** + * Capitalize the first letter of a string. + * @param str - The string whose first letter is to be capitalized + * @return The original string with its first letter capitalized. + * @example + * ```ts + * console.log(capitalizeFirstLetter("consectetur adipiscing elit")); // returns "Consectetur adipiscing elit" + * ``` + */ +export function capitalizeFirstLetter(str: string) { + return str.charAt(0).toUpperCase() + str.slice(1); +} + +/** + * Helper method to convert a string into `Title Case` (such as one used for console logs). + * @param str - The string being converted + * @returns The result of converting `str` into title case. + * @example + * ```ts + * console.log(toTitleCase("lorem ipsum dolor sit amet")); // returns "Lorem Ipsum Dolor Sit Amet" + * ``` + */ +export function toTitleCase(str: string): string { + return splitWords(str) + .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join(" "); +} + +/** + * Helper method to convert a string into `camelCase` (such as one used for i18n keys). + * @param str - The string being converted + * @returns The result of converting `str` into camel case. + * @example + * ```ts + * console.log(toCamelCase("BIG_ANGRY_TRAINER")); // returns "bigAngryTrainer" + * ``` + */ +export function toCamelCase(str: string) { + return splitWords(str) + .map((word, index) => + index === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(), + ) + .join(""); +} + +/** + * Helper method to convert a string into `PascalCase`. + * @param str - The string being converted + * @returns The result of converting `str` into pascal case. + * @example + * ```ts + * console.log(toPascalCase("hi how was your day")); // returns "HiHowWasYourDay" + * ``` + * @remarks + */ +export function toPascalCase(str: string) { + return splitWords(str) + .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join(""); +} + +/** + * Helper method to convert a string into `kebab-case` (such as one used for filenames). + * @param str - The string being converted + * @returns The result of converting `str` into kebab case. + * @example + * ```ts + * console.log(toKebabCase("not_kebab-caSe String")); // returns "not-kebab-case-string" + * ``` + */ +export function toKebabCase(str: string): string { + return splitWords(str) + .map(word => word.toLowerCase()) + .join("-"); +} + +/** + * Helper method to convert a string into `snake_case` (such as one used for filenames). + * @param str - The string being converted + * @returns The result of converting `str` into snake case. + * @example + * ```ts + * console.log(toSnakeCase("not-in snake_CaSe")); // returns "not_in_snake_case" + * ``` + */ +export function toSnakeCase(str: string) { + return splitWords(str) + .map(word => word.toLowerCase()) + .join("_"); +} + +/** + * Helper method to convert a string into `UPPER_SNAKE_CASE`. + * @param str - The string being converted + * @returns The result of converting `str` into upper snake case. + * @example + * ```ts + * console.log(toUpperSnakeCase("apples bananas_oranGes-PearS")); // returns "APPLES_BANANAS_ORANGES_PEARS" + * ``` + */ +export function toUpperSnakeCase(str: string) { + return splitWords(str) + .map(word => word.toUpperCase()) + .join("_"); +} + +/** + * Helper method to convert a string into `Pascal_Snake_Case`. + * @param str - The string being converted + * @returns The result of converting `str` into pascal snake case. + * @example + * ```ts + * console.log(toPascalSnakeCase("apples-bananas_oranGes Pears")); // returns "Apples_Bananas_Oranges_Pears" + * ``` + */ +export function toPascalSnakeCase(str: string) { + return splitWords(str) + .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join("_"); +} diff --git a/src/vite.env.d.ts b/src/vite.env.d.ts index a2acc658a10..68159908730 100644 --- a/src/vite.env.d.ts +++ b/src/vite.env.d.ts @@ -1,16 +1,16 @@ /// interface ImportMetaEnv { - readonly VITE_PORT?: string; - readonly VITE_BYPASS_LOGIN?: string; - readonly VITE_BYPASS_TUTORIAL?: string; - readonly VITE_API_BASE_URL?: string; - readonly VITE_SERVER_URL?: string; - readonly VITE_DISCORD_CLIENT_ID?: string; - readonly VITE_GOOGLE_CLIENT_ID?: string; - readonly VITE_I18N_DEBUG?: string; + readonly VITE_PORT?: string; + readonly VITE_BYPASS_LOGIN?: string; + readonly VITE_BYPASS_TUTORIAL?: string; + readonly VITE_API_BASE_URL?: string; + readonly VITE_SERVER_URL?: string; + readonly VITE_DISCORD_CLIENT_ID?: string; + readonly VITE_GOOGLE_CLIENT_ID?: string; + readonly VITE_I18N_DEBUG?: string; } interface ImportMeta { - readonly env: ImportMetaEnv + readonly env: ImportMetaEnv; } diff --git a/test/@types/vitest.d.ts b/test/@types/vitest.d.ts new file mode 100644 index 00000000000..7b756c45a57 --- /dev/null +++ b/test/@types/vitest.d.ts @@ -0,0 +1,139 @@ +import type { TerrainType } from "#app/data/terrain"; +import type { AbilityId } from "#enums/ability-id"; +import type { BattlerTagType } from "#enums/battler-tag-type"; +import type { MoveId } from "#enums/move-id"; +import type { PokemonType } from "#enums/pokemon-type"; +import type { BattleStat, EffectiveStat, Stat } from "#enums/stat"; +import type { StatusEffect } from "#enums/status-effect"; +import type { WeatherType } from "#enums/weather-type"; +import type { Pokemon } from "#field/pokemon"; +import type { ToHaveEffectiveStatMatcherOptions } from "#test/test-utils/matchers/to-have-effective-stat"; +import type { expectedStatusType } from "#test/test-utils/matchers/to-have-status-effect"; +import type { toHaveTypesOptions } from "#test/test-utils/matchers/to-have-types"; +import type { TurnMove } from "#types/turn-move"; +import type { AtLeastOne } from "#types/type-helpers"; +import type { expect } from "vitest"; +import type Overrides from "#app/overrides"; +import type { PokemonMove } from "#moves/pokemon-move"; + +declare module "vitest" { + interface Assertion { + /** + * Check whether an array contains EXACTLY the given items (in any order). + * + * Different from {@linkcode expect.arrayContaining} as the latter only checks for subset equality + * (as opposed to full equality). + * + * @param expected - The expected contents of the array, in any order + * @see {@linkcode expect.arrayContaining} + */ + toEqualArrayUnsorted(expected: E[]): void; + + /** + * Check whether a {@linkcode Pokemon}'s current typing includes the given types. + * + * @param expected - The expected types (in any order) + * @param options - The options passed to the matcher + */ + toHaveTypes(expected: [PokemonType, ...PokemonType[]], options?: toHaveTypesOptions): void; + + /** + * Matcher to check the contents of a {@linkcode Pokemon}'s move history. + * + * @param expectedValue - The expected value; can be a {@linkcode MoveId} or a partially filled {@linkcode TurnMove} + * containing the desired properties to check + * @param index - The index of the move history entry to check, in order from most recent to least recent. + * Default `0` (last used move) + * @see {@linkcode Pokemon.getLastXMoves} + */ + toHaveUsedMove(expected: MoveId | AtLeastOne, index?: number): void; + + /** + * Check whether a {@linkcode Pokemon}'s effective stat is as expected + * (checked after all stat value modifications). + * + * @param stat - The {@linkcode EffectiveStat} to check + * @param expectedValue - The expected value of {@linkcode stat} + * @param options - (Optional) The {@linkcode ToHaveEffectiveStatMatcherOptions} + * @remarks + * If you want to check the stat **before** modifiers are applied, use {@linkcode Pokemon.getStat} instead. + */ + toHaveEffectiveStat(stat: EffectiveStat, expectedValue: number, options?: ToHaveEffectiveStatMatcherOptions): void; + + /** + * Check whether a {@linkcode Pokemon} has taken a specific amount of damage. + * @param expectedDamageTaken - The expected amount of damage taken + * @param roundDown - Whether to round down {@linkcode expectedDamageTaken} with {@linkcode toDmgValue}; default `true` + */ + toHaveTakenDamage(expectedDamageTaken: number, roundDown?: boolean): void; + + /** + * Check whether the current {@linkcode WeatherType} is as expected. + * @param expectedWeatherType - The expected {@linkcode WeatherType} + */ + toHaveWeather(expectedWeatherType: WeatherType): void; + + /** + * Check whether the current {@linkcode TerrainType} is as expected. + * @param expectedTerrainType - The expected {@linkcode TerrainType} + */ + toHaveTerrain(expectedTerrainType: TerrainType): void; + + /** + * Check whether a {@linkcode Pokemon} is at full HP. + */ + toHaveFullHp(): void; + + /** + * Check whether a {@linkcode Pokemon} has a specific {@linkcode StatusEffect | non-volatile status effect}. + * @param expectedStatusEffect - The {@linkcode StatusEffect} the Pokemon is expected to have, + * or a partially filled {@linkcode Status} containing the desired properties + */ + toHaveStatusEffect(expectedStatusEffect: expectedStatusType): void; + + /** + * Check whether a {@linkcode Pokemon} has a specific {@linkcode Stat} stage. + * @param stat - The {@linkcode BattleStat} to check + * @param expectedStage - The expected stat stage value of {@linkcode stat} + */ + toHaveStatStage(stat: BattleStat, expectedStage: number): void; + + /** + * Check whether a {@linkcode Pokemon} has a specific {@linkcode BattlerTagType}. + * @param expectedBattlerTagType - The expected {@linkcode BattlerTagType} + */ + toHaveBattlerTag(expectedBattlerTagType: BattlerTagType): void; + + /** + * Check whether a {@linkcode Pokemon} has applied a specific {@linkcode AbilityId}. + * @param expectedAbilityId - The expected {@linkcode AbilityId} + */ + toHaveAbilityApplied(expectedAbilityId: AbilityId): void; + + /** + * Check whether a {@linkcode Pokemon} has a specific amount of {@linkcode Stat.HP | HP}. + * @param expectedHp - The expected amount of {@linkcode Stat.HP | HP} to have + */ + toHaveHp(expectedHp: number): void; + + /** + * Check whether a {@linkcode Pokemon} is currently fainted (as determined by {@linkcode Pokemon.isFainted}). + * @remarks + * When checking whether an enemy wild Pokemon is fainted, one must reference it in a variable _before_ the fainting effect occurs + * as otherwise the Pokemon will be GC'ed and rendered `undefined`. + */ + toHaveFainted(): void; + + /** + * Check whether a {@linkcode Pokemon} has consumed the given amount of PP for one of its moves. + * @param expectedValue - The {@linkcode MoveId} of the {@linkcode PokemonMove} that should have consumed PP + * @param ppUsed - The numerical amount of PP that should have been consumed, + * or `all` to indicate the move should be _out_ of PP + * @remarks + * If the Pokemon's moveset has been set via {@linkcode Overrides.MOVESET_OVERRIDE}/{@linkcode Overrides.OPP_MOVESET_OVERRIDE}, + * does not contain {@linkcode expectedMove} + * or contains the desired move more than once, this will fail the test. + */ + toHaveUsedPP(expectedMove: MoveId, ppUsed: number | "all"): void; + } +} diff --git a/test/abilities/ability_activation_order.test.ts b/test/abilities/ability-activation-order.test.ts similarity index 98% rename from test/abilities/ability_activation_order.test.ts rename to test/abilities/ability-activation-order.test.ts index 8344ba6be11..54ff5e8b99a 100644 --- a/test/abilities/ability_activation_order.test.ts +++ b/test/abilities/ability-activation-order.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/ability_duplication.test.ts b/test/abilities/ability-duplication.test.ts similarity index 96% rename from test/abilities/ability_duplication.test.ts rename to test/abilities/ability-duplication.test.ts index 0c88b65a00e..da572d94466 100644 --- a/test/abilities/ability_duplication.test.ts +++ b/test/abilities/ability-duplication.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/ability_timing.test.ts b/test/abilities/ability-timing.test.ts similarity index 96% rename from test/abilities/ability_timing.test.ts rename to test/abilities/ability-timing.test.ts index c3e841d8216..f5315d2b80e 100644 --- a/test/abilities/ability_timing.test.ts +++ b/test/abilities/ability-timing.test.ts @@ -5,7 +5,7 @@ import { UiMode } from "#enums/ui-mode"; import { CommandPhase } from "#phases/command-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; import i18next from "#plugins/i18n"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/analytic.test.ts b/test/abilities/analytic.test.ts index 0bacfe6775b..cf5a501bbc5 100644 --- a/test/abilities/analytic.test.ts +++ b/test/abilities/analytic.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { isBetween, toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Abilities - Analytic", () => { it("should increase damage if the user moves last", async () => { await game.classicMode.startBattle([SpeciesId.ARCEUS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/abilities/anger-point.test.ts b/test/abilities/anger-point.test.ts index 576062eadeb..4031ff702a9 100644 --- a/test/abilities/anger-point.test.ts +++ b/test/abilities/anger-point.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Ability - Anger Point", () => { it("should set the user's attack stage to +6 when hit by a critical hit", async () => { game.override.enemyAbility(AbilityId.ANGER_POINT).moveset(MoveId.FALSE_SWIPE); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); // minimize the enemy's attack stage to ensure it is always set to +6 enemy.setStatStage(Stat.ATK, -6); @@ -53,7 +53,7 @@ describe("Ability - Anger Point", () => { .enemyAbility(AbilityId.ANGER_POINT) .ability(AbilityId.SKILL_LINK); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getCriticalHitResult").mockReturnValueOnce(true); const angerPointSpy = vi.spyOn(PostReceiveCritStatStageChangeAbAttr.prototype, "apply"); game.move.select(MoveId.BULLET_SEED); @@ -68,7 +68,7 @@ describe("Ability - Anger Point", () => { .enemyHasPassiveAbility(true) .moveset(MoveId.FALSE_SWIPE); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getCriticalHitResult").mockReturnValueOnce(true); enemy.setStatStage(Stat.ATK, 6); game.move.select(MoveId.FALSE_SWIPE); diff --git a/test/abilities/arena_trap.test.ts b/test/abilities/arena-trap.test.ts similarity index 97% rename from test/abilities/arena_trap.test.ts rename to test/abilities/arena-trap.test.ts index c47cf3cd327..f85fae5b259 100644 --- a/test/abilities/arena_trap.test.ts +++ b/test/abilities/arena-trap.test.ts @@ -2,7 +2,7 @@ import { allAbilities } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/aroma_veil.test.ts b/test/abilities/aroma-veil.test.ts similarity index 97% rename from test/abilities/aroma_veil.test.ts rename to test/abilities/aroma-veil.test.ts index fb08d60c24f..3bdb83203c5 100644 --- a/test/abilities/aroma_veil.test.ts +++ b/test/abilities/aroma-veil.test.ts @@ -5,7 +5,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { PlayerPokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/aura_break.test.ts b/test/abilities/aura-break.test.ts similarity index 97% rename from test/abilities/aura_break.test.ts rename to test/abilities/aura-break.test.ts index 6f33e3f047f..0fe3a253561 100644 --- a/test/abilities/aura_break.test.ts +++ b/test/abilities/aura-break.test.ts @@ -2,7 +2,7 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/battery.test.ts b/test/abilities/battery.test.ts index 13ebd52367a..cdb3935c33e 100644 --- a/test/abilities/battery.test.ts +++ b/test/abilities/battery.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/battle_bond.test.ts b/test/abilities/battle-bond.test.ts similarity index 96% rename from test/abilities/battle_bond.test.ts rename to test/abilities/battle-bond.test.ts index ef8c2ffed75..c4ffe1e784b 100644 --- a/test/abilities/battle_bond.test.ts +++ b/test/abilities/battle-bond.test.ts @@ -1,11 +1,11 @@ import { allMoves } from "#data/data-lists"; import { Status } from "#data/status-effect"; import { AbilityId } from "#enums/ability-id"; -import { MultiHitType } from "#enums/MultiHitType"; import { MoveId } from "#enums/move-id"; +import { MultiHitType } from "#enums/multi-hit-type"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - BATTLE BOND", () => { diff --git a/test/abilities/beast_boost.test.ts b/test/abilities/beast-boost.test.ts similarity index 92% rename from test/abilities/beast_boost.test.ts rename to test/abilities/beast-boost.test.ts index 0a49728698b..aeb4d854b1a 100644 --- a/test/abilities/beast_boost.test.ts +++ b/test/abilities/beast-boost.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Abilities - Beast Boost", () => { it("should prefer highest stat to boost its corresponding stat stage by 1 when winning a battle", async () => { await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // Set the pokemon's highest stat to DEF, so it should be picked by Beast Boost vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([10000, 100, 1000, 200, 100, 100]); console.log(playerPokemon.stats); @@ -54,7 +54,7 @@ describe("Abilities - Beast Boost", () => { await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // If the opponent uses Guard Split, the pokemon's second highest stat (SPATK) should be chosen vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([10000, 100, 201, 200, 100, 100]); @@ -72,7 +72,7 @@ describe("Abilities - Beast Boost", () => { // Order preference follows the order of EFFECTIVE_STAT await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // Set up tie between SPATK, SPDEF, and SPD, where SPATK should win vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([10000, 1, 1, 100, 100, 100]); diff --git a/test/abilities/commander.test.ts b/test/abilities/commander.test.ts index 8c19ee083c5..d485cab83a2 100644 --- a/test/abilities/commander.test.ts +++ b/test/abilities/commander.test.ts @@ -9,7 +9,7 @@ import type { EffectiveStat } from "#enums/stat"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/competitive.test.ts b/test/abilities/competitive.test.ts index 7dcc677a74e..3c511b85b14 100644 --- a/test/abilities/competitive.test.ts +++ b/test/abilities/competitive.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Abilities - Competitive", () => { it("lower atk and def by 1 via tickle, then increase spatk by 4 via competitive", async () => { await game.classicMode.startBattle([SpeciesId.FLYGON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); @@ -49,7 +49,7 @@ describe("Abilities - Competitive", () => { game.override.enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.FLYGON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(TurnInitPhase); @@ -62,7 +62,7 @@ describe("Abilities - Competitive", () => { game.override.startingHeldItems([{ name: "WHITE_HERB" }]); await game.classicMode.startBattle([SpeciesId.FLYGON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); diff --git a/test/abilities/contrary.test.ts b/test/abilities/contrary.test.ts index 7db48dedbfd..e7a1ae1e3d0 100644 --- a/test/abilities/contrary.test.ts +++ b/test/abilities/contrary.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Abilities - Contrary", () => { it("should invert stat changes when applied", async () => { await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); }); @@ -43,7 +43,7 @@ describe("Abilities - Contrary", () => { game.override.enemyPassiveAbility(AbilityId.CLEAR_BODY).moveset([MoveId.TAIL_WHIP]); await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); @@ -57,7 +57,7 @@ describe("Abilities - Contrary", () => { game.override.enemyPassiveAbility(AbilityId.CLEAR_BODY).enemyMoveset(MoveId.HOWL).moveset([MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); diff --git a/test/abilities/corrosion.test.ts b/test/abilities/corrosion.test.ts index 22abc158fc7..490a365394b 100644 --- a/test/abilities/corrosion.test.ts +++ b/test/abilities/corrosion.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/costar.test.ts b/test/abilities/costar.test.ts index c8c0ffd3184..1ca1d06d76f 100644 --- a/test/abilities/costar.test.ts +++ b/test/abilities/costar.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { MessagePhase } from "#phases/message-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; diff --git a/test/abilities/cud_chew.test.ts b/test/abilities/cud-chew.test.ts similarity index 93% rename from test/abilities/cud_chew.test.ts rename to test/abilities/cud-chew.test.ts index 8fc62b38528..f68141096eb 100644 --- a/test/abilities/cud_chew.test.ts +++ b/test/abilities/cud-chew.test.ts @@ -7,7 +7,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { Pokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -43,7 +43,7 @@ describe("Abilities - Cud Chew", () => { it("stores inside summonData at end of turn", async () => { await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; // needed to allow sitrus procs game.move.select(MoveId.SPLASH); @@ -71,7 +71,7 @@ describe("Abilities - Cud Chew", () => { game.override.enemyMoveset([MoveId.SPLASH, MoveId.HEAL_PULSE]); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); // Dip below half to eat berry farigiraf.hp = farigiraf.getMaxHp() / 2 - 1; @@ -120,7 +120,7 @@ describe("Abilities - Cud Chew", () => { .enemyMoveset(MoveId.TEATIME); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; // needed to allow berry procs game.move.select(MoveId.STUFF_CHEEKS); @@ -148,7 +148,7 @@ describe("Abilities - Cud Chew", () => { it("should reset both arrays on switch", async () => { await game.classicMode.startBattle([SpeciesId.FARIGIRAF, SpeciesId.GIRAFARIG]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; // eat berry turn 1, switch out turn 2 @@ -177,7 +177,7 @@ describe("Abilities - Cud Chew", () => { game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; game.move.select(MoveId.SPLASH); @@ -199,7 +199,7 @@ describe("Abilities - Cud Chew", () => { const apply = vi.spyOn(CudChewConsumeBerryAbAttr.prototype, "apply"); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; game.move.select(MoveId.SPLASH); @@ -225,7 +225,7 @@ describe("Abilities - Cud Chew", () => { game.override.enemyAbility(AbilityId.UNNERVE); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; game.move.select(MoveId.SPLASH); @@ -243,7 +243,7 @@ describe("Abilities - Cud Chew", () => { game.override.enemyMoveset(MoveId.INCINERATE); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = farigiraf.getMaxHp() / 4; game.move.select(MoveId.SPLASH); @@ -262,7 +262,7 @@ describe("Abilities - Cud Chew", () => { .startingHeldItems([]); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); game.move.select(MoveId.BUG_BITE); await game.toNextTurn(); @@ -278,7 +278,7 @@ describe("Abilities - Cud Chew", () => { game.override.passiveAbility(AbilityId.RIPEN); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; game.move.select(MoveId.SPLASH); @@ -294,7 +294,7 @@ describe("Abilities - Cud Chew", () => { game.override.enemyLevel(1); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); - const farigiraf = game.scene.getPlayerPokemon()!; + const farigiraf = game.field.getPlayerPokemon(); farigiraf.hp = 1; game.move.select(MoveId.HYPER_VOICE); @@ -307,7 +307,7 @@ describe("Abilities - Cud Chew", () => { // reload and the berry should still be there await game.reload.reloadSession(); - const farigirafReloaded = game.scene.getPlayerPokemon()!; + const farigirafReloaded = game.field.getPlayerPokemon(); expect(farigirafReloaded.summonData.berriesEatenLast).toEqual([BerryType.SITRUS]); const wave1Hp = farigirafReloaded.hp; diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index 86b5b68e901..c651a341c42 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import type { MovePhase } from "#phases/move-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -125,7 +125,7 @@ describe("Abilities - Dancer", () => { game.override.battleStyle("double").moveset(MoveId.SPLASH).enemyMoveset([MoveId.SWORDS_DANCE, MoveId.FAKE_OUT]); await game.classicMode.startBattle([SpeciesId.ORICORIO]); - const oricorio = game.scene.getPlayerPokemon()!; + const oricorio = game.field.getPlayerPokemon(); expect(oricorio).toBeDefined(); // get faked out and copy swords dance diff --git a/test/abilities/defiant.test.ts b/test/abilities/defiant.test.ts index 44187429e2b..f1e62701b9d 100644 --- a/test/abilities/defiant.test.ts +++ b/test/abilities/defiant.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Abilities - Defiant", () => { it("lower atk and def by 1 via tickle, then increase atk by 4 via defiant", async () => { await game.classicMode.startBattle([SpeciesId.FLYGON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); @@ -48,7 +48,7 @@ describe("Abilities - Defiant", () => { game.override.enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.FLYGON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(TurnInitPhase); @@ -61,7 +61,7 @@ describe("Abilities - Defiant", () => { game.override.startingHeldItems([{ name: "WHITE_HERB" }]); await game.classicMode.startBattle([SpeciesId.FLYGON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); diff --git a/test/abilities/desolate-land.test.ts b/test/abilities/desolate-land.test.ts index fc066fa8955..15dd1897864 100644 --- a/test/abilities/desolate-land.test.ts +++ b/test/abilities/desolate-land.test.ts @@ -6,7 +6,7 @@ import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import type { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -145,7 +145,7 @@ describe("Abilities - Desolate Land", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); - vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); + vi.spyOn(game.field.getPlayerPokemon(), "randBattleSeedInt").mockReturnValue(0); vi.spyOn(globalScene, "randBattleSeedInt").mockReturnValue(0); const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; diff --git a/test/abilities/disguise.test.ts b/test/abilities/disguise.test.ts index 9bd36def8d7..4745d6ab609 100644 --- a/test/abilities/disguise.test.ts +++ b/test/abilities/disguise.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Abilities - Disguise", () => { it("takes no damage from attacking move and transforms to Busted form, takes 1/8 max HP damage from the disguise breaking", async () => { await game.classicMode.startBattle(); - const mimikyu = game.scene.getEnemyPokemon()!; + const mimikyu = game.field.getEnemyPokemon(); const maxHp = mimikyu.getMaxHp(); const disguiseDamage = toDmgValue(maxHp / 8); @@ -54,7 +54,7 @@ describe("Abilities - Disguise", () => { it("doesn't break disguise when attacked with ineffective move", async () => { await game.classicMode.startBattle(); - const mimikyu = game.scene.getEnemyPokemon()!; + const mimikyu = game.field.getEnemyPokemon(); expect(mimikyu.formIndex).toBe(disguisedForm); @@ -69,7 +69,7 @@ describe("Abilities - Disguise", () => { game.override.moveset([MoveId.SURGING_STRIKES]).enemyLevel(5); await game.classicMode.startBattle(); - const mimikyu = game.scene.getEnemyPokemon()!; + const mimikyu = game.field.getEnemyPokemon(); const maxHp = mimikyu.getMaxHp(); const disguiseDamage = toDmgValue(maxHp / 8); @@ -91,7 +91,7 @@ describe("Abilities - Disguise", () => { it("takes effects from status moves and damage from status effects", async () => { await game.classicMode.startBattle(); - const mimikyu = game.scene.getEnemyPokemon()!; + const mimikyu = game.field.getEnemyPokemon(); expect(mimikyu.hp).toBe(mimikyu.getMaxHp()); game.move.select(MoveId.TOXIC_THREAD); @@ -109,7 +109,7 @@ describe("Abilities - Disguise", () => { await game.classicMode.startBattle([SpeciesId.MIMIKYU, SpeciesId.FURRET]); - const mimikyu = game.scene.getPlayerPokemon()!; + const mimikyu = game.field.getPlayerPokemon(); const maxHp = mimikyu.getMaxHp(); const disguiseDamage = toDmgValue(maxHp / 8); @@ -154,7 +154,7 @@ describe("Abilities - Disguise", () => { await game.classicMode.startBattle(); - const mimikyu = game.scene.getPlayerPokemon()!; + const mimikyu = game.field.getPlayerPokemon(); expect(mimikyu.formIndex).toBe(bustedForm); @@ -175,7 +175,7 @@ describe("Abilities - Disguise", () => { await game.classicMode.startBattle([SpeciesId.MIMIKYU, SpeciesId.FURRET]); - const mimikyu1 = game.scene.getPlayerPokemon()!; + const mimikyu1 = game.field.getPlayerPokemon(); expect(mimikyu1.formIndex).toBe(bustedForm); @@ -190,7 +190,7 @@ describe("Abilities - Disguise", () => { game.override.enemyMoveset([MoveId.ENDURE]); await game.classicMode.startBattle(); - const mimikyu = game.scene.getEnemyPokemon()!; + const mimikyu = game.field.getEnemyPokemon(); mimikyu.hp = 1; game.move.select(MoveId.SHADOW_SNEAK); @@ -205,7 +205,7 @@ describe("Abilities - Disguise", () => { await game.classicMode.startBattle(); - const mimikyu = game.scene.getEnemyPokemon()!; + const mimikyu = game.field.getEnemyPokemon(); const maxHp = mimikyu.getMaxHp(); const disguiseDamage = toDmgValue(maxHp / 8); @@ -225,6 +225,6 @@ describe("Abilities - Disguise", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.formIndex).toBe(disguisedForm); + expect(game.field.getEnemyPokemon().formIndex).toBe(disguisedForm); }); }); diff --git a/test/abilities/dry_skin.test.ts b/test/abilities/dry-skin.test.ts similarity index 91% rename from test/abilities/dry_skin.test.ts rename to test/abilities/dry-skin.test.ts index 712d3295e6f..ad88c5aa377 100644 --- a/test/abilities/dry_skin.test.ts +++ b/test/abilities/dry-skin.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,7 +35,7 @@ describe("Abilities - Dry Skin", () => { it("during sunlight, lose 1/8 of maximum health at the end of each turn", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); // first turn game.move.select(MoveId.SUNNY_DAY); @@ -52,7 +52,7 @@ describe("Abilities - Dry Skin", () => { it("during rain, gain 1/8 of maximum health at the end of each turn", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1; @@ -72,7 +72,7 @@ describe("Abilities - Dry Skin", () => { game.override.moveset([MoveId.FLAMETHROWER]); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); const initialHP = 1000; enemy.hp = initialHP; @@ -95,7 +95,7 @@ describe("Abilities - Dry Skin", () => { it("opposing water attacks heal 1/4 of maximum health and deal no damage", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1; @@ -109,7 +109,7 @@ describe("Abilities - Dry Skin", () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1; @@ -123,7 +123,7 @@ describe("Abilities - Dry Skin", () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1; @@ -145,7 +145,7 @@ describe("Abilities - Dry Skin", () => { it("opposing water moves still heal regardless of accuracy check", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.WATER_GUN); enemy.hp = enemy.hp - 1; diff --git a/test/abilities/early_bird.test.ts b/test/abilities/early-bird.test.ts similarity index 92% rename from test/abilities/early_bird.test.ts rename to test/abilities/early-bird.test.ts index be4a2c802af..a7318fd8c6e 100644 --- a/test/abilities/early_bird.test.ts +++ b/test/abilities/early-bird.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Abilities - Early Bird", () => { it("reduces Rest's sleep time to 1 turn", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); game.move.select(MoveId.BELLY_DRUM); await game.toNextTurn(); @@ -62,7 +62,7 @@ describe("Abilities - Early Bird", () => { it("reduces 3-turn sleep to 1 turn", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.status = new Status(StatusEffect.SLEEP, 0, 4); game.move.select(MoveId.SPLASH); @@ -81,7 +81,7 @@ describe("Abilities - Early Bird", () => { it("reduces 1-turn sleep to 0 turns", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.status = new Status(StatusEffect.SLEEP, 0, 2); game.move.select(MoveId.SPLASH); diff --git a/test/abilities/flash_fire.test.ts b/test/abilities/flash-fire.test.ts similarity index 90% rename from test/abilities/flash_fire.test.ts rename to test/abilities/flash-fire.test.ts index d6085c4e591..a9d837e6e40 100644 --- a/test/abilities/flash_fire.test.ts +++ b/test/abilities/flash-fire.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { MovePhase } from "#phases/move-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -39,7 +39,7 @@ describe("Abilities - Flash Fire", () => { game.override.enemyMoveset([MoveId.EMBER]).moveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.BLISSEY]); - const blissey = game.scene.getPlayerPokemon()!; + const blissey = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -50,7 +50,7 @@ describe("Abilities - Flash Fire", () => { game.override.enemyMoveset([MoveId.EMBER]).moveset([MoveId.PROTECT]); await game.classicMode.startBattle([SpeciesId.BLISSEY]); - const blissey = game.scene.getPlayerPokemon()!; + const blissey = game.field.getPlayerPokemon(); game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to(TurnEndPhase); @@ -61,7 +61,7 @@ describe("Abilities - Flash Fire", () => { game.override.enemyMoveset([MoveId.WILL_O_WISP]).moveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.BLISSEY]); - const blissey = game.scene.getPlayerPokemon()!; + const blissey = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.move.forceHit(); @@ -76,7 +76,7 @@ describe("Abilities - Flash Fire", () => { game.override.enemyMoveset([MoveId.EMBER]).moveset(MoveId.SPLASH).statusEffect(StatusEffect.FREEZE); await game.classicMode.startBattle([SpeciesId.BLISSEY]); - const blissey = game.scene.getPlayerPokemon()!; + const blissey = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); @@ -95,8 +95,8 @@ describe("Abilities - Flash Fire", () => { game.doSelectPartyPokemon(1); await game.phaseInterceptor.to(TurnEndPhase); - const chansey = game.scene.getPlayerPokemon()!; - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.CHANSEY); + const chansey = game.field.getPlayerPokemon(); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.CHANSEY); expect(chansey!.getTag(BattlerTagType.FIRE_BOOST)).toBeUndefined(); }); @@ -107,7 +107,7 @@ describe("Abilities - Flash Fire", () => { .enemyAbility(AbilityId.FLASH_FIRE) .ability(AbilityId.NONE); await game.classicMode.startBattle([SpeciesId.BLISSEY]); - const blissey = game.scene.getPlayerPokemon()!; + const blissey = game.field.getPlayerPokemon(); const initialHP = 1000; blissey.hp = initialHP; @@ -137,7 +137,7 @@ describe("Abilities - Flash Fire", () => { .enemySpecies(SpeciesId.BLISSEY); await game.classicMode.startBattle([SpeciesId.RATTATA]); - const blissey = game.scene.getEnemyPokemon()!; + const blissey = game.field.getEnemyPokemon(); const initialHP = 1000; blissey.hp = initialHP; diff --git a/test/abilities/flower_gift.test.ts b/test/abilities/flower-gift.test.ts similarity index 96% rename from test/abilities/flower_gift.test.ts rename to test/abilities/flower-gift.test.ts index b283729d951..01459cd4e1e 100644 --- a/test/abilities/flower_gift.test.ts +++ b/test/abilities/flower-gift.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,7 +27,7 @@ describe("Abilities - Flower Gift", () => { game.move.select(MoveId.SPLASH); - expect(game.scene.getPlayerPokemon()?.formIndex).toBe(OVERCAST_FORM); + expect(game.field.getPlayerPokemon().formIndex).toBe(OVERCAST_FORM); }; /** @@ -169,7 +169,7 @@ describe("Abilities - Flower Gift", () => { game.override.weather(WeatherType.HARSH_SUN); await game.classicMode.startBattle([SpeciesId.CHERRIM]); - const cherrim = game.scene.getPlayerPokemon()!; + const cherrim = game.field.getPlayerPokemon(); expect(cherrim.formIndex).toBe(SUNSHINE_FORM); game.move.select(MoveId.SPLASH); @@ -188,7 +188,7 @@ describe("Abilities - Flower Gift", () => { await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]); - const cherrim = game.scene.getPlayerPokemon()!; + const cherrim = game.field.getPlayerPokemon(); expect(cherrim.formIndex).toBe(SUNSHINE_FORM); @@ -215,7 +215,7 @@ describe("Abilities - Flower Gift", () => { game.override.weather(WeatherType.SUNNY); await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]); - const cherrim = game.scene.getPlayerPokemon()!; + const cherrim = game.field.getPlayerPokemon(); expect(cherrim.formIndex).toBe(SUNSHINE_FORM); diff --git a/test/abilities/flower_veil.test.ts b/test/abilities/flower-veil.test.ts similarity index 96% rename from test/abilities/flower_veil.test.ts rename to test/abilities/flower-veil.test.ts index e890ea24fad..44274d86a1b 100644 --- a/test/abilities/flower_veil.test.ts +++ b/test/abilities/flower-veil.test.ts @@ -6,7 +6,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -46,7 +46,7 @@ describe("Abilities - Flower Veil", () => { .moveset([MoveId.REST, MoveId.SPLASH]) .startingHeldItems([{ name: "FLAME_ORB" }]); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); game.move.select(MoveId.REST); await game.move.selectEnemyMove(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -74,7 +74,7 @@ describe("Abilities - Flower Veil", () => { await game.move.selectEnemyMove(MoveId.YAWN, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); expect(user.getTag(BattlerTagType.DROWSY)).toBeFalsy(); expect(ally.getTag(BattlerTagType.DROWSY)).toBeFalsy(); }); @@ -87,7 +87,7 @@ describe("Abilities - Flower Veil", () => { game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.THUNDER_WAVE); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); }); it("should not prevent status conditions for a non-grass user and its non-grass allies", async () => { @@ -155,7 +155,7 @@ describe("Abilities - Flower Veil", () => { it("should prevent the drops while retaining the boosts from spicy extract", async () => { game.override.enemyMoveset([MoveId.SPICY_EXTRACT]).moveset([MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(user.getStatStage(Stat.ATK)).toBe(2); diff --git a/test/abilities/forecast.test.ts b/test/abilities/forecast.test.ts index 372e32a27fa..87d1d20acdb 100644 --- a/test/abilities/forecast.test.ts +++ b/test/abilities/forecast.test.ts @@ -9,7 +9,7 @@ import { MovePhase } from "#phases/move-phase"; import { PostSummonPhase } from "#phases/post-summon-phase"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -32,7 +32,7 @@ describe("Abilities - Forecast", () => { game.move.select(MoveId.SPLASH); - expect(game.scene.getPlayerPokemon()?.formIndex).toBe(NORMAL_FORM); + expect(game.field.getPlayerPokemon().formIndex).toBe(NORMAL_FORM); }; beforeAll(() => { @@ -186,14 +186,14 @@ describe("Abilities - Forecast", () => { game.move.select(MoveId.RAIN_DANCE); await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()?.formIndex).toBe(RAINY_FORM); - expect(game.scene.getEnemyPokemon()?.formIndex).not.toBe(RAINY_FORM); + expect(game.field.getPlayerPokemon().formIndex).toBe(RAINY_FORM); + expect(game.field.getEnemyPokemon().formIndex).not.toBe(RAINY_FORM); }); it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => { game.override.enemyMoveset([MoveId.GASTRO_ACID]).weather(WeatherType.RAIN); await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.PIKACHU]); - const castform = game.scene.getPlayerPokemon()!; + const castform = game.field.getPlayerPokemon(); expect(castform.formIndex).toBe(RAINY_FORM); @@ -233,7 +233,7 @@ describe("Abilities - Forecast", () => { game.doSwitchPokemon(1); await game.phaseInterceptor.to(PostSummonPhase); - const castform = game.scene.getPlayerPokemon()!; + const castform = game.field.getPlayerPokemon(); // Damage phase should come first await game.phaseInterceptor.to(DamageAnimPhase); @@ -248,7 +248,7 @@ describe("Abilities - Forecast", () => { game.override.weather(WeatherType.RAIN); await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]); - const castform = game.scene.getPlayerPokemon()!; + const castform = game.field.getPlayerPokemon(); expect(castform.formIndex).toBe(RAINY_FORM); @@ -263,14 +263,14 @@ describe("Abilities - Forecast", () => { it("should trigger player's form change when summoned at the same time as an enemy with a weather changing ability", async () => { game.override.enemyAbility(AbilityId.DROUGHT); await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]); - const castform = game.scene.getPlayerPokemon()!; + const castform = game.field.getPlayerPokemon(); expect(castform.formIndex).toBe(SUNNY_FORM); }); it("should trigger enemy's form change when summoned at the same time as a player with a weather changing ability", async () => { game.override.ability(AbilityId.DROUGHT).enemySpecies(SpeciesId.CASTFORM).enemyAbility(AbilityId.FORECAST); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const castform = game.scene.getEnemyPokemon()!; + const castform = game.field.getEnemyPokemon(); expect(castform.formIndex).toBe(SUNNY_FORM); }); }); diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend-guard.test.ts similarity index 97% rename from test/abilities/friend_guard.test.ts rename to test/abilities/friend-guard.test.ts index e26fd5b5f1f..32f4fe06df4 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend-guard.test.ts @@ -1,10 +1,10 @@ import { allAbilities, allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/good_as_gold.test.ts b/test/abilities/good-as-gold.test.ts similarity index 98% rename from test/abilities/good_as_gold.test.ts rename to test/abilities/good-as-gold.test.ts index 956553a96d9..c6b6faf8349 100644 --- a/test/abilities/good_as_gold.test.ts +++ b/test/abilities/good-as-gold.test.ts @@ -9,7 +9,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -43,7 +43,7 @@ describe("Abilities - Good As Gold", () => { game.override.enemyMoveset([MoveId.GROWL]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); diff --git a/test/abilities/gorilla_tactics.test.ts b/test/abilities/gorilla-tactics.test.ts similarity index 96% rename from test/abilities/gorilla_tactics.test.ts rename to test/abilities/gorilla-tactics.test.ts index 05714fe77ea..01acd2295ab 100644 --- a/test/abilities/gorilla_tactics.test.ts +++ b/test/abilities/gorilla-tactics.test.ts @@ -6,7 +6,7 @@ import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { RandomMoveAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -40,7 +40,7 @@ describe("Abilities - Gorilla Tactics", () => { it("boosts the Pokémon's Attack by 50%, but limits the Pokémon to using only one move", async () => { await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); - const darmanitan = game.scene.getPlayerPokemon()!; + const darmanitan = game.field.getPlayerPokemon(); const initialAtkStat = darmanitan.getStat(Stat.ATK); game.move.select(MoveId.SPLASH); @@ -86,7 +86,7 @@ describe("Abilities - Gorilla Tactics", () => { vi.spyOn(RandomMoveAttr.prototype, "getMoveOverride").mockReturnValue(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); - const darmanitan = game.scene.getPlayerPokemon()!; + const darmanitan = game.field.getPlayerPokemon(); game.move.select(MoveId.METRONOME); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/abilities/guard-dog.test.ts b/test/abilities/guard-dog.test.ts index aef8f081975..fb06c4c76c3 100644 --- a/test/abilities/guard-dog.test.ts +++ b/test/abilities/guard-dog.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/gulp_missile.test.ts b/test/abilities/gulp-missile.test.ts similarity index 89% rename from test/abilities/gulp_missile.test.ts rename to test/abilities/gulp-missile.test.ts index 69ed6c51ac9..865a319251f 100644 --- a/test/abilities/gulp_missile.test.ts +++ b/test/abilities/gulp-missile.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import type { Pokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -52,7 +52,7 @@ describe("Abilities - Gulp Missile", () => { it("changes to Gulping Form if HP is over half when Surf or Dive is used", async () => { await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); game.move.select(MoveId.DIVE); await game.toNextTurn(); @@ -66,7 +66,7 @@ describe("Abilities - Gulp Missile", () => { it("changes to Gorging Form if HP is under half when Surf or Dive is used", async () => { await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.49); expect(cramorant.getHpRatio()).toBe(0.49); @@ -80,7 +80,7 @@ describe("Abilities - Gulp Missile", () => { it("changes to base form when switched out after Surf or Dive is used", async () => { await game.classicMode.startBattle([SpeciesId.CRAMORANT, SpeciesId.MAGIKARP]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); game.move.select(MoveId.SURF); await game.toNextTurn(); @@ -95,7 +95,7 @@ describe("Abilities - Gulp Missile", () => { it("changes form during Dive's charge turn", async () => { await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("MoveEndPhase"); @@ -108,7 +108,7 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "damageAndUpdate"); game.move.select(MoveId.SURF); @@ -121,7 +121,7 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.TAIL_WHIP); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); game.move.select(MoveId.SURF); @@ -140,8 +140,8 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const cramorant = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "damageAndUpdate"); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); @@ -164,8 +164,8 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const cramorant = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "damageAndUpdate"); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.45); @@ -188,7 +188,7 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.SURF); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("BerryPhase", false); @@ -201,8 +201,8 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.TACKLE).enemyAbility(AbilityId.MAGIC_GUARD); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const cramorant = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); @@ -225,7 +225,7 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.THUNDERBOLT); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); game.move.select(MoveId.SURF); await game.phaseInterceptor.to("FaintPhase"); @@ -233,7 +233,7 @@ describe("Abilities - Gulp Missile", () => { expect(cramorant.hp).toBe(0); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeUndefined(); expect(cramorant.formIndex).toBe(NORMAL_FORM); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.DEF)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.DEF)).toBe(-1); }); it("doesn't trigger if user is behind a substitute", async () => { @@ -244,21 +244,21 @@ describe("Abilities - Gulp Missile", () => { await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM); + expect(game.field.getPlayerPokemon().formIndex).toBe(GULPING_FORM); game.move.select(MoveId.SUBSTITUTE); await game.move.selectEnemyMove(MoveId.POWER_TRIP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM); + expect(game.field.getPlayerPokemon().formIndex).toBe(GULPING_FORM); }); it("cannot be suppressed", async () => { game.override.enemyMoveset(MoveId.GASTRO_ACID); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); game.move.select(MoveId.SURF); @@ -278,7 +278,7 @@ describe("Abilities - Gulp Missile", () => { game.override.enemyMoveset(MoveId.SKILL_SWAP); await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - const cramorant = game.scene.getPlayerPokemon()!; + const cramorant = game.field.getPlayerPokemon(); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); game.move.select(MoveId.SURF); @@ -301,6 +301,6 @@ describe("Abilities - Gulp Missile", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnStartPhase"); - expect(game.scene.getEnemyPokemon()?.hasAbility(AbilityId.GULP_MISSILE)).toBe(false); + expect(game.field.getEnemyPokemon().hasAbility(AbilityId.GULP_MISSILE)).toBe(false); }); }); diff --git a/test/abilities/harvest.test.ts b/test/abilities/harvest.test.ts index 244de383b44..ec4c02c7b91 100644 --- a/test/abilities/harvest.test.ts +++ b/test/abilities/harvest.test.ts @@ -9,7 +9,7 @@ import { WeatherType } from "#enums/weather-type"; import type { Pokemon } from "#field/pokemon"; import { BerryModifier, PreserveBerryModifier } from "#modifiers/modifier"; import type { ModifierOverride } from "#modifiers/modifier-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { BooleanHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -19,7 +19,7 @@ describe("Abilities - Harvest", () => { let game: GameManager; const getPlayerBerries = () => - game.scene.getModifiers(BerryModifier, true).filter(b => b.pokemonId === game.scene.getPlayerPokemon()?.id); + game.scene.getModifiers(BerryModifier, true).filter(b => b.pokemonId === game.field.getPlayerPokemon().id); /** Check whether the player's Modifiers contains the specified berries and nothing else. */ function expectBerriesContaining(...berries: ModifierOverride[]): void { @@ -64,11 +64,11 @@ describe("Abilities - Harvest", () => { await game.move.selectEnemyMove(MoveId.NUZZLE); await game.phaseInterceptor.to("BerryPhase"); expect(getPlayerBerries()).toHaveLength(0); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(1); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toHaveLength(1); await game.phaseInterceptor.to("TurnEndPhase"); expectBerriesContaining({ name: "BERRY", type: BerryType.LUM, count: 1 }); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toEqual([]); }); it("tracks berries eaten while disabled/not present", async () => { @@ -82,7 +82,7 @@ describe("Abilities - Harvest", () => { .enemyAbility(AbilityId.NEUTRALIZING_GAS); await game.classicMode.startBattle([SpeciesId.MILOTIC]); - const milotic = game.scene.getPlayerPokemon()!; + const milotic = game.field.getPlayerPokemon(); expect(milotic).toBeDefined(); // Chug a few berries without harvest (should get tracked) @@ -122,7 +122,7 @@ describe("Abilities - Harvest", () => { .ability(AbilityId.BALL_FETCH); // don't actually need harvest for this test await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const regieleki = game.scene.getPlayerPokemon()!; + const regieleki = game.field.getPlayerPokemon(); regieleki.hp = 1; game.move.select(MoveId.SPLASH); @@ -150,7 +150,7 @@ describe("Abilities - Harvest", () => { .enemyAbility(AbilityId.COMPOUND_EYES); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const regieleki = game.scene.getPlayerPokemon()!; + const regieleki = game.field.getPlayerPokemon(); regieleki.hp = regieleki.getMaxHp() / 4 + 1; game.move.select(MoveId.SPLASH); @@ -161,7 +161,7 @@ describe("Abilities - Harvest", () => { // ate 1 berry and recovered it expect(regieleki.battleData.berriesEaten).toEqual([]); expect(getPlayerBerries()).toEqual([expect.objectContaining({ berryType: BerryType.PETAYA, stackCount: 1 })]); - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.SPATK)).toBe(1); // heal up so harvest doesn't proc and kill enemy game.move.select(MoveId.EARTHQUAKE); @@ -170,13 +170,13 @@ describe("Abilities - Harvest", () => { await game.toNextWave(); expectBerriesContaining({ name: "BERRY", count: 1, type: BerryType.PETAYA }); - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.SPATK)).toBe(1); await game.reload.reloadSession(); expect(regieleki.battleData.berriesEaten).toEqual([]); expectBerriesContaining({ name: "BERRY", count: 1, type: BerryType.PETAYA }); - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.SPATK)).toBe(1); }); it("cannot restore capped berries", async () => { @@ -187,7 +187,7 @@ describe("Abilities - Harvest", () => { game.override.startingHeldItems(initBerries); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const feebas = game.scene.getPlayerPokemon()!; + const feebas = game.field.getPlayerPokemon(); feebas.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; game.move.select(MoveId.SPLASH); @@ -215,7 +215,7 @@ describe("Abilities - Harvest", () => { game.override.startingHeldItems(initBerries); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; game.move.select(MoveId.SPLASH); @@ -234,7 +234,7 @@ describe("Abilities - Harvest", () => { await game.move.selectEnemyMove(MoveId.INCINERATE); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toEqual([]); }); it("cannot restore knocked off berries", async () => { @@ -245,7 +245,7 @@ describe("Abilities - Harvest", () => { await game.move.selectEnemyMove(MoveId.KNOCK_OFF); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toEqual([]); }); it("can restore berries eaten by Teatime", async () => { @@ -257,7 +257,7 @@ describe("Abilities - Harvest", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toEqual([]); expectBerriesContaining(...initBerries); }); @@ -271,8 +271,8 @@ describe("Abilities - Harvest", () => { await game.phaseInterceptor.to("BerryPhase"); // pluck triggers harvest for neither side - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); - expect(game.scene.getEnemyPokemon()?.battleData.berriesEaten).toEqual([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toEqual([]); + expect(game.field.getEnemyPokemon().battleData.berriesEaten).toEqual([]); expect(getPlayerBerries()).toEqual([]); }); @@ -293,7 +293,7 @@ describe("Abilities - Harvest", () => { await game.phaseInterceptor.to("TurnEndPhase", false); // won't trigger harvest since we didn't lose the berry (it just doesn't ever add it to the array) - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toEqual([]); expectBerriesContaining(...initBerries); }); @@ -303,7 +303,7 @@ describe("Abilities - Harvest", () => { await game.classicMode.startBattle([SpeciesId.MEOWSCARADA]); // pre damage - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.hp = 1; // steal a sitrus and immediately consume it @@ -326,7 +326,7 @@ describe("Abilities - Harvest", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toBe([]); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toBe([]); expect(getPlayerBerries()).toEqual([]); }); @@ -339,7 +339,7 @@ describe("Abilities - Harvest", () => { game.move.select(MoveId.NATURAL_GIFT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(0); + expect(game.field.getPlayerPokemon().battleData.berriesEaten).toHaveLength(0); expectBerriesContaining(...initBerries); }); }); diff --git a/test/abilities/healer.test.ts b/test/abilities/healer.test.ts index 8ce8b5bada0..52f47535bf4 100644 --- a/test/abilities/healer.test.ts +++ b/test/abilities/healer.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import type { Pokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { isNullOrUndefined } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -46,7 +46,7 @@ describe("Abilities - Healer", () => { game.override.moveset([MoveId.SPLASH, MoveId.LUNAR_DANCE]); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); // Only want one magikarp to have the ability vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[AbilityId.HEALER]); game.move.select(MoveId.SPLASH); diff --git a/test/abilities/heatproof.test.ts b/test/abilities/heatproof.test.ts index 0d76c1ad40b..25e9be12809 100644 --- a/test/abilities/heatproof.test.ts +++ b/test/abilities/heatproof.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,7 +40,7 @@ describe("Abilities - Heatproof", () => { it("reduces Fire type damage by half", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); const initialHP = 1000; enemy.hp = initialHP; @@ -63,7 +63,7 @@ describe("Abilities - Heatproof", () => { game.override.enemyStatusEffect(StatusEffect.BURN).enemySpecies(SpeciesId.ABRA); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.SPLASH); await game.toNextTurn(); diff --git a/test/abilities/honey_gather.test.ts b/test/abilities/honey-gather.test.ts similarity index 95% rename from test/abilities/honey_gather.test.ts rename to test/abilities/honey-gather.test.ts index 65c590083f5..e2f356470ae 100644 --- a/test/abilities/honey_gather.test.ts +++ b/test/abilities/honey-gather.test.ts @@ -4,7 +4,7 @@ import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -62,7 +62,7 @@ describe("Abilities - Honey Gather", () => { game.scene.money = 1000; // something weird is going on with the test framework, so this is required to prevent a crash - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "scene", "get").mockReturnValue(game.scene); // Expects next wave so run must succeed vi.spyOn(Overrides, "RUN_SUCCESS_OVERRIDE", "get").mockReturnValue(true); diff --git a/test/abilities/hustle.test.ts b/test/abilities/hustle.test.ts index 94045d231d1..5280df7b9de 100644 --- a/test/abilities/hustle.test.ts +++ b/test/abilities/hustle.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -35,7 +35,7 @@ describe("Abilities - Hustle", () => { it("increases the user's Attack stat by 50%", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; + const pikachu = game.field.getPlayerPokemon(); const atk = pikachu.stats[Stat.ATK]; vi.spyOn(pikachu, "getEffectiveStat"); @@ -49,7 +49,7 @@ describe("Abilities - Hustle", () => { it("lowers the accuracy of the user's physical moves by 20%", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; + const pikachu = game.field.getPlayerPokemon(); vi.spyOn(pikachu, "getAccuracyMultiplier"); @@ -61,7 +61,7 @@ describe("Abilities - Hustle", () => { it("does not affect non-physical moves", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; + const pikachu = game.field.getPlayerPokemon(); const spatk = pikachu.stats[Stat.SPATK]; vi.spyOn(pikachu, "getEffectiveStat"); @@ -78,8 +78,8 @@ describe("Abilities - Hustle", () => { game.override.startingLevel(100).enemyLevel(30); await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const pikachu = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(pikachu, "getAccuracyMultiplier"); vi.spyOn(allMoves[MoveId.FISSURE], "calculateBattleAccuracy"); diff --git a/test/abilities/hyper_cutter.test.ts b/test/abilities/hyper-cutter.test.ts similarity index 93% rename from test/abilities/hyper_cutter.test.ts rename to test/abilities/hyper-cutter.test.ts index 212083b62b6..51244532c79 100644 --- a/test/abilities/hyper_cutter.test.ts +++ b/test/abilities/hyper-cutter.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Abilities - Hyper Cutter", () => { it("only prevents ATK drops", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); diff --git a/test/abilities/ice_face.test.ts b/test/abilities/ice-face.test.ts similarity index 90% rename from test/abilities/ice_face.test.ts rename to test/abilities/ice-face.test.ts index a0e2a949672..2410cd8492f 100644 --- a/test/abilities/ice_face.test.ts +++ b/test/abilities/ice-face.test.ts @@ -8,7 +8,7 @@ import { MoveEndPhase } from "#phases/move-end-phase"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -44,7 +44,7 @@ describe("Abilities - Ice Face", () => { await game.phaseInterceptor.to(MoveEndPhase); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.isFullHp()).toBe(true); expect(eiscue.formIndex).toBe(noiceForm); @@ -57,7 +57,7 @@ describe("Abilities - Ice Face", () => { game.move.select(MoveId.SURGING_STRIKES); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeDefined(); // First hit @@ -85,7 +85,7 @@ describe("Abilities - Ice Face", () => { await game.phaseInterceptor.to(MoveEndPhase); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); expect(eiscue.formIndex).toBe(icefaceForm); @@ -99,7 +99,7 @@ describe("Abilities - Ice Face", () => { await game.phaseInterceptor.to(MoveEndPhase); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); expect(eiscue.formIndex).toBe(icefaceForm); @@ -114,7 +114,7 @@ describe("Abilities - Ice Face", () => { await game.phaseInterceptor.to(MoveEndPhase); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.isFullHp()).toBe(true); expect(eiscue.formIndex).toBe(noiceForm); @@ -134,7 +134,7 @@ describe("Abilities - Ice Face", () => { game.move.select(MoveId.SNOWSCAPE); await game.phaseInterceptor.to(TurnEndPhase); - let eiscue = game.scene.getPlayerPokemon()!; + let eiscue = game.field.getPlayerPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeUndefined(); expect(eiscue.formIndex).toBe(noiceForm); @@ -146,7 +146,7 @@ describe("Abilities - Ice Face", () => { game.doSwitchPokemon(1); await game.phaseInterceptor.to(QuietFormChangePhase); - eiscue = game.scene.getPlayerPokemon()!; + eiscue = game.field.getPlayerPokemon(); expect(eiscue.formIndex).toBe(icefaceForm); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); @@ -158,7 +158,7 @@ describe("Abilities - Ice Face", () => { await game.classicMode.startBattle([SpeciesId.EISCUE]); game.move.select(MoveId.HAIL); - const eiscue = game.scene.getPlayerPokemon()!; + const eiscue = game.field.getPlayerPokemon(); await game.phaseInterceptor.to(QuietFormChangePhase); @@ -179,7 +179,7 @@ describe("Abilities - Ice Face", () => { game.move.select(MoveId.ICE_BEAM); await game.phaseInterceptor.to(TurnEndPhase); - let eiscue = game.scene.getPlayerPokemon()!; + let eiscue = game.field.getPlayerPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeUndefined(); expect(eiscue.formIndex).toBe(noiceForm); @@ -206,7 +206,7 @@ describe("Abilities - Ice Face", () => { await game.classicMode.startBattle([SpeciesId.EISCUE]); - const eiscue = game.scene.getPlayerPokemon()!; + const eiscue = game.field.getPlayerPokemon(); expect(eiscue.formIndex).toBe(noiceForm); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeUndefined(); @@ -229,7 +229,7 @@ describe("Abilities - Ice Face", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.formIndex).toBe(icefaceForm); + expect(game.field.getEnemyPokemon().formIndex).toBe(icefaceForm); }); it("cannot be suppressed", async () => { @@ -241,7 +241,7 @@ describe("Abilities - Ice Face", () => { await game.phaseInterceptor.to(TurnEndPhase); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); expect(eiscue.formIndex).toBe(icefaceForm); @@ -257,7 +257,7 @@ describe("Abilities - Ice Face", () => { await game.phaseInterceptor.to(TurnEndPhase); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeDefined(); expect(eiscue.formIndex).toBe(icefaceForm); @@ -269,10 +269,10 @@ describe("Abilities - Ice Face", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const eiscue = game.scene.getEnemyPokemon()!; + const eiscue = game.field.getEnemyPokemon(); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeDefined(); expect(eiscue.formIndex).toBe(icefaceForm); - expect(game.scene.getPlayerPokemon()!.hasAbility(AbilityId.TRACE)).toBe(true); + expect(game.field.getPlayerPokemon().hasAbility(AbilityId.TRACE)).toBe(true); }); }); diff --git a/test/abilities/illuminate.test.ts b/test/abilities/illuminate.test.ts index 0fb31379542..3cf0bc90702 100644 --- a/test/abilities/illuminate.test.ts +++ b/test/abilities/illuminate.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Abilities - Illuminate", () => { await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); expect(player.getStatStage(Stat.ACC)).toBe(0); diff --git a/test/abilities/illusion.test.ts b/test/abilities/illusion.test.ts index 0624c5e19f4..2343a11cb74 100644 --- a/test/abilities/illusion.test.ts +++ b/test/abilities/illusion.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,8 +35,8 @@ describe("Abilities - Illusion", () => { it("creates illusion at the start", async () => { await game.classicMode.startBattle([SpeciesId.ZOROARK, SpeciesId.FEEBAS]); - const zoroark = game.scene.getPlayerPokemon()!; - const zorua = game.scene.getEnemyPokemon()!; + const zoroark = game.field.getPlayerPokemon(); + const zorua = game.field.getEnemyPokemon(); expect(!!zoroark.summonData.illusion).equals(true); expect(!!zorua.summonData.illusion).equals(true); @@ -48,7 +48,7 @@ describe("Abilities - Illusion", () => { await game.phaseInterceptor.to("TurnEndPhase"); - const zorua = game.scene.getEnemyPokemon()!; + const zorua = game.field.getEnemyPokemon(); expect(!!zorua.summonData.illusion).equals(false); expect(zorua.name).equals("Zorua"); @@ -60,7 +60,7 @@ describe("Abilities - Illusion", () => { await game.phaseInterceptor.to("TurnEndPhase"); - const zorua = game.scene.getEnemyPokemon()!; + const zorua = game.field.getEnemyPokemon(); expect(!!zorua.summonData.illusion).equals(false); }); @@ -69,7 +69,7 @@ describe("Abilities - Illusion", () => { game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS); await game.classicMode.startBattle([SpeciesId.KOFFING]); - const zorua = game.scene.getEnemyPokemon()!; + const zorua = game.field.getEnemyPokemon(); expect(!!zorua.summonData.illusion).equals(false); }); @@ -85,15 +85,15 @@ describe("Abilities - Illusion", () => { game.doSwitchPokemon(1); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.summonData.illusion).toBeFalsy(); + expect(game.field.getPlayerPokemon().summonData.illusion).toBeFalsy(); }); it("causes enemy AI to consider the illusion's type instead of the actual type when considering move effectiveness", async () => { game.override.enemyMoveset([MoveId.FLAMETHROWER, MoveId.PSYCHIC, MoveId.TACKLE]); await game.classicMode.startBattle([SpeciesId.ZOROARK, SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; - const zoroark = game.scene.getPlayerPokemon()!; + const enemy = game.field.getEnemyPokemon(); + const zoroark = game.field.getPlayerPokemon(); const flameThrower = enemy.getMoveset()[0]!.getMove(); const psychic = enemy.getMoveset()[1]!.getMove(); @@ -125,7 +125,7 @@ describe("Abilities - Illusion", () => { await game.move.forceEnemyMove(MoveId.WILL_O_WISP); await game.toEndOfTurn(); - const zoroark = game.scene.getPlayerPokemon()!; + const zoroark = game.field.getPlayerPokemon(); expect(!!zoroark.summonData.illusion).equals(true); }); @@ -143,10 +143,10 @@ describe("Abilities - Illusion", () => { await game.phaseInterceptor.to("TurnEndPhase"); - const zoroark = game.scene.getPlayerPokemon()!; + const zoroark = game.field.getPlayerPokemon(); - expect(zoroark.name).equals("Axew"); - expect(zoroark.getNameToRender()).equals("axew nickname"); + expect(zoroark.summonData.illusion?.name).equals("Axew"); + expect(zoroark.getNameToRender(true)).equals("axew nickname"); expect(zoroark.getGender(false, true)).equals(Gender.FEMALE); expect(zoroark.isShiny(true)).equals(true); expect(zoroark.getPokeball(true)).equals(PokeballType.GREAT_BALL); @@ -155,7 +155,7 @@ describe("Abilities - Illusion", () => { it("breaks when suppressed", async () => { game.override.moveset(MoveId.GASTRO_ACID); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const zorua = game.scene.getEnemyPokemon()!; + const zorua = game.field.getEnemyPokemon(); expect(!!zorua.summonData?.illusion).toBe(true); diff --git a/test/abilities/immunity.test.ts b/test/abilities/immunity.test.ts index 6f6fac10bf9..dccee93ac10 100644 --- a/test/abilities/immunity.test.ts +++ b/test/abilities/immunity.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/infiltrator.test.ts b/test/abilities/infiltrator.test.ts index 9f1eed466b9..a093fbbe6c6 100644 --- a/test/abilities/infiltrator.test.ts +++ b/test/abilities/infiltrator.test.ts @@ -7,7 +7,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -58,8 +58,8 @@ describe("Abilities - Infiltrator", () => { ])("should bypass the target's $effectName", async ({ tagType, move }) => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const preScreenDmg = enemy.getAttackDamage({ source: player, move: allMoves[move] }).damage; @@ -74,8 +74,8 @@ describe("Abilities - Infiltrator", () => { it("should bypass the target's Safeguard", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.scene.arena.addTag(ArenaTagType.SAFEGUARD, 1, MoveId.NONE, enemy.id, ArenaTagSide.ENEMY, true); @@ -90,8 +90,8 @@ describe("Abilities - Infiltrator", () => { it.todo("should bypass the target's Mist", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.scene.arena.addTag(ArenaTagType.MIST, 1, MoveId.NONE, enemy.id, ArenaTagSide.ENEMY, true); @@ -105,8 +105,8 @@ describe("Abilities - Infiltrator", () => { it("should bypass the target's Substitute", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.addTag(BattlerTagType.SUBSTITUTE, 1, MoveId.NONE, enemy.id); diff --git a/test/abilities/innards-out.test.ts b/test/abilities/innards-out.test.ts index a10465ce1cb..96c07344b11 100644 --- a/test/abilities/innards-out.test.ts +++ b/test/abilities/innards-out.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/insomnia.test.ts b/test/abilities/insomnia.test.ts index 2f683b516eb..679220687b9 100644 --- a/test/abilities/insomnia.test.ts +++ b/test/abilities/insomnia.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/intimidate.test.ts b/test/abilities/intimidate.test.ts index 9ff408aaeb5..3c283e0392b 100644 --- a/test/abilities/intimidate.test.ts +++ b/test/abilities/intimidate.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/intrepid_sword.test.ts b/test/abilities/intrepid-sword.test.ts similarity index 86% rename from test/abilities/intrepid_sword.test.ts rename to test/abilities/intrepid-sword.test.ts index 7465b331791..4cd8f5e394b 100644 --- a/test/abilities/intrepid_sword.test.ts +++ b/test/abilities/intrepid-sword.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -32,8 +32,8 @@ describe("Abilities - Intrepid Sword", () => { it("should raise ATK stat stage by 1 on entry", async () => { await game.classicMode.runToSummon([SpeciesId.ZACIAN]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); await game.phaseInterceptor.to(CommandPhase, false); diff --git a/test/abilities/lightningrod.test.ts b/test/abilities/lightningrod.test.ts index 2d5b6881869..20fcb176055 100644 --- a/test/abilities/lightningrod.test.ts +++ b/test/abilities/lightningrod.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/limber.test.ts b/test/abilities/limber.test.ts index ed140c09fb1..e65a54b545d 100644 --- a/test/abilities/limber.test.ts +++ b/test/abilities/limber.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/magic_bounce.test.ts b/test/abilities/magic-bounce.test.ts similarity index 88% rename from test/abilities/magic_bounce.test.ts rename to test/abilities/magic-bounce.test.ts index 84b4cea8376..c15690c3f5d 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic-bounce.test.ts @@ -8,7 +8,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Magic Bounce", () => { @@ -42,7 +42,7 @@ describe("Abilities - Magic Bounce", () => { game.move.use(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce moves while the target is in the semi-invulnerable state", async () => { @@ -53,7 +53,7 @@ describe("Abilities - Magic Bounce", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("should individually bounce back multi-target moves", async () => { @@ -70,12 +70,12 @@ describe("Abilities - Magic Bounce", () => { it("should still bounce back a move that would otherwise fail", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.scene.getEnemyPokemon()?.setStatStage(Stat.ATK, -6); + game.field.getEnemyPokemon().setStatStage(Stat.ATK, -6); game.move.use(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce back a move that was just bounced", async () => { @@ -85,7 +85,7 @@ describe("Abilities - Magic Bounce", () => { game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should receive the stat change after reflecting a move back to a mirror armor user", async () => { @@ -95,7 +95,7 @@ describe("Abilities - Magic Bounce", () => { game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce back a move from a mold breaker user", async () => { @@ -105,7 +105,7 @@ describe("Abilities - Magic Bounce", () => { game.move.use(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should bounce back a spread status move against both pokemon", async () => { @@ -156,7 +156,7 @@ describe("Abilities - Magic Bounce", () => { game.move.select(MoveId.CURSE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getTag(BattlerTagType.CURSED)).toBeDefined(); + expect(game.field.getEnemyPokemon().getTag(BattlerTagType.CURSED)).toBeDefined(); }); // TODO: enable when Magic Bounce is fixed to properly reset the hit count @@ -164,8 +164,8 @@ describe("Abilities - Magic Bounce", () => { game.override.moveset([MoveId.SPLASH, MoveId.GROWL, MoveId.ENCORE]).enemyMoveset([MoveId.TACKLE, MoveId.GROWL]); // game.override.ability(AbilityId.MOLD_BREAKER); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); // Give the player MOLD_BREAKER for this turn to bypass Magic Bounce. const playerAbilitySpy = game.field.mockAbility(playerPokemon, AbilityId.MOLD_BREAKER); @@ -194,8 +194,8 @@ describe("Abilities - Magic Bounce", () => { .enemyAbility(AbilityId.MAGIC_BOUNCE); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); // turn 1 game.move.select(MoveId.GROWL); @@ -237,7 +237,7 @@ describe("Abilities - Magic Bounce", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const stomping_tantrum = allMoves[MoveId.STOMPING_TANTRUM]; - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(stomping_tantrum, "calculateBattlePower"); // Spore gets reflected back onto us @@ -260,35 +260,35 @@ describe("Abilities - Magic Bounce", () => { // Turn 1 - thunder wave immunity test game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); // Turn 2 - soundproof immunity test game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("should bounce back a move before the accuracy check", async () => { game.override.moveset([MoveId.SPORE]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const attacker = game.scene.getPlayerPokemon()!; + const attacker = game.field.getPlayerPokemon(); vi.spyOn(attacker, "getAccuracyMultiplier").mockReturnValue(0.0); game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); + expect(game.field.getPlayerPokemon().status?.effect).toBe(StatusEffect.SLEEP); }); it("should take the accuracy of the magic bounce user into account", async () => { game.override.moveset([MoveId.SPORE]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const opponent = game.scene.getEnemyPokemon()!; + const opponent = game.field.getEnemyPokemon(); vi.spyOn(opponent, "getAccuracyMultiplier").mockReturnValue(0); game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); }); it("should always apply the leftmost available target's magic bounce when bouncing moves like sticky webs in doubles", async () => { @@ -332,14 +332,14 @@ describe("Abilities - Magic Bounce", () => { await game.move.selectEnemyMove(MoveId.FLY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.TOXIC); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); game.override.ability(AbilityId.NO_GUARD); game.move.select(MoveId.CHARM); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-2); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-2); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(0); }); }); diff --git a/test/abilities/magic_guard.test.ts b/test/abilities/magic-guard.test.ts similarity index 99% rename from test/abilities/magic_guard.test.ts rename to test/abilities/magic-guard.test.ts index 63b22f347fb..e2977420edf 100644 --- a/test/abilities/magic_guard.test.ts +++ b/test/abilities/magic-guard.test.ts @@ -6,7 +6,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/magma_armor.test.ts b/test/abilities/magma-armor.test.ts similarity index 96% rename from test/abilities/magma_armor.test.ts rename to test/abilities/magma-armor.test.ts index cc40ea9f679..2e7176fdf96 100644 --- a/test/abilities/magma_armor.test.ts +++ b/test/abilities/magma-armor.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/mimicry.test.ts b/test/abilities/mimicry.test.ts index f377ab89ffe..44416387f6e 100644 --- a/test/abilities/mimicry.test.ts +++ b/test/abilities/mimicry.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -47,44 +47,44 @@ describe("Abilities - Mimicry", () => { }); it("Pokemon should revert back to its original, root type once terrain ends", async () => { - game.override - .moveset([MoveId.SPLASH, MoveId.TRANSFORM]) - .enemyAbility(AbilityId.MIMICRY) - .enemyMoveset([MoveId.SPLASH, MoveId.PSYCHIC_TERRAIN]); + game.override.enemyAbility(AbilityId.MIMICRY); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(MoveId.TRANSFORM); - await game.move.selectEnemyMove(MoveId.PSYCHIC_TERRAIN); + const playerPokemon = game.field.getPlayerPokemon(); + + game.move.use(MoveId.SKILL_SWAP); + await game.move.forceEnemyMove(MoveId.PSYCHIC_TERRAIN); await game.toNextTurn(); - expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true); + + expect(playerPokemon.getTypes()).toEqual([PokemonType.PSYCHIC]); if (game.scene.arena.terrain) { game.scene.arena.terrain.turnsLeft = 1; } - game.move.select(MoveId.SPLASH); - await game.move.selectEnemyMove(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true); + + expect(playerPokemon.getTypes()).toEqual([PokemonType.ELECTRIC]); }); it("If the Pokemon is under the effect of a type-adding move and an equivalent terrain activates, the move's effect disappears", async () => { game.override.enemyMoveset([MoveId.FORESTS_CURSE, MoveId.GRASSY_TERRAIN]); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const playerPokemon = game.scene.getPlayerPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.FORESTS_CURSE); await game.toNextTurn(); - expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS); + expect(playerPokemon.summonData.addedType).toBe(PokemonType.GRASS); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.GRASSY_TERRAIN); await game.phaseInterceptor.to("TurnEndPhase"); - expect(playerPokemon?.summonData.addedType).toBeNull(); - expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); + expect(playerPokemon.summonData.addedType).toBeNull(); + expect(playerPokemon.getTypes()).toEqual([PokemonType.GRASS]); }); }); diff --git a/test/abilities/mirror_armor.test.ts b/test/abilities/mirror-armor.test.ts similarity index 90% rename from test/abilities/mirror_armor.test.ts rename to test/abilities/mirror-armor.test.ts index 4d4ee973527..b2bd9be4755 100644 --- a/test/abilities/mirror_armor.test.ts +++ b/test/abilities/mirror-armor.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,8 +40,8 @@ describe("Ability - Mirror Armor", () => { game.override.ability(AbilityId.MIRROR_ARMOR).enemyAbility(AbilityId.INTIMIDATE); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy has intimidate, enemy should lose -1 atk game.move.select(MoveId.SPLASH); @@ -56,8 +56,8 @@ describe("Ability - Mirror Armor", () => { game.override.enemyAbility(AbilityId.MIRROR_ARMOR).ability(AbilityId.INTIMIDATE); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy has intimidate, enemy should lose -1 atk game.move.select(MoveId.SPLASH); @@ -112,8 +112,8 @@ describe("Ability - Mirror Armor", () => { game.override.ability(AbilityId.MIRROR_ARMOR).enemyAbility(AbilityId.INTIMIDATE); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense game.move.select(MoveId.SPLASH); @@ -153,8 +153,8 @@ describe("Ability - Mirror Armor", () => { game.override.enemyAbility(AbilityId.MIRROR_ARMOR).ability(AbilityId.INTIMIDATE); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense game.move.select(MoveId.TICKLE); @@ -171,8 +171,8 @@ describe("Ability - Mirror Armor", () => { game.override.enemyAbility(AbilityId.WHITE_SMOKE).ability(AbilityId.MIRROR_ARMOR); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats game.move.select(MoveId.SPLASH); @@ -189,8 +189,8 @@ describe("Ability - Mirror Armor", () => { game.override.ability(AbilityId.WHITE_SMOKE).enemyAbility(AbilityId.MIRROR_ARMOR); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats game.move.select(MoveId.TICKLE); @@ -207,8 +207,8 @@ describe("Ability - Mirror Armor", () => { game.override.ability(AbilityId.MIRROR_ARMOR); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Enemy uses octolock, player loses stats at end of turn game.move.select(MoveId.SPLASH); @@ -225,8 +225,8 @@ describe("Ability - Mirror Armor", () => { game.override.enemyAbility(AbilityId.MIRROR_ARMOR); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); // Player uses octolock, enemy loses stats at end of turn game.move.select(MoveId.OCTOLOCK); @@ -243,8 +243,8 @@ describe("Ability - Mirror Armor", () => { game.override.enemyAbility(AbilityId.MIRROR_ARMOR).ability(AbilityId.MIRROR_ARMOR).ability(AbilityId.INTIMIDATE); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); @@ -258,8 +258,8 @@ describe("Ability - Mirror Armor", () => { game.override.ability(AbilityId.MIRROR_ARMOR); await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const userPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const userPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.STICKY_WEB, BattlerIndex.PLAYER); diff --git a/test/abilities/mold_breaker.test.ts b/test/abilities/mold-breaker.test.ts similarity index 95% rename from test/abilities/mold_breaker.test.ts rename to test/abilities/mold-breaker.test.ts index c3214cdc224..2af17b625b0 100644 --- a/test/abilities/mold_breaker.test.ts +++ b/test/abilities/mold-breaker.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/moody.test.ts b/test/abilities/moody.test.ts index 150456bc0f7..d1f8aa2e351 100644 --- a/test/abilities/moody.test.ts +++ b/test/abilities/moody.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -35,7 +35,7 @@ describe("Abilities - Moody", () => { it("should increase one stat stage by 2 and decrease a different stat stage by 1", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.toNextTurn(); @@ -52,7 +52,7 @@ describe("Abilities - Moody", () => { it("should only increase one stat stage by 2 if all stat stages are at -6", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // Set all stat stages to -6 vi.spyOn(playerPokemon.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(-6)); @@ -70,7 +70,7 @@ describe("Abilities - Moody", () => { it("should only decrease one stat stage by 1 stage if all stat stages are at 6", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // Set all stat stages to 6 vi.spyOn(playerPokemon.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(6)); diff --git a/test/abilities/moxie.test.ts b/test/abilities/moxie.test.ts index 882b4b0df2f..042a8ddd058 100644 --- a/test/abilities/moxie.test.ts +++ b/test/abilities/moxie.test.ts @@ -6,7 +6,7 @@ import { Stat } from "#enums/stat"; import { EnemyCommandPhase } from "#phases/enemy-command-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { VictoryPhase } from "#phases/victory-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -41,7 +41,7 @@ describe("Abilities - Moxie", () => { const moveToUse = MoveId.AERIAL_ACE; await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.MIGHTYENA]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(0); diff --git a/test/abilities/mummy.test.ts b/test/abilities/mummy.test.ts index 6c94fea407b..57105bc3468 100644 --- a/test/abilities/mummy.test.ts +++ b/test/abilities/mummy.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Abilities - Mummy", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.MUMMY); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.MUMMY); }); it("should not change the enemy's ability hit by a non-contact move", async () => { @@ -47,6 +47,6 @@ describe("Abilities - Mummy", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); }); }); diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium-might.test.ts similarity index 79% rename from test/abilities/mycelium_might.test.ts rename to test/abilities/mycelium-might.test.ts index fa3ab8e5301..c3b7b4753b6 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium-might.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -42,12 +42,12 @@ describe("Abilities - Mycelium Might", () => { * https://www.smogon.com/forums/threads/scarlet-violet-battle-mechanics-research.3709545/page-24 */ - it("will move last in its priority bracket and ignore protective abilities", async () => { + it("should move last in its priority bracket and ignore protective abilities", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); - const enemyIndex = enemyPokemon?.getBattlerIndex(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerIndex = game.field.getPlayerPokemon().getBattlerIndex(); + const enemyIndex = enemyPokemon.getBattlerIndex(); game.move.select(MoveId.BABY_DOLL_EYES); @@ -62,16 +62,16 @@ describe("Abilities - Mycelium Might", () => { await game.phaseInterceptor.to(TurnEndPhase); // Despite the opponent's ability (Clear Body), its ATK stat stage is still reduced. - expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(-1); + expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); }); - it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { + it("should still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { game.override.enemyMoveset(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); - const enemyIndex = enemyPokemon?.getBattlerIndex(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerIndex = game.field.getPlayerPokemon().getBattlerIndex(); + const enemyIndex = enemyPokemon.getBattlerIndex(); game.move.select(MoveId.BABY_DOLL_EYES); @@ -85,14 +85,14 @@ describe("Abilities - Mycelium Might", () => { expect(commandOrder).toEqual([playerIndex, enemyIndex]); await game.phaseInterceptor.to(TurnEndPhase); // Despite the opponent's ability (Clear Body), its ATK stat stage is still reduced. - expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(-1); + expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); }); - it("will not affect non-status moves", async () => { + it("should not affect non-status moves", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); - const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); + const playerIndex = game.field.getPlayerPokemon().getBattlerIndex(); + const enemyIndex = game.field.getEnemyPokemon().getBattlerIndex(); game.move.select(MoveId.QUICK_ATTACK); diff --git a/test/abilities/neutralizing_gas.test.ts b/test/abilities/neutralizing-gas.test.ts similarity index 88% rename from test/abilities/neutralizing_gas.test.ts rename to test/abilities/neutralizing-gas.test.ts index bcc00e4249a..555e5f8a19c 100644 --- a/test/abilities/neutralizing_gas.test.ts +++ b/test/abilities/neutralizing-gas.test.ts @@ -8,7 +8,7 @@ import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import type { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -46,7 +46,7 @@ describe("Abilities - Neutralizing Gas", () => { await game.phaseInterceptor.to("TurnEndPhase"); // Intimidate is suppressed, so the attack stat should not be lowered - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("should allow the user's passive to activate", async () => { @@ -56,7 +56,7 @@ describe("Abilities - Neutralizing Gas", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(1); }); it.todo("should activate before other abilities", async () => { @@ -68,7 +68,7 @@ describe("Abilities - Neutralizing Gas", () => { await game.phaseInterceptor.to("TurnEndPhase"); // Intimidate is suppressed even when the user's speed is lower - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("should activate other abilities when removed", async () => { @@ -79,15 +79,15 @@ describe("Abilities - Neutralizing Gas", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemyPokemon = game.scene.getEnemyPokemon(); - expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(0); - expect(enemyPokemon?.getStatStage(Stat.DEF)).toBe(0); + const enemyPokemon = game.field.getEnemyPokemon(); + expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); + expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // Enemy removes user's ability, so both abilities are activated - expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(1); - expect(enemyPokemon?.getStatStage(Stat.DEF)).toBe(1); + expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); + expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(1); }); it("should not activate the user's other ability when removed", async () => { @@ -95,13 +95,13 @@ describe("Abilities - Neutralizing Gas", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); // Neutralising gas user's passive is still active - const enemyPokemon = game.scene.getEnemyPokemon(); - expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(-1); + const enemyPokemon = game.field.getEnemyPokemon(); + expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // Intimidate did not reactivate after neutralizing gas was removed - expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(-1); + expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); }); it("should only deactivate when all setters are off the field", async () => { @@ -164,7 +164,7 @@ describe("Abilities - Neutralizing Gas", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); - vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); + vi.spyOn(game.field.getPlayerPokemon(), "randBattleSeedInt").mockReturnValue(0); vi.spyOn(globalScene, "randBattleSeedInt").mockReturnValue(0); const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; @@ -178,7 +178,7 @@ describe("Abilities - Neutralizing Gas", () => { game.override.battleStyle("single").ability(AbilityId.NEUTRALIZING_GAS).enemyAbility(AbilityId.DELTA_STREAM); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); const weatherChangeAttr = enemy.getAbilityAttrs("PostSummonWeatherChangeAbAttr", false)[0]; const weatherChangeSpy = vi.spyOn(weatherChangeAttr, "apply"); @@ -186,7 +186,7 @@ describe("Abilities - Neutralizing Gas", () => { game.move.select(MoveId.SPLASH); await game.killPokemon(enemy); - await game.killPokemon(game.scene.getPlayerPokemon()!); + await game.killPokemon(game.field.getPlayerPokemon()); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); expect(weatherChangeSpy).not.toHaveBeenCalled(); diff --git a/test/abilities/no_guard.test.ts b/test/abilities/no-guard.test.ts similarity index 96% rename from test/abilities/no_guard.test.ts rename to test/abilities/no-guard.test.ts index f6f55ce3b80..9ce12e710e5 100644 --- a/test/abilities/no_guard.test.ts +++ b/test/abilities/no-guard.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/normal-move-type-change.test.ts b/test/abilities/normal-move-type-change.test.ts index aa673ddde29..11ea7a2e5f0 100644 --- a/test/abilities/normal-move-type-change.test.ts +++ b/test/abilities/normal-move-type-change.test.ts @@ -5,7 +5,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -48,7 +48,7 @@ describe.each([ .startingLevel(100) .starterSpecies(SpeciesId.MAGIKARP) .ability(ab) - .moveset([MoveId.TACKLE, MoveId.REVELATION_DANCE, MoveId.FURY_SWIPES]) + .moveset([MoveId.TACKLE, MoveId.REVELATION_DANCE, MoveId.FURY_SWIPES, MoveId.CRUSH_GRIP]) .enemySpecies(SpeciesId.DUSCLOPS) .enemyAbility(AbilityId.BALL_FETCH) .enemyMoveset(MoveId.SPLASH) @@ -58,10 +58,10 @@ describe.each([ it(`should change Normal-type attacks to ${tyName} type and boost their power`, async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const typeSpy = vi.spyOn(playerPokemon, "getMoveType"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemySpy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); const powerSpy = vi.spyOn(allMoves[MoveId.TACKLE], "calculateBattlePower"); @@ -75,6 +75,27 @@ describe.each([ expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); }); + // Regression test to ensure proper ordering of effects + it("should still boost variable-power moves", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const playerPokemon = game.field.getPlayerPokemon(); + const typeSpy = vi.spyOn(playerPokemon, "getMoveType"); + + const enemyPokemon = game.field.getEnemyPokemon(); + const enemySpy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); + const powerSpy = vi.spyOn(allMoves[MoveId.CRUSH_GRIP], "calculateBattlePower"); + + game.move.select(MoveId.CRUSH_GRIP); + + await game.toEndOfTurn(); + + expect(typeSpy).toHaveLastReturnedWith(ty); + expect(enemySpy).toHaveReturnedWith(1); + expect(powerSpy).toHaveReturnedWith(144); // 120 * 1.2 + expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); + }); + // Galvanize specifically would like to check for volt absorb's activation if (ab === AbilityId.GALVANIZE) { it("should cause Normal-type attacks to activate Volt Absorb", async () => { @@ -82,10 +103,10 @@ describe.each([ await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const tySpy = vi.spyOn(playerPokemon, "getMoveType"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyEffectivenessSpy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); enemyPokemon.hp = Math.floor(enemyPokemon.getMaxHp() * 0.8); @@ -116,7 +137,7 @@ describe.each([ await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const tySpy = vi.spyOn(playerPokemon, "getMoveType"); game.move.select(move); @@ -128,10 +149,10 @@ describe.each([ it("should affect all hits of a Normal-type multi-hit move", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const tySpy = vi.spyOn(playerPokemon, "getMoveType"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FURY_SWIPES); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -162,7 +183,7 @@ describe.each([ expect(boost, "power boost should be defined").toBeDefined(); const powerSpy = vi.spyOn(testMoveInstance, "calculateBattlePower"); - const typeSpy = vi.spyOn(game.scene.getPlayerPokemon()!, "getMoveType"); + const typeSpy = vi.spyOn(game.field.getPlayerPokemon(), "getMoveType"); game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); expect(typeSpy, "type was not changed").toHaveLastReturnedWith(ty); diff --git a/test/abilities/normalize.test.ts b/test/abilities/normalize.test.ts index 1128dd1a562..a19a08fdaf0 100644 --- a/test/abilities/normalize.test.ts +++ b/test/abilities/normalize.test.ts @@ -4,7 +4,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -44,6 +44,18 @@ describe("Abilities - Normalize", () => { expect(powerSpy).toHaveLastReturnedWith(toDmgValue(allMoves[MoveId.TACKLE].power * 1.2)); }); + it("should boost variable power moves", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + const magikarp = game.field.getPlayerPokemon(); + magikarp.friendship = 255; + + const powerSpy = vi.spyOn(allMoves[MoveId.RETURN], "calculateBattlePower"); + + game.move.use(MoveId.RETURN); + await game.toEndOfTurn(); + expect(powerSpy).toHaveLastReturnedWith(102 * 1.2); + }); + it("should not apply the old type boost item after changing a move's type", async () => { game.override .startingHeldItems([{ name: "ATTACK_TYPE_BOOSTER", count: 1, type: PokemonType.GRASS }]) diff --git a/test/abilities/oblivious.test.ts b/test/abilities/oblivious.test.ts index 8b18fe65455..02056251992 100644 --- a/test/abilities/oblivious.test.ts +++ b/test/abilities/oblivious.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -39,14 +39,14 @@ describe("Abilities - Oblivious", () => { .moveset(MoveId.SKILL_SWAP) .enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon(); - enemy?.addTag(BattlerTagType.TAUNT); - expect(enemy?.getTag(BattlerTagType.TAUNT)).toBeTruthy(); + const enemy = game.field.getEnemyPokemon(); + enemy.addTag(BattlerTagType.TAUNT); + expect(enemy.getTag(BattlerTagType.TAUNT)).toBeDefined(); game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); - expect(enemy?.getTag(BattlerTagType.TAUNT)).toBeFalsy(); + expect(enemy.getTag(BattlerTagType.TAUNT)).toBeUndefined(); }); it("should remove infatuation when gained", async () => { @@ -56,14 +56,15 @@ describe("Abilities - Oblivious", () => { .moveset(MoveId.SKILL_SWAP) .enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon(); - vi.spyOn(enemy!, "isOppositeGender").mockReturnValue(true); - enemy?.addTag(BattlerTagType.INFATUATED, 5, MoveId.JUDGMENT, game.scene.getPlayerPokemon()?.id); // sourceID needs to be defined - expect(enemy?.getTag(BattlerTagType.INFATUATED)).toBeTruthy(); + + const enemy = game.field.getEnemyPokemon(); + vi.spyOn(enemy, "isOppositeGender").mockReturnValue(true); + enemy.addTag(BattlerTagType.INFATUATED, 5, MoveId.JUDGMENT, game.field.getPlayerPokemon().id); // sourceID needs to be defined + expect(enemy.getTag(BattlerTagType.INFATUATED)).toBeTruthy(); game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); - expect(enemy?.getTag(BattlerTagType.INFATUATED)).toBeFalsy(); + expect(enemy.getTag(BattlerTagType.INFATUATED)).toBeFalsy(); }); }); diff --git a/test/abilities/own_tempo.test.ts b/test/abilities/own-tempo.test.ts similarity index 96% rename from test/abilities/own_tempo.test.ts rename to test/abilities/own-tempo.test.ts index bdb247c4987..c919d9eae53 100644 --- a/test/abilities/own_tempo.test.ts +++ b/test/abilities/own-tempo.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/parental_bond.test.ts b/test/abilities/parental-bond.test.ts similarity index 88% rename from test/abilities/parental_bond.test.ts rename to test/abilities/parental-bond.test.ts index 4937857c8e1..a72fc82260f 100644 --- a/test/abilities/parental_bond.test.ts +++ b/test/abilities/parental-bond.test.ts @@ -5,7 +5,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -42,8 +42,8 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); let enemyStartingHp = enemyPokemon.hp; @@ -66,7 +66,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.POWER_UP_PUNCH); @@ -81,7 +81,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.BABY_DOLL_EYES); @@ -95,7 +95,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.DOUBLE_HIT); await game.move.forceHit(); @@ -110,7 +110,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SELF_DESTRUCT); @@ -124,7 +124,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.ROLLOUT); await game.move.forceHit(); @@ -139,7 +139,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to("BerryPhase", false); @@ -152,8 +152,8 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.COUNTER); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -185,7 +185,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.EARTHQUAKE); await game.phaseInterceptor.to("DamageAnimPhase", false); @@ -199,7 +199,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.MIND_BLOWN); @@ -218,8 +218,8 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.BURN_UP); @@ -239,7 +239,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.HYPER_BEAM); await game.move.forceHit(); @@ -259,8 +259,8 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.ANCHOR_SHOT); await game.move.forceHit(); @@ -283,8 +283,8 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SMACK_DOWN); await game.move.forceHit(); @@ -304,7 +304,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.U_TURN); await game.move.forceHit(); @@ -321,8 +321,8 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.WAKE_UP_SLAP); await game.move.forceHit(); @@ -342,7 +342,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.TACKLE); @@ -356,7 +356,7 @@ describe("Abilities - Parental Bond", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.WATER_GUN); @@ -369,7 +369,7 @@ describe("Abilities - Parental Bond", () => { game.override.enemyLevel(1000).moveset(MoveId.FUTURE_SIGHT); await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "damageAndUpdate"); game.move.select(MoveId.FUTURE_SIGHT); diff --git a/test/abilities/pastel_veil.test.ts b/test/abilities/pastel-veil.test.ts similarity index 97% rename from test/abilities/pastel_veil.test.ts rename to test/abilities/pastel-veil.test.ts index 88f5415524f..c4b368c94d0 100644 --- a/test/abilities/pastel_veil.test.ts +++ b/test/abilities/pastel-veil.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/perish_body.test.ts b/test/abilities/perish-body.test.ts similarity index 66% rename from test/abilities/perish_body.test.ts rename to test/abilities/perish-body.test.ts index 83a862164a1..50ba2f86c39 100644 --- a/test/abilities/perish_body.test.ts +++ b/test/abilities/perish-body.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -34,55 +34,55 @@ describe("Abilities - Perish Song", () => { it("should trigger when hit with damaging move", async () => { await game.classicMode.startBattle(); - const cursola = game.scene.getPlayerPokemon(); - const magikarp = game.scene.getEnemyPokemon(); + const cursola = game.field.getPlayerPokemon(); + const magikarp = game.field.getEnemyPokemon(); game.move.select(MoveId.SPLASH); await game.toNextTurn(); - expect(cursola?.summonData.tags[0].turnCount).toBe(3); - expect(magikarp?.summonData.tags[0].turnCount).toBe(3); + expect(cursola.summonData.tags[0].turnCount).toBe(3); + expect(magikarp.summonData.tags[0].turnCount).toBe(3); }); it("should trigger even when fainting", async () => { game.override.enemyLevel(100).startingLevel(1); await game.classicMode.startBattle([SpeciesId.CURSOLA, SpeciesId.FEEBAS]); - const magikarp = game.scene.getEnemyPokemon(); + const magikarp = game.field.getEnemyPokemon(); game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); - expect(magikarp?.summonData.tags[0].turnCount).toBe(3); + expect(magikarp.summonData.tags[0].turnCount).toBe(3); }); it("should not activate if attacker already has perish song", async () => { game.override.enemyMoveset([MoveId.PERISH_SONG, MoveId.AQUA_JET, MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.CURSOLA]); - const feebas = game.scene.getPlayerPokemon(); - const magikarp = game.scene.getEnemyPokemon(); + const feebas = game.field.getPlayerPokemon(); + const magikarp = game.field.getEnemyPokemon(); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.PERISH_SONG); await game.toNextTurn(); - expect(feebas?.summonData.tags[0].turnCount).toBe(3); - expect(magikarp?.summonData.tags[0].turnCount).toBe(3); + expect(feebas.summonData.tags[0].turnCount).toBe(3); + expect(magikarp.summonData.tags[0].turnCount).toBe(3); game.doSwitchPokemon(1); await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - const cursola = game.scene.getPlayerPokemon(); - expect(cursola?.summonData.tags.length).toBe(0); - expect(magikarp?.summonData.tags[0].turnCount).toBe(2); + const cursola = game.field.getPlayerPokemon(); + expect(cursola.summonData.tags.length).toBe(0); + expect(magikarp.summonData.tags[0].turnCount).toBe(2); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.AQUA_JET); await game.toNextTurn(); - expect(cursola?.summonData.tags.length).toBe(0); - expect(magikarp?.summonData.tags[0].turnCount).toBe(1); + expect(cursola.summonData.tags.length).toBe(0); + expect(magikarp.summonData.tags[0].turnCount).toBe(1); }); it("should activate if cursola already has perish song, but not reset its counter", async () => { @@ -91,22 +91,22 @@ describe("Abilities - Perish Song", () => { .moveset([MoveId.WHIRLWIND, MoveId.SPLASH]) .startingWave(5); await game.classicMode.startBattle([SpeciesId.CURSOLA]); - const cursola = game.scene.getPlayerPokemon(); + const cursola = game.field.getPlayerPokemon(); game.move.select(MoveId.WHIRLWIND); await game.move.selectEnemyMove(MoveId.PERISH_SONG); await game.toNextTurn(); - const magikarp = game.scene.getEnemyPokemon(); - expect(cursola?.summonData.tags[0].turnCount).toBe(3); - expect(magikarp?.summonData.tags.length).toBe(0); + const magikarp = game.field.getEnemyPokemon(); + expect(cursola.summonData.tags[0].turnCount).toBe(3); + expect(magikarp.summonData.tags.length).toBe(0); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.AQUA_JET); await game.toNextTurn(); - expect(cursola?.summonData.tags[0].turnCount).toBe(2); - expect(magikarp?.summonData.tags.length).toBe(1); - expect(magikarp?.summonData.tags[0].turnCount).toBe(3); + expect(cursola.summonData.tags[0].turnCount).toBe(2); + expect(magikarp.summonData.tags.length).toBe(1); + expect(magikarp.summonData.tags[0].turnCount).toBe(3); }); }); diff --git a/test/abilities/power_construct.test.ts b/test/abilities/power-construct.test.ts similarity index 97% rename from test/abilities/power_construct.test.ts rename to test/abilities/power-construct.test.ts index 0917082d7bd..34e02851daf 100644 --- a/test/abilities/power_construct.test.ts +++ b/test/abilities/power-construct.test.ts @@ -5,7 +5,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; describe("Abilities - POWER CONSTRUCT", () => { diff --git a/test/abilities/power_spot.test.ts b/test/abilities/power-spot.test.ts similarity index 97% rename from test/abilities/power_spot.test.ts rename to test/abilities/power-spot.test.ts index f07ece17245..75d5cd78ae0 100644 --- a/test/abilities/power_spot.test.ts +++ b/test/abilities/power-spot.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/protean-libero.test.ts b/test/abilities/protean-libero.test.ts index 35be3fcf63d..305955f5221 100644 --- a/test/abilities/protean-libero.test.ts +++ b/test/abilities/protean-libero.test.ts @@ -8,7 +8,7 @@ import { MoveResult } from "#enums/move-result"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import type { PlayerPokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/protosynthesis.test.ts b/test/abilities/protosynthesis.test.ts index 5629ea503d7..ea2e1e20c17 100644 --- a/test/abilities/protosynthesis.test.ts +++ b/test/abilities/protosynthesis.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { Nature } from "#enums/nature"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -42,10 +42,10 @@ describe("Abilities - Protosynthesis", () => { .startingLevel(100) .enemyLevel(100); await game.classicMode.startBattle([SpeciesId.MEW]); - const mew = game.scene.getPlayerPokemon()!; + const mew = game.field.getPlayerPokemon(); // Nature of starting mon is randomized. We need to fix it to a neutral nature for the automated test. mew.setNature(Nature.HARDY); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); const def_before_boost = mew.getEffectiveStat( Stat.DEF, undefined, diff --git a/test/abilities/quick_draw.test.ts b/test/abilities/quick-draw.test.ts similarity index 87% rename from test/abilities/quick_draw.test.ts rename to test/abilities/quick-draw.test.ts index f881adce5ed..ce5873af3a8 100644 --- a/test/abilities/quick_draw.test.ts +++ b/test/abilities/quick-draw.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { FaintPhase } from "#phases/faint-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; @@ -43,8 +43,8 @@ describe("Abilities - Quick Draw", () => { test("makes pokemon going first in its priority bracket", async () => { await game.classicMode.startBattle(); - const pokemon = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pokemon = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); pokemon.hp = 1; enemy.hp = 1; @@ -65,8 +65,8 @@ describe("Abilities - Quick Draw", () => { async () => { await game.classicMode.startBattle(); - const pokemon = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pokemon = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); pokemon.hp = 1; enemy.hp = 1; @@ -85,8 +85,8 @@ describe("Abilities - Quick Draw", () => { await game.classicMode.startBattle(); - const pokemon = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pokemon = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); pokemon.hp = 1; enemy.hp = 1; diff --git a/test/abilities/sand_spit.test.ts b/test/abilities/sand-spit.test.ts similarity index 96% rename from test/abilities/sand_spit.test.ts rename to test/abilities/sand-spit.test.ts index dfd8a342ccc..9cfd94a1857 100644 --- a/test/abilities/sand_spit.test.ts +++ b/test/abilities/sand-spit.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand-veil.test.ts similarity index 97% rename from test/abilities/sand_veil.test.ts rename to test/abilities/sand-veil.test.ts index 2ad9ef7eaa1..4777a016743 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand-veil.test.ts @@ -6,7 +6,7 @@ import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { StatMultiplierAbAttrParams } from "#types/ability-types"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; diff --git a/test/abilities/sap_sipper.test.ts b/test/abilities/sap-sipper.test.ts similarity index 90% rename from test/abilities/sap_sipper.test.ts rename to test/abilities/sap-sipper.test.ts index a8fe10d7fc5..95f9841d924 100644 --- a/test/abilities/sap_sipper.test.ts +++ b/test/abilities/sap-sipper.test.ts @@ -8,7 +8,7 @@ import { Stat } from "#enums/stat"; import { RandomMoveAttr } from "#moves/move"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -45,7 +45,7 @@ describe("Abilities - Sap Sipper", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const initialEnemyHp = enemyPokemon.hp; game.move.select(moveToUse); @@ -63,7 +63,7 @@ describe("Abilities - Sap Sipper", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(moveToUse); @@ -86,7 +86,7 @@ describe("Abilities - Sap Sipper", () => { expect(game.scene.arena.terrain).toBeDefined(); expect(game.scene.arena.terrain!.terrainType).toBe(TerrainType.GRASSY); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("activate once against multi-hit grass attacks", async () => { @@ -96,7 +96,7 @@ describe("Abilities - Sap Sipper", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const initialEnemyHp = enemyPokemon.hp; game.move.select(moveToUse); @@ -114,7 +114,7 @@ describe("Abilities - Sap Sipper", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(moveToUse); @@ -140,7 +140,7 @@ describe("Abilities - Sap Sipper", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const initialEnemyHp = enemyPokemon.hp; game.move.select(moveToUse); @@ -156,7 +156,7 @@ describe("Abilities - Sap Sipper", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.LEAF_BLADE); await game.phaseInterceptor.to("MoveEffectPhase"); diff --git a/test/abilities/schooling.test.ts b/test/abilities/schooling.test.ts index 94bb4cb80f9..fea919c7c5a 100644 --- a/test/abilities/schooling.test.ts +++ b/test/abilities/schooling.test.ts @@ -5,7 +5,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; describe("Abilities - SCHOOLING", () => { diff --git a/test/abilities/screen_cleaner.test.ts b/test/abilities/screen-cleaner.test.ts similarity index 97% rename from test/abilities/screen_cleaner.test.ts rename to test/abilities/screen-cleaner.test.ts index 8b53ab30d49..50a854adeb1 100644 --- a/test/abilities/screen_cleaner.test.ts +++ b/test/abilities/screen-cleaner.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { PostSummonPhase } from "#phases/post-summon-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/seed_sower.test.ts b/test/abilities/seed-sower.test.ts similarity index 96% rename from test/abilities/seed_sower.test.ts rename to test/abilities/seed-sower.test.ts index 8573f0242ea..f31955a0bbb 100644 --- a/test/abilities/seed_sower.test.ts +++ b/test/abilities/seed-sower.test.ts @@ -2,7 +2,7 @@ import { TerrainType } from "#data/terrain"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/serene_grace.test.ts b/test/abilities/serene-grace.test.ts similarity index 96% rename from test/abilities/serene_grace.test.ts rename to test/abilities/serene-grace.test.ts index aaa0f26f78b..bbf9cf7555b 100644 --- a/test/abilities/serene_grace.test.ts +++ b/test/abilities/serene-grace.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/sheer_force.test.ts b/test/abilities/sheer-force.test.ts similarity index 98% rename from test/abilities/sheer_force.test.ts rename to test/abilities/sheer-force.test.ts index 0b0c0c10ccf..0e2ce85bfca 100644 --- a/test/abilities/sheer_force.test.ts +++ b/test/abilities/sheer-force.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/shell-armor.test.ts b/test/abilities/shell-armor.test.ts index e10c3a90444..df0802b25da 100644 --- a/test/abilities/shell-armor.test.ts +++ b/test/abilities/shell-armor.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { Pokemon } from "#field/pokemon"; import type { Move } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstance, vi } from "vitest"; diff --git a/test/abilities/shield_dust.test.ts b/test/abilities/shield-dust.test.ts similarity index 91% rename from test/abilities/shield_dust.test.ts rename to test/abilities/shield-dust.test.ts index 371c7d9cf29..a34056e00e9 100644 --- a/test/abilities/shield_dust.test.ts +++ b/test/abilities/shield-dust.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,8 +38,8 @@ describe("Abilities - Shield Dust", () => { it("Shield Dust", async () => { await game.classicMode.startBattle([SpeciesId.PIDGEOT]); - game.scene.getEnemyPokemon()!.stats[Stat.SPDEF] = 10000; - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(0); + game.field.getEnemyPokemon().stats[Stat.SPDEF] = 10000; + expect(game.field.getPlayerPokemon().formIndex).toBe(0); game.move.select(MoveId.AIR_SLASH); diff --git a/test/abilities/shields_down.test.ts b/test/abilities/shields-down.test.ts similarity index 85% rename from test/abilities/shields_down.test.ts rename to test/abilities/shields-down.test.ts index 7678c7d8dac..98a1cfffa8e 100644 --- a/test/abilities/shields_down.test.ts +++ b/test/abilities/shields-down.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; describe("Abilities - SHIELDS DOWN", () => { @@ -66,7 +66,7 @@ describe("Abilities - SHIELDS DOWN", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); + expect(game.field.getPlayerPokemon().status).toBe(undefined); }); test("should still ignore non-volatile status moves used by a pokemon with mold breaker", async () => { @@ -78,7 +78,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.move.selectEnemyMove(MoveId.SPORE); await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); + expect(game.field.getPlayerPokemon().status).toBe(undefined); }); test("should ignore non-volatile secondary status effects", async () => { @@ -89,7 +89,7 @@ describe("Abilities - SHIELDS DOWN", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); + expect(game.field.getPlayerPokemon().status).toBe(undefined); }); test("should ignore status moves even through mold breaker", async () => { @@ -101,7 +101,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); + expect(game.field.getPlayerPokemon().status).toBe(undefined); }); // toxic spikes currently does not poison flying types when gravity is in effect @@ -122,9 +122,9 @@ describe("Abilities - SHIELDS DOWN", () => { await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.MINIOR); - expect(game.scene.getPlayerPokemon()!.species.formIndex).toBe(0); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.POISON); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.MINIOR); + expect(game.field.getPlayerPokemon().species.formIndex).toBe(0); + expect(game.field.getPlayerPokemon().status?.effect).toBe(StatusEffect.POISON); }); test("should ignore yawn", async () => { @@ -136,7 +136,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.move.selectEnemyMove(MoveId.YAWN); await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined); + expect(game.field.getPlayerPokemon().findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined); }); test("should not ignore volatile status effects", async () => { @@ -149,7 +149,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.CONFUSED)).not.toBe(undefined); + expect(game.field.getPlayerPokemon().findTag(tag => tag.tagType === BattlerTagType.CONFUSED)).not.toBe(undefined); }); // the `NoTransformAbilityAbAttr` attribute is not checked anywhere, so this test cannot pass. @@ -162,7 +162,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.SLEEP); }); test("should not prevent minior from receiving the fainted status effect in trainer battles", async () => { @@ -173,7 +173,7 @@ describe("Abilities - SHIELDS DOWN", () => { .startingWave(5) .enemySpecies(SpeciesId.MINIOR); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const minior = game.scene.getEnemyPokemon()!; + const minior = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDERBOLT); await game.toNextTurn(); diff --git a/test/abilities/simple.test.ts b/test/abilities/simple.test.ts index a709c8696d3..fe065e37cfe 100644 --- a/test/abilities/simple.test.ts +++ b/test/abilities/simple.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Abilities - Simple", () => { it("should double stat changes when applied", async () => { await game.classicMode.startBattle([SpeciesId.SLOWBRO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-2); }); diff --git a/test/abilities/speed_boost.test.ts b/test/abilities/speed-boost.test.ts similarity index 89% rename from test/abilities/speed_boost.test.ts rename to test/abilities/speed-boost.test.ts index 975fc8ebecf..b087be29460 100644 --- a/test/abilities/speed_boost.test.ts +++ b/test/abilities/speed-boost.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { AttemptRunPhase } from "#phases/attempt-run-phase"; import type { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -40,7 +40,7 @@ describe("Abilities - Speed Boost", () => { it("should increase speed by 1 stage at end of turn", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.toNextTurn(); @@ -53,7 +53,7 @@ describe("Abilities - Speed Boost", () => { game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.toNextTurn(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); game.move.select(MoveId.SPLASH); @@ -69,13 +69,13 @@ describe("Abilities - Speed Boost", () => { game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!).toBe(ninjask); + expect(game.field.getPlayerPokemon()).toBe(ninjask); expect(ninjask.getStatStage(Stat.SPD)).toBe(0); game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!).toBe(shuckle); + expect(game.field.getPlayerPokemon()).toBe(shuckle); expect(shuckle.getStatStage(Stat.SPD)).toBe(0); game.move.select(MoveId.SPLASH); @@ -88,7 +88,7 @@ describe("Abilities - Speed Boost", () => { game.doSwitchPokemon(1); await game.toNextTurn(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); game.move.select(MoveId.SPLASH); @@ -109,7 +109,7 @@ describe("Abilities - Speed Boost", () => { await game.phaseInterceptor.to(AttemptRunPhase); await game.toNextTurn(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); game.move.select(MoveId.SPLASH); diff --git a/test/abilities/stakeout.test.ts b/test/abilities/stakeout.test.ts index 85838a52abe..5dafb620274 100644 --- a/test/abilities/stakeout.test.ts +++ b/test/abilities/stakeout.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { isBetween } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/stall.test.ts b/test/abilities/stall.test.ts index c012586eea5..5b4e38f7099 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,8 +40,8 @@ describe("Abilities - Stall", () => { it("Pokemon with Stall should move last in its priority bracket regardless of speed", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); - const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); + const playerIndex = game.field.getPlayerPokemon().getBattlerIndex(); + const enemyIndex = game.field.getEnemyPokemon().getBattlerIndex(); game.move.select(MoveId.QUICK_ATTACK); @@ -58,8 +58,8 @@ describe("Abilities - Stall", () => { it("Pokemon with Stall will go first if a move that is in a higher priority bracket than the opponent's move is used", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); - const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); + const playerIndex = game.field.getPlayerPokemon().getBattlerIndex(); + const enemyIndex = game.field.getEnemyPokemon().getBattlerIndex(); game.move.select(MoveId.TACKLE); @@ -77,8 +77,8 @@ describe("Abilities - Stall", () => { game.override.ability(AbilityId.STALL); await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); - const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); + const playerIndex = game.field.getPlayerPokemon().getBattlerIndex(); + const enemyIndex = game.field.getEnemyPokemon().getBattlerIndex(); game.move.select(MoveId.TACKLE); diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely-spirit.test.ts similarity index 94% rename from test/abilities/steely_spirit.test.ts rename to test/abilities/steely-spirit.test.ts index 0ca7bebe17a..5fbb11a4bfd 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely-spirit.test.ts @@ -2,7 +2,7 @@ import { allAbilities, allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -39,7 +39,7 @@ describe("Abilities - Steely Spirit", () => { it("increases Steel-type moves' power used by the user and its allies by 50%", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.SHUCKLE]); const boostSource = game.scene.getPlayerField()[1]; - const enemyToCheck = game.scene.getEnemyPokemon()!; + const enemyToCheck = game.field.getEnemyPokemon(); vi.spyOn(boostSource, "getAbility").mockReturnValue(allAbilities[AbilityId.STEELY_SPIRIT]); @@ -54,7 +54,7 @@ describe("Abilities - Steely Spirit", () => { it("stacks if multiple users with this ability are on the field.", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.PIKACHU]); - const enemyToCheck = game.scene.getEnemyPokemon()!; + const enemyToCheck = game.field.getEnemyPokemon(); game.scene.getPlayerField().forEach(p => { vi.spyOn(p, "getAbility").mockReturnValue(allAbilities[AbilityId.STEELY_SPIRIT]); @@ -74,7 +74,7 @@ describe("Abilities - Steely Spirit", () => { it("does not take effect when suppressed", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.SHUCKLE]); const boostSource = game.scene.getPlayerField()[1]; - const enemyToCheck = game.scene.getEnemyPokemon()!; + const enemyToCheck = game.field.getEnemyPokemon(); vi.spyOn(boostSource, "getAbility").mockReturnValue(allAbilities[AbilityId.STEELY_SPIRIT]); expect(boostSource.hasAbility(AbilityId.STEELY_SPIRIT)).toBe(true); diff --git a/test/abilities/storm_drain.test.ts b/test/abilities/storm-drain.test.ts similarity index 98% rename from test/abilities/storm_drain.test.ts rename to test/abilities/storm-drain.test.ts index 59626546578..bc4d4f15cfa 100644 --- a/test/abilities/storm_drain.test.ts +++ b/test/abilities/storm-drain.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/sturdy.test.ts b/test/abilities/sturdy.test.ts index 0cde40a91da..28d3098a420 100644 --- a/test/abilities/sturdy.test.ts +++ b/test/abilities/sturdy.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import type { EnemyPokemon } from "#field/pokemon"; import { DamageAnimPhase } from "#phases/damage-anim-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; diff --git a/test/abilities/super_luck.test.ts b/test/abilities/super-luck.test.ts similarity index 91% rename from test/abilities/super_luck.test.ts rename to test/abilities/super-luck.test.ts index 954251583f8..fd6e3d75f76 100644 --- a/test/abilities/super_luck.test.ts +++ b/test/abilities/super-luck.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -32,7 +32,7 @@ describe("Abilities - Super Luck", () => { it("should increase the user's crit stage by 1", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); const critSpy = vi.spyOn(enemy, "getCritStage"); // crit stage is called on enemy game.move.select(MoveId.TACKLE); diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme-overlord.test.ts similarity index 98% rename from test/abilities/supreme_overlord.test.ts rename to test/abilities/supreme-overlord.test.ts index b68153a2cc8..a0f2d9050b3 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme-overlord.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Move } from "#moves/move"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet-veil.test.ts similarity index 97% rename from test/abilities/sweet_veil.test.ts rename to test/abilities/sweet-veil.test.ts index ca98e827c4f..12eeae9f9c5 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet-veil.test.ts @@ -4,7 +4,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/synchronize.test.ts b/test/abilities/synchronize.test.ts index 1874560a166..048f9663db9 100644 --- a/test/abilities/synchronize.test.ts +++ b/test/abilities/synchronize.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Abilities - Synchronize", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); expect(game.phaseInterceptor.log).not.toContain("ShowAbilityPhase"); }); @@ -48,8 +48,8 @@ describe("Abilities - Synchronize", () => { game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.PARALYSIS); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.PARALYSIS); + expect(game.field.getPlayerPokemon().status?.effect).toBe(StatusEffect.PARALYSIS); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.PARALYSIS); expect(game.phaseInterceptor.log).toContain("ShowAbilityPhase"); }); @@ -60,8 +60,8 @@ describe("Abilities - Synchronize", () => { await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBeUndefined(); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); + expect(game.field.getPlayerPokemon().status?.effect).toBeUndefined(); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.SLEEP); expect(game.phaseInterceptor.log).not.toContain("ShowAbilityPhase"); }); @@ -76,8 +76,8 @@ describe("Abilities - Synchronize", () => { game.doSwitchPokemon(1); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.POISON); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBeUndefined(); + expect(game.field.getPlayerPokemon().status?.effect).toBe(StatusEffect.POISON); + expect(game.field.getEnemyPokemon().status?.effect).toBeUndefined(); expect(game.phaseInterceptor.log).not.toContain("ShowAbilityPhase"); }); @@ -87,8 +87,8 @@ describe("Abilities - Synchronize", () => { game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBeUndefined(); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.PARALYSIS); + expect(game.field.getPlayerPokemon().status?.effect).toBeUndefined(); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.PARALYSIS); expect(game.phaseInterceptor.log).toContain("ShowAbilityPhase"); }); }); diff --git a/test/abilities/tera_shell.test.ts b/test/abilities/tera-shell.test.ts similarity index 90% rename from test/abilities/tera_shell.test.ts rename to test/abilities/tera-shell.test.ts index bd461e3aeba..4183cd4d0a6 100644 --- a/test/abilities/tera_shell.test.ts +++ b/test/abilities/tera-shell.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Abilities - Tera Shell", () => { it("should change the effectiveness of non-resisted attacks when the source is at full HP", async () => { await game.classicMode.startBattle([SpeciesId.SNORLAX]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); vi.spyOn(playerPokemon, "getMoveEffectiveness"); game.move.select(MoveId.SPLASH); @@ -57,7 +57,7 @@ describe("Abilities - Tera Shell", () => { await game.classicMode.startBattle([SpeciesId.SNORLAX]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); vi.spyOn(playerPokemon, "getMoveEffectiveness"); game.move.select(MoveId.SPLASH); @@ -71,7 +71,7 @@ describe("Abilities - Tera Shell", () => { await game.classicMode.startBattle([SpeciesId.AGGRON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); vi.spyOn(playerPokemon, "getMoveEffectiveness"); game.move.select(MoveId.SPLASH); @@ -85,7 +85,7 @@ describe("Abilities - Tera Shell", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const spy = vi.spyOn(playerPokemon, "getMoveEffectiveness"); game.move.select(MoveId.SPLASH); @@ -100,7 +100,7 @@ describe("Abilities - Tera Shell", () => { await game.classicMode.startBattle([SpeciesId.SNORLAX]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const spy = vi.spyOn(playerPokemon, "getMoveEffectiveness"); game.move.select(MoveId.SPLASH); diff --git a/test/abilities/thermal_exchange.test.ts b/test/abilities/thermal-exchange.test.ts similarity index 96% rename from test/abilities/thermal_exchange.test.ts rename to test/abilities/thermal-exchange.test.ts index 5e684b982e7..193676ccc18 100644 --- a/test/abilities/thermal_exchange.test.ts +++ b/test/abilities/thermal-exchange.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/trace.test.ts b/test/abilities/trace.test.ts index 7b87b3669b6..3a4809a4e7e 100644 --- a/test/abilities/trace.test.ts +++ b/test/abilities/trace.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Abilities - Trace", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getPlayerPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate a copied post-summon ability", async () => { @@ -48,6 +48,6 @@ describe("Abilities - Trace", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); }); diff --git a/test/abilities/truant.test.ts b/test/abilities/truant.test.ts new file mode 100644 index 00000000000..0d71cd393b0 --- /dev/null +++ b/test/abilities/truant.test.ts @@ -0,0 +1,72 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; +import i18next from "i18next"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Ability - Truant", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .battleStyle("single") + .criticalHits(false) + .moveset([MoveId.SPLASH, MoveId.TACKLE]) + .ability(AbilityId.TRUANT) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); + }); + + it("should loaf around and prevent using moves every other turn", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); + + // Turn 1: Splash succeeds + game.move.select(MoveId.SPLASH); + await game.toNextTurn(); + + expect(player.getLastXMoves(1)[0]).toEqual( + expect.objectContaining({ move: MoveId.SPLASH, result: MoveResult.SUCCESS }), + ); + + // Turn 2: Truant activates, cancelling tackle and displaying message + game.move.select(MoveId.TACKLE); + await game.toNextTurn(); + + expect(player.getLastXMoves(1)[0]).toEqual(expect.objectContaining({ move: MoveId.NONE, result: MoveResult.FAIL })); + expect(enemy.hp).toBe(enemy.getMaxHp()); + expect(game.textInterceptor.logs).toContain( + i18next.t("battlerTags:truantLapse", { + pokemonNameWithAffix: getPokemonNameWithAffix(player), + }), + ); + + // Turn 3: Truant didn't activate, tackle worked + game.move.select(MoveId.TACKLE); + await game.toNextTurn(); + + expect(player.getLastXMoves(1)[0]).toEqual( + expect.objectContaining({ move: MoveId.TACKLE, result: MoveResult.SUCCESS }), + ); + expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + }); +}); diff --git a/test/abilities/unburden.test.ts b/test/abilities/unburden.test.ts index 8d738db9076..c10dd404ab9 100644 --- a/test/abilities/unburden.test.ts +++ b/test/abilities/unburden.test.ts @@ -9,7 +9,7 @@ import { Stat } from "#enums/stat"; import type { Pokemon } from "#field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#modifiers/modifier"; import { StealHeldItemChanceAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -64,7 +64,7 @@ describe("Abilities - Unburden", () => { game.override.enemyMoveset(MoveId.FALSE_SWIPE); await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -80,7 +80,7 @@ describe("Abilities - Unburden", () => { game.override.enemyMoveset(MoveId.FALSE_SWIPE).startingModifier([{ name: "BERRY_POUCH", count: 5850 }]); await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -95,9 +95,9 @@ describe("Abilities - Unburden", () => { it("should activate for the target, and not the stealer, when a berry is stolen", async () => { await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); @@ -113,7 +113,7 @@ describe("Abilities - Unburden", () => { it("should activate when an item is knocked off", async () => { await game.classicMode.startBattle([SpeciesId.TREECKO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); @@ -129,7 +129,7 @@ describe("Abilities - Unburden", () => { game.override.ability(AbilityId.MAGICIAN).startingHeldItems([]); // Remove player's full stacks of held items so it can steal opponent's held items await game.classicMode.startBattle([SpeciesId.TREECKO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); @@ -145,7 +145,7 @@ describe("Abilities - Unburden", () => { game.override.enemyAbility(AbilityId.PICKPOCKET).enemyHeldItems([]); // Remove opponent's full stacks of held items so it can steal player's held items await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -161,7 +161,7 @@ describe("Abilities - Unburden", () => { game.override.moveset(MoveId.THIEF).startingHeldItems([]); // Remove player's full stacks of held items so it can steal opponent's held items await game.classicMode.startBattle([SpeciesId.TREECKO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); @@ -177,11 +177,11 @@ describe("Abilities - Unburden", () => { game.override.startingHeldItems([{ name: "GRIP_CLAW", count: 1 }]); await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const gripClaw = playerPokemon.getHeldItems()[0] as ContactHeldItemTransferChanceModifier; vi.spyOn(gripClaw, "chance", "get").mockReturnValue(100); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); @@ -197,7 +197,7 @@ describe("Abilities - Unburden", () => { game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS).enemyMoveset(MoveId.FALSE_SWIPE); await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -214,7 +214,7 @@ describe("Abilities - Unburden", () => { game.override.moveset(MoveId.STUFF_CHEEKS); await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItemCt = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -292,7 +292,7 @@ describe("Abilities - Unburden", () => { game.override.enemyMoveset([MoveId.FALSE_SWIPE, MoveId.WORRY_SEED]); await game.classicMode.startBattle([SpeciesId.PURRLOIN]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -317,7 +317,7 @@ describe("Abilities - Unburden", () => { game.override.startingHeldItems([{ name: "REVIVER_SEED" }]).enemyMoveset([MoveId.WING_ATTACK]); await game.classicMode.startBattle([SpeciesId.TREECKO]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -334,7 +334,7 @@ describe("Abilities - Unburden", () => { game.override.enemyMoveset([MoveId.SPLASH, MoveId.THIEF]); await game.classicMode.startBattle([SpeciesId.TREECKO, SpeciesId.FEEBAS]); - const treecko = game.scene.getPlayerPokemon()!; + const treecko = game.field.getPlayerPokemon(); const treeckoInitialHeldItems = getHeldItemCount(treecko); const initialSpeed = treecko.getStat(Stat.SPD); @@ -348,7 +348,7 @@ describe("Abilities - Unburden", () => { await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!).toBe(treecko); + expect(game.field.getPlayerPokemon()).toBe(treecko); expect(getHeldItemCount(treecko)).toBeLessThan(treeckoInitialHeldItems); expect(treecko.getEffectiveStat(Stat.SPD)).toBe(initialSpeed); }); diff --git a/test/abilities/unseen_fist.test.ts b/test/abilities/unseen-fist.test.ts similarity index 92% rename from test/abilities/unseen_fist.test.ts rename to test/abilities/unseen-fist.test.ts index c986a112517..3c0fa3f8c60 100644 --- a/test/abilities/unseen_fist.test.ts +++ b/test/abilities/unseen-fist.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#phases/berry-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -55,7 +55,7 @@ describe("Abilities - Unseen Fist", () => { await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, enemyPokemon.id); game.move.select(MoveId.TACKLE); @@ -77,10 +77,10 @@ async function testUnseenFistHitResult( await game.classicMode.startBattle(); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); expect(leadPokemon).not.toBe(undefined); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).not.toBe(undefined); const enemyStartingHp = enemyPokemon.hp; diff --git a/test/abilities/victory_star.test.ts b/test/abilities/victory-star.test.ts similarity index 96% rename from test/abilities/victory_star.test.ts rename to test/abilities/victory-star.test.ts index aff91a7702b..40611f6fbc1 100644 --- a/test/abilities/victory_star.test.ts +++ b/test/abilities/victory-star.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/vital_spirit.test.ts b/test/abilities/vital-spirit.test.ts similarity index 96% rename from test/abilities/vital_spirit.test.ts rename to test/abilities/vital-spirit.test.ts index 7530b2c6c04..e5d80a66a8e 100644 --- a/test/abilities/vital_spirit.test.ts +++ b/test/abilities/vital-spirit.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/volt_absorb.test.ts b/test/abilities/volt-absorb.test.ts similarity index 92% rename from test/abilities/volt_absorb.test.ts rename to test/abilities/volt-absorb.test.ts index 12de6ceff87..9ba76028703 100644 --- a/test/abilities/volt_absorb.test.ts +++ b/test/abilities/volt-absorb.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -42,7 +42,7 @@ describe("Abilities - Volt Absorb", () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(moveToUse); @@ -62,7 +62,7 @@ describe("Abilities - Volt Absorb", () => { await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDERBOLT); enemyPokemon.hp = enemyPokemon.hp - 1; @@ -83,7 +83,7 @@ describe("Abilities - Volt Absorb", () => { await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDERBOLT); enemyPokemon.hp = enemyPokemon.hp - 1; diff --git a/test/abilities/wandering_spirit.test.ts b/test/abilities/wandering-spirit.test.ts similarity index 79% rename from test/abilities/wandering_spirit.test.ts rename to test/abilities/wandering-spirit.test.ts index 3d26238e970..44e2cd61236 100644 --- a/test/abilities/wandering_spirit.test.ts +++ b/test/abilities/wandering-spirit.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,8 +38,8 @@ describe("Abilities - Wandering Spirit", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.WANDERING_SPIRIT); + expect(game.field.getPlayerPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.WANDERING_SPIRIT); }); it("should not exchange abilities when hit with a non-contact move", async () => { @@ -49,8 +49,8 @@ describe("Abilities - Wandering Spirit", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.WANDERING_SPIRIT); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getPlayerPokemon().getAbility().id).toBe(AbilityId.WANDERING_SPIRIT); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate post-summon abilities", async () => { @@ -60,6 +60,6 @@ describe("Abilities - Wandering Spirit", () => { game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); }); diff --git a/test/abilities/water_bubble.test.ts b/test/abilities/water-bubble.test.ts similarity index 96% rename from test/abilities/water_bubble.test.ts rename to test/abilities/water-bubble.test.ts index c8d01eb2800..6be1ac51094 100644 --- a/test/abilities/water_bubble.test.ts +++ b/test/abilities/water-bubble.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/water_veil.test.ts b/test/abilities/water-veil.test.ts similarity index 96% rename from test/abilities/water_veil.test.ts rename to test/abilities/water-veil.test.ts index dcfe5b60fe9..0c7068ae209 100644 --- a/test/abilities/water_veil.test.ts +++ b/test/abilities/water-veil.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/wimp_out.test.ts b/test/abilities/wimp-out.test.ts similarity index 91% rename from test/abilities/wimp_out.test.ts rename to test/abilities/wimp-out.test.ts index d6e6908e19b..1e129f34a19 100644 --- a/test/abilities/wimp_out.test.ts +++ b/test/abilities/wimp-out.test.ts @@ -9,7 +9,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -70,7 +70,7 @@ describe("Abilities - Wimp Out", () => { game.override.passiveAbility(AbilityId.REGENERATOR).startingLevel(5).enemyLevel(100); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - const wimpod = game.scene.getPlayerPokemon()!; + const wimpod = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -84,7 +84,7 @@ describe("Abilities - Wimp Out", () => { game.override.enemyAbility(AbilityId.WIMP_OUT); await game.classicMode.startBattle([SpeciesId.GOLISOPOD, SpeciesId.TYRUNT]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.hp *= 0.52; game.move.select(MoveId.FALSE_SWIPE); @@ -97,7 +97,7 @@ describe("Abilities - Wimp Out", () => { it("Does not trigger when HP already below half", async () => { await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - const wimpod = game.scene.getPlayerPokemon()!; + const wimpod = game.field.getPlayerPokemon(); wimpod.hp = 5; game.move.select(MoveId.SPLASH); @@ -117,7 +117,7 @@ describe("Abilities - Wimp Out", () => { await game.phaseInterceptor.to("TurnEndPhase"); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(game.field.getPlayerPokemon().getTag(BattlerTagType.TRAPPED)).toBeUndefined(); expect(game.scene.getPlayerParty()[1].getTag(BattlerTagType.TRAPPED)).toBeUndefined(); confirmSwitch(); }); @@ -130,7 +130,7 @@ describe("Abilities - Wimp Out", () => { game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const hasFled = enemyPokemon.switchOutStatus; expect(hasFled).toBe(false); confirmSwitch(); @@ -139,17 +139,17 @@ describe("Abilities - Wimp Out", () => { it("If this Ability does not activate due to being hit by U-turn or Volt Switch, the user of that move will be switched out.", async () => { game.override.startingLevel(190).startingWave(8).enemyMoveset([MoveId.U_TURN]); await game.classicMode.startBattle([SpeciesId.GOLISOPOD, SpeciesId.TYRUNT]); - const RIVAL_NINJASK1 = game.scene.getEnemyPokemon()?.id; + const RIVAL_NINJASK1 = game.field.getEnemyPokemon().id; game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); - expect(game.scene.getEnemyPokemon()?.id !== RIVAL_NINJASK1); + expect(game.field.getEnemyPokemon().id !== RIVAL_NINJASK1); }); it("Dragon Tail and Circle Throw switch out Pokémon before the Ability activates.", async () => { game.override.startingLevel(69).enemyMoveset([MoveId.DRAGON_TAIL]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - const wimpod = game.scene.getPlayerPokemon()!; + const wimpod = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -159,7 +159,7 @@ describe("Abilities - Wimp Out", () => { await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).not.toBe(SpeciesId.WIMPOD); + expect(game.field.getPlayerPokemon().species.speciesId).not.toBe(SpeciesId.WIMPOD); }); it("triggers when recoil damage is taken", async () => { @@ -177,7 +177,7 @@ describe("Abilities - Wimp Out", () => { game.override.moveset([MoveId.SUBSTITUTE]).enemyMoveset([MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - const wimpod = game.scene.getPlayerPokemon()!; + const wimpod = game.field.getPlayerPokemon(); wimpod.hp *= 0.52; game.move.select(MoveId.SUBSTITUTE); @@ -208,7 +208,7 @@ describe("Abilities - Wimp Out", () => { .startingHeldItems([{ name: "SHELL_BELL", count: 4 }]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - const wimpod = game.scene.getPlayerPokemon()!; + const wimpod = game.field.getPlayerPokemon(); wimpod.damageAndUpdate(toDmgValue(wimpod.getMaxHp() * 0.4)); @@ -219,7 +219,7 @@ describe("Abilities - Wimp Out", () => { expect(game.scene.getPlayerParty()[1]).toBe(wimpod); expect(wimpod.hp).toBeGreaterThan(toDmgValue(wimpod.getMaxHp() / 2)); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.TYRUNT); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.TYRUNT); }, ); @@ -227,7 +227,7 @@ describe("Abilities - Wimp Out", () => { game.override.weather(WeatherType.HAIL).enemyMoveset([MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -240,7 +240,7 @@ describe("Abilities - Wimp Out", () => { game.override.enemyAbility(AbilityId.SHEER_FORCE).enemyMoveset(MoveId.SLUDGE_BOMB).startingLevel(95); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.ENDURE); await game.phaseInterceptor.to("TurnEndPhase"); @@ -252,7 +252,7 @@ describe("Abilities - Wimp Out", () => { game.override.statusEffect(StatusEffect.POISON).enemyMoveset([MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -265,7 +265,7 @@ describe("Abilities - Wimp Out", () => { game.override.statusEffect(StatusEffect.SLEEP).enemyAbility(AbilityId.BAD_DREAMS); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.52; + game.field.getPlayerPokemon().hp *= 0.52; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -277,7 +277,7 @@ describe("Abilities - Wimp Out", () => { it("Wimp Out will activate due to leech seed", async () => { game.override.enemyMoveset([MoveId.LEECH_SEED]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.52; + game.field.getPlayerPokemon().hp *= 0.52; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -289,7 +289,7 @@ describe("Abilities - Wimp Out", () => { it("Wimp Out will activate due to curse damage", async () => { game.override.enemySpecies(SpeciesId.DUSKNOIR).enemyMoveset([MoveId.CURSE]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.52; + game.field.getPlayerPokemon().hp *= 0.52; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -301,7 +301,7 @@ describe("Abilities - Wimp Out", () => { it("Wimp Out will activate due to salt cure damage", async () => { game.override.enemySpecies(SpeciesId.NACLI).enemyMoveset([MoveId.SALT_CURE]).enemyLevel(1); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.7; + game.field.getPlayerPokemon().hp *= 0.7; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -313,7 +313,7 @@ describe("Abilities - Wimp Out", () => { it("Wimp Out will activate due to damaging trap damage", async () => { game.override.enemySpecies(SpeciesId.MAGIKARP).enemyMoveset([MoveId.WHIRLPOOL]).enemyLevel(1); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.55; + game.field.getPlayerPokemon().hp *= 0.55; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -331,14 +331,14 @@ describe("Abilities - Wimp Out", () => { .weather(WeatherType.HAIL) .statusEffect(StatusEffect.POISON); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerParty()[0].getHpRatio()).toEqual(0.51); expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.WIMPOD); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.WIMPOD); }); it("Wimp Out activating should not cancel a double battle", async () => { @@ -369,7 +369,7 @@ describe("Abilities - Wimp Out", () => { .enemyMoveset([MoveId.SPLASH]) .enemyLevel(1); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.THUNDER_PUNCH); game.doSelectPartyPokemon(1); @@ -391,7 +391,7 @@ describe("Abilities - Wimp Out", () => { it("Wimp Out will activate due to Nightmare", async () => { game.override.enemyMoveset([MoveId.NIGHTMARE]).statusEffect(StatusEffect.SLEEP); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.65; + game.field.getPlayerPokemon().hp *= 0.65; game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); @@ -417,13 +417,13 @@ describe("Abilities - Wimp Out", () => { game.override.enemyMoveset(MoveId.BULLET_SEED).enemyAbility(AbilityId.SKILL_LINK); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.ENDURE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.turnData.hitsLeft).toBe(0); expect(enemyPokemon.turnData.hitCount).toBe(5); confirmSwitch(); @@ -433,13 +433,13 @@ describe("Abilities - Wimp Out", () => { game.override.enemyMoveset(MoveId.TACKLE).enemyHeldItems([{ name: "MULTI_LENS", count: 1 }]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.ENDURE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.turnData.hitsLeft).toBe(0); expect(enemyPokemon.turnData.hitCount).toBe(2); confirmSwitch(); @@ -448,13 +448,13 @@ describe("Abilities - Wimp Out", () => { game.override.enemyMoveset(MoveId.TACKLE).enemyAbility(AbilityId.PARENTAL_BOND); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.scene.getPlayerPokemon()!.hp *= 0.51; + game.field.getPlayerPokemon().hp *= 0.51; game.move.select(MoveId.ENDURE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.turnData.hitsLeft).toBe(0); expect(enemyPokemon.turnData.hitCount).toBe(2); confirmSwitch(); @@ -466,7 +466,7 @@ describe("Abilities - Wimp Out", () => { async () => { game.override.moveset([MoveId.SWORDS_DANCE]).enemyMoveset([MoveId.SWAGGER]); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.hp *= 0.51; playerPokemon.setStatStage(Stat.ATK, 6); playerPokemon.addTag(BattlerTagType.CONFUSED); @@ -486,7 +486,7 @@ describe("Abilities - Wimp Out", () => { game.override.enemyAbility(AbilityId.WIMP_OUT).startingLevel(5850).startingWave(10); await game.classicMode.startBattle([SpeciesId.GOLISOPOD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // Use 2 turns of False Swipe due to opponent's health bar shield game.move.select(MoveId.FALSE_SWIPE); diff --git a/test/abilities/wind_power.test.ts b/test/abilities/wind-power.test.ts similarity index 89% rename from test/abilities/wind_power.test.ts rename to test/abilities/wind-power.test.ts index 255e8fa69be..5aaec25e19a 100644 --- a/test/abilities/wind_power.test.ts +++ b/test/abilities/wind-power.test.ts @@ -3,7 +3,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Abilities - Wind Power", () => { it("becomes charged when hit by wind moves", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const shiftry = game.scene.getEnemyPokemon()!; + const shiftry = game.field.getEnemyPokemon(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); @@ -47,7 +47,7 @@ describe("Abilities - Wind Power", () => { game.override.ability(AbilityId.WIND_POWER).enemySpecies(SpeciesId.MAGIKARP); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const shiftry = game.scene.getPlayerPokemon()!; + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); @@ -61,8 +61,8 @@ describe("Abilities - Wind Power", () => { game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_POWER); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const magikarp = game.scene.getEnemyPokemon()!; - const shiftry = game.scene.getPlayerPokemon()!; + const magikarp = game.field.getEnemyPokemon(); + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); expect(magikarp.getTag(BattlerTagType.CHARGED)).toBeUndefined(); @@ -79,7 +79,7 @@ describe("Abilities - Wind Power", () => { game.override.enemySpecies(SpeciesId.MAGIKARP); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const shiftry = game.scene.getPlayerPokemon()!; + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); diff --git a/test/abilities/wind_rider.test.ts b/test/abilities/wind-rider.test.ts similarity index 88% rename from test/abilities/wind_rider.test.ts rename to test/abilities/wind-rider.test.ts index e7b55d2ef65..9480bb437fb 100644 --- a/test/abilities/wind_rider.test.ts +++ b/test/abilities/wind-rider.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -32,7 +32,7 @@ describe("Abilities - Wind Rider", () => { it("takes no damage from wind moves and its ATK stat stage is raised by 1 when hit by one", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const shiftry = game.scene.getEnemyPokemon()!; + const shiftry = game.field.getEnemyPokemon(); expect(shiftry.getStatStage(Stat.ATK)).toBe(0); @@ -48,7 +48,7 @@ describe("Abilities - Wind Rider", () => { game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_RIDER); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const shiftry = game.scene.getPlayerPokemon()!; + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getStatStage(Stat.ATK)).toBe(0); @@ -63,8 +63,8 @@ describe("Abilities - Wind Rider", () => { game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_RIDER); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const magikarp = game.scene.getEnemyPokemon()!; - const shiftry = game.scene.getPlayerPokemon()!; + const magikarp = game.field.getEnemyPokemon(); + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getStatStage(Stat.ATK)).toBe(0); expect(magikarp.getStatStage(Stat.ATK)).toBe(0); @@ -81,8 +81,8 @@ describe("Abilities - Wind Rider", () => { game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_RIDER); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const magikarp = game.scene.getEnemyPokemon()!; - const shiftry = game.scene.getPlayerPokemon()!; + const magikarp = game.field.getEnemyPokemon(); + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getStatStage(Stat.ATK)).toBe(0); expect(magikarp.getStatStage(Stat.ATK)).toBe(0); @@ -99,7 +99,7 @@ describe("Abilities - Wind Rider", () => { game.override.enemySpecies(SpeciesId.MAGIKARP); await game.classicMode.startBattle([SpeciesId.SHIFTRY]); - const shiftry = game.scene.getPlayerPokemon()!; + const shiftry = game.field.getPlayerPokemon(); expect(shiftry.getStatStage(Stat.ATK)).toBe(0); expect(shiftry.isFullHp()).toBe(true); diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder-skin.test.ts similarity index 97% rename from test/abilities/wonder_skin.test.ts rename to test/abilities/wonder-skin.test.ts index f55c303c9e3..8f14bf10101 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder-skin.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/zen_mode.test.ts b/test/abilities/zen-mode.test.ts similarity index 93% rename from test/abilities/zen_mode.test.ts rename to test/abilities/zen-mode.test.ts index 89dc0690ead..f3ea7d78398 100644 --- a/test/abilities/zen_mode.test.ts +++ b/test/abilities/zen-mode.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Abilities - ZEN MODE", () => { it("shouldn't change form when taking damage if not dropping below 50% HP", async () => { await game.classicMode.startBattle([SpeciesId.DARMANITAN]); - const darmanitan = game.scene.getPlayerPokemon()!; + const darmanitan = game.field.getPlayerPokemon(); expect(darmanitan.formIndex).toBe(baseForm); game.move.select(MoveId.SPLASH); @@ -52,7 +52,7 @@ describe("Abilities - ZEN MODE", () => { it("should change form when falling below 50% HP", async () => { await game.classicMode.startBattle([SpeciesId.DARMANITAN]); - const darmanitan = game.scene.getPlayerPokemon()!; + const darmanitan = game.field.getPlayerPokemon(); darmanitan.hp = darmanitan.getMaxHp() / 2 + 1; expect(darmanitan.formIndex).toBe(baseForm); @@ -65,7 +65,7 @@ describe("Abilities - ZEN MODE", () => { it("should stay zen mode when fainted", async () => { await game.classicMode.startBattle([SpeciesId.DARMANITAN, SpeciesId.CHARIZARD]); - const darmanitan = game.scene.getPlayerPokemon()!; + const darmanitan = game.field.getPlayerPokemon(); darmanitan.hp = darmanitan.getMaxHp() / 2 + 1; expect(darmanitan.formIndex).toBe(baseForm); diff --git a/test/abilities/zero_to_hero.test.ts b/test/abilities/zero-to-hero.test.ts similarity index 93% rename from test/abilities/zero_to_hero.test.ts rename to test/abilities/zero-to-hero.test.ts index 84b3ddab60c..d9fa3580da2 100644 --- a/test/abilities/zero_to_hero.test.ts +++ b/test/abilities/zero-to-hero.test.ts @@ -5,7 +5,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Abilities - ZERO TO HERO", () => { @@ -62,7 +62,7 @@ describe("Abilities - ZERO TO HERO", () => { it("should swap to Hero form when switching out during a battle", async () => { await game.classicMode.startBattle([SpeciesId.PALAFIN, SpeciesId.FEEBAS]); - const palafin = game.scene.getPlayerPokemon()!; + const palafin = game.field.getPlayerPokemon(); expect(palafin.formIndex).toBe(baseForm); game.doSwitchPokemon(1); @@ -73,7 +73,7 @@ describe("Abilities - ZERO TO HERO", () => { it("should not swap to Hero form if switching due to faint", async () => { await game.classicMode.startBattle([SpeciesId.PALAFIN, SpeciesId.FEEBAS]); - const palafin = game.scene.getPlayerPokemon()!; + const palafin = game.field.getPlayerPokemon(); expect(palafin.formIndex).toBe(baseForm); game.move.select(MoveId.SPLASH); @@ -90,7 +90,7 @@ describe("Abilities - ZERO TO HERO", () => { await game.classicMode.startBattle([SpeciesId.PALAFIN, SpeciesId.FEEBAS]); - const palafin = game.scene.getPlayerPokemon()!; + const palafin = game.field.getPlayerPokemon(); expect(palafin.formIndex).toBe(heroForm); game.move.select(MoveId.SPLASH); diff --git a/test/achievements/achievement.test.ts b/test/achievements/achievement.test.ts index d736485b25f..9060d6213cc 100644 --- a/test/achievements/achievement.test.ts +++ b/test/achievements/achievement.test.ts @@ -11,7 +11,7 @@ import { MoneyAchv, RibbonAchv, } from "#system/achv"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/arena/arena_gravity.test.ts b/test/arena/arena-gravity.test.ts similarity index 94% rename from test/arena/arena_gravity.test.ts rename to test/arena/arena-gravity.test.ts index d1cee1655a1..02b49d7711f 100644 --- a/test/arena/arena_gravity.test.ts +++ b/test/arena/arena-gravity.test.ts @@ -5,7 +5,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -84,7 +84,7 @@ describe("Arena - Gravity", () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pidgeot = game.scene.getEnemyPokemon()!; + const pidgeot = game.field.getEnemyPokemon(); vi.spyOn(pidgeot, "getAttackTypeEffectiveness"); // Try earthquake on 1st turn (fails!); @@ -113,7 +113,7 @@ describe("Arena - Gravity", () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pidgeot = game.scene.getEnemyPokemon()!; + const pidgeot = game.field.getEnemyPokemon(); vi.spyOn(pidgeot, "getAttackTypeEffectiveness"); // Setup Gravity on 1st turn @@ -136,8 +136,8 @@ describe("Arena - Gravity", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const charizard = game.scene.getPlayerPokemon()!; - const snorlax = game.scene.getEnemyPokemon()!; + const charizard = game.field.getPlayerPokemon(); + const snorlax = game.field.getEnemyPokemon(); game.move.select(MoveId.SPLASH); diff --git a/test/arena/grassy_terrain.test.ts b/test/arena/grassy-terrain.test.ts similarity index 96% rename from test/arena/grassy_terrain.test.ts rename to test/arena/grassy-terrain.test.ts index 541402123c4..d87498cdd23 100644 --- a/test/arena/grassy_terrain.test.ts +++ b/test/arena/grassy-terrain.test.ts @@ -2,7 +2,7 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/arena/psychic-terrain.test.ts b/test/arena/psychic-terrain.test.ts new file mode 100644 index 00000000000..6d42ed0d3ac --- /dev/null +++ b/test/arena/psychic-terrain.test.ts @@ -0,0 +1,59 @@ +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; +import { WeatherType } from "#enums/weather-type"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Arena - Psychic Terrain", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .battleStyle("single") + .criticalHits(false) + .enemyLevel(1) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.PSYCHIC_TERRAIN, MoveId.RAIN_DANCE, MoveId.DARK_VOID]) + .ability(AbilityId.NO_GUARD); + }); + + it("Dark Void with Prankster is not blocked", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + game.move.select(MoveId.PSYCHIC_TERRAIN); + await game.toNextTurn(); + + game.move.select(MoveId.DARK_VOID); + await game.toEndOfTurn(); + + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.SLEEP); + }); + + it("Rain Dance with Prankster is not blocked", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + game.move.select(MoveId.PSYCHIC_TERRAIN); + await game.toNextTurn(); + + game.move.select(MoveId.RAIN_DANCE); + await game.toEndOfTurn(); + + expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.RAIN); + }); +}); diff --git a/test/arena/weather_fog.test.ts b/test/arena/weather-fog.test.ts similarity index 95% rename from test/arena/weather_fog.test.ts rename to test/arena/weather-fog.test.ts index f55a12e3e0f..8dd906d2df3 100644 --- a/test/arena/weather_fog.test.ts +++ b/test/arena/weather-fog.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/arena/weather_hail.test.ts b/test/arena/weather-hail.test.ts similarity index 88% rename from test/arena/weather_hail.test.ts rename to test/arena/weather-hail.test.ts index c6f27f647fe..edc01b3348f 100644 --- a/test/arena/weather_hail.test.ts +++ b/test/arena/weather-hail.test.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -52,8 +52,8 @@ describe("Weather - Hail", () => { await game.phaseInterceptor.to("TurnEndPhase"); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp() - Math.max(Math.floor(enemyPokemon.getMaxHp() / 16), 1)); @@ -66,8 +66,8 @@ describe("Weather - Hail", () => { await game.phaseInterceptor.to("TurnEndPhase"); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp() - Math.max(Math.floor(enemyPokemon.getMaxHp() / 16), 1)); diff --git a/test/arena/weather_sandstorm.test.ts b/test/arena/weather-sandstorm.test.ts similarity index 90% rename from test/arena/weather_sandstorm.test.ts rename to test/arena/weather-sandstorm.test.ts index a600aeed000..69c741d53c5 100644 --- a/test/arena/weather_sandstorm.test.ts +++ b/test/arena/weather-sandstorm.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -51,8 +51,8 @@ describe("Weather - Sandstorm", () => { await game.phaseInterceptor.to("TurnEndPhase"); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp() - Math.max(Math.floor(enemyPokemon.getMaxHp() / 16), 1)); @@ -80,11 +80,11 @@ describe("Weather - Sandstorm", () => { it("increases Rock type Pokemon Sp.Def by 50%", async () => { await game.classicMode.startBattle([SpeciesId.ROCKRUFF]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerSpdef = playerPokemon.getStat(Stat.SPDEF); expect(playerPokemon.getEffectiveStat(Stat.SPDEF)).toBe(Math.floor(playerSpdef * 1.5)); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemySpdef = enemyPokemon.getStat(Stat.SPDEF); expect(enemyPokemon.getEffectiveStat(Stat.SPDEF)).toBe(enemySpdef); }); diff --git a/test/arena/weather_strong_winds.test.ts b/test/arena/weather-strong-winds.test.ts similarity index 84% rename from test/arena/weather_strong_winds.test.ts rename to test/arena/weather-strong-winds.test.ts index b0b1bca8c4c..1800027f59c 100644 --- a/test/arena/weather_strong_winds.test.ts +++ b/test/arena/weather-strong-winds.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Weather - Strong Winds", () => { game.override.enemySpecies(SpeciesId.RAYQUAZA); await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pikachu = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDERBOLT); @@ -47,8 +47,8 @@ describe("Weather - Strong Winds", () => { it("electric type move is neutral for flying type pokemon", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pikachu = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDERBOLT); @@ -58,8 +58,8 @@ describe("Weather - Strong Winds", () => { it("ice type move is neutral for flying type pokemon", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pikachu = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.ICE_BEAM); @@ -69,8 +69,8 @@ describe("Weather - Strong Winds", () => { it("rock type move is neutral for flying type pokemon", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const pikachu = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const pikachu = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.ROCK_SLIDE); @@ -83,7 +83,7 @@ describe("Weather - Strong Winds", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1; game.move.use(MoveId.SPLASH); diff --git a/test/battle-scene.test.ts b/test/battle-scene.test.ts index a920c48ea75..0ff4b03a50f 100644 --- a/test/battle-scene.test.ts +++ b/test/battle-scene.test.ts @@ -1,5 +1,5 @@ import { LoadingScene } from "#app/loading-scene"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("BattleScene", () => { diff --git a/test/battle/ability_swap.test.ts b/test/battle/ability-swap.test.ts similarity index 79% rename from test/battle/ability_swap.test.ts rename to test/battle/ability-swap.test.ts index 525c038d011..6d8ae8b5551 100644 --- a/test/battle/ability_swap.test.ts +++ b/test/battle/ability-swap.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,10 +37,10 @@ describe("Test Ability Swapping", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); game.move.select(MoveId.SPLASH); - game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[AbilityId.INTIMIDATE]); + game.field.getPlayerPokemon().setTempAbility(allAbilities[AbilityId.INTIMIDATE]); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should remove primal weather when the setter's ability is removed", async () => { @@ -48,7 +48,7 @@ describe("Test Ability Swapping", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); game.move.select(MoveId.SPLASH); - game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[AbilityId.BALL_FETCH]); + game.field.getPlayerPokemon().setTempAbility(allAbilities[AbilityId.BALL_FETCH]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.weather?.weatherType).toBeUndefined(); @@ -59,10 +59,10 @@ describe("Test Ability Swapping", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); game.move.select(MoveId.SPLASH); - game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[AbilityId.BALL_FETCH]); + game.field.getPlayerPokemon().setTempAbility(allAbilities[AbilityId.BALL_FETCH]); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(1); // would be 2 if passive activated again + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(1); // would be 2 if passive activated again }); // Pickup and Honey Gather are special cases as they're the only abilities to be Unsuppressable but not Unswappable @@ -73,6 +73,6 @@ describe("Test Ability Swapping", () => { game.move.select(MoveId.ROLE_PLAY); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); }); diff --git a/test/battle/battle-order.test.ts b/test/battle/battle-order.test.ts index a47da66c4d7..0ee23cd6418 100644 --- a/test/battle/battle-order.test.ts +++ b/test/battle/battle-order.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { EnemyCommandPhase } from "#phases/enemy-command-phase"; import { SelectTargetPhase } from "#phases/select-target-phase"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -35,8 +35,8 @@ describe("Battle order", () => { it("opponent faster than player 50 vs 150", async () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 50]); // set playerPokemon's speed to 50 vi.spyOn(enemyPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 150]); // set enemyPokemon's speed to 150 @@ -54,8 +54,8 @@ describe("Battle order", () => { it("Player faster than opponent 150 vs 50", async () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 150]); // set playerPokemon's speed to 150 vi.spyOn(enemyPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 50]); // set enemyPokemon's speed to 50 diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index 7a2365fb6d8..3dd154cf4eb 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -21,8 +21,8 @@ import { SummonPhase } from "#phases/summon-phase"; import { SwitchPhase } from "#phases/switch-phase"; import { TitlePhase } from "#phases/title-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; -import { generateStarter } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { generateStarter } from "#test/test-utils/game-manager-utils"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -111,7 +111,7 @@ describe("Phase - Battle Phase", () => { }); it("load 100% data file", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -293,7 +293,7 @@ describe("Phase - Battle Phase", () => { .startingHeldItems([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]); await game.classicMode.startBattle(); - game.scene.getPlayerPokemon()!.hp = 1; + game.field.getPlayerPokemon().hp = 1; game.move.select(moveToUse); await game.phaseInterceptor.to(BattleEndPhase); diff --git a/test/battle/damage_calculation.test.ts b/test/battle/damage-calculation.test.ts similarity index 88% rename from test/battle/damage_calculation.test.ts rename to test/battle/damage-calculation.test.ts index fbcefcb0693..fac7c624f99 100644 --- a/test/battle/damage_calculation.test.ts +++ b/test/battle/damage-calculation.test.ts @@ -4,7 +4,7 @@ import { ArenaTagType } from "#enums/arena-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { EnemyPersistentModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -38,10 +38,10 @@ describe("Battle Mechanics - Damage Calculation", () => { it("Tackle deals expected base damage", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); vi.spyOn(playerPokemon, "getEffectiveStat").mockReturnValue(80); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "getEffectiveStat").mockReturnValue(90); // expected base damage = [(2*level/5 + 2) * power * playerATK / enemyDEF / 50] + 2 @@ -56,7 +56,7 @@ describe("Battle Mechanics - Damage Calculation", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const aggron = game.scene.getEnemyPokemon()!; + const aggron = game.field.getEnemyPokemon(); game.move.select(MoveId.TACKLE); @@ -75,7 +75,7 @@ describe("Battle Mechanics - Damage Calculation", () => { dmg_redux_modifier.stackCount = 1000; await game.scene.addEnemyModifier(modifierTypes.ENEMY_DAMAGE_REDUCTION().newModifier() as EnemyPersistentModifier); - const aggron = game.scene.getEnemyPokemon()!; + const aggron = game.field.getEnemyPokemon(); game.move.select(MoveId.TACKLE); @@ -89,8 +89,8 @@ describe("Battle Mechanics - Damage Calculation", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const magikarp = game.scene.getPlayerPokemon()!; - const dragonite = game.scene.getEnemyPokemon()!; + const magikarp = game.field.getPlayerPokemon(); + const dragonite = game.field.getEnemyPokemon(); expect(dragonite.getAttackDamage({ source: magikarp, move: allMoves[MoveId.DRAGON_RAGE] }).damage).toBe(40); }); @@ -100,8 +100,8 @@ describe("Battle Mechanics - Damage Calculation", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const magikarp = game.scene.getPlayerPokemon()!; - const aggron = game.scene.getEnemyPokemon()!; + const magikarp = game.field.getPlayerPokemon(); + const aggron = game.field.getEnemyPokemon(); expect(aggron.getAttackDamage({ source: magikarp, move: allMoves[MoveId.FISSURE] }).damage).toBe(aggron.hp); }); @@ -111,7 +111,7 @@ describe("Battle Mechanics - Damage Calculation", () => { await game.classicMode.startBattle([SpeciesId.SHEDINJA]); - const shedinja = game.scene.getPlayerPokemon()!; + const shedinja = game.field.getPlayerPokemon(); game.move.select(MoveId.JUMP_KICK); @@ -126,7 +126,7 @@ describe("Battle Mechanics - Damage Calculation", () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const charizard = game.scene.getEnemyPokemon()!; + const charizard = game.field.getEnemyPokemon(); if (charizard.getMaxHp() % 2 === 1) { expect(charizard.hp).toBeGreaterThan(charizard.getMaxHp() / 2); diff --git a/test/battle/double_battle.test.ts b/test/battle/double-battle.test.ts similarity index 98% rename from test/battle/double_battle.test.ts rename to test/battle/double-battle.test.ts index 7e0aa0f6c69..ad385a1cecf 100644 --- a/test/battle/double_battle.test.ts +++ b/test/battle/double-battle.test.ts @@ -7,7 +7,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { BattleEndPhase } from "#phases/battle-end-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/battle/inverse_battle.test.ts b/test/battle/inverse-battle.test.ts similarity index 91% rename from test/battle/inverse_battle.test.ts rename to test/battle/inverse-battle.test.ts index f9fd8f80a37..66a21e80009 100644 --- a/test/battle/inverse_battle.test.ts +++ b/test/battle/inverse-battle.test.ts @@ -6,7 +6,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -43,7 +43,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.THUNDERBOLT); @@ -58,7 +58,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.THUNDERBOLT); @@ -73,7 +73,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.THUNDERBOLT); @@ -89,7 +89,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const charizard = game.scene.getEnemyPokemon()!; + const charizard = game.field.getEnemyPokemon(); const maxHp = charizard.getMaxHp(); const damage_prediction = Math.max(Math.round(charizard.getMaxHp() / 32), 1); @@ -111,7 +111,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -126,7 +126,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = enemy.getMaxHp() - 1; game.move.select(MoveId.WATER_GUN); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -140,7 +140,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.WILL_O_WISP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -155,7 +155,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.NUZZLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -169,7 +169,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDER_WAVE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -184,7 +184,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - expect(game.scene.getEnemyPokemon()?.waveData.abilitiesApplied).toContain(AbilityId.ANTICIPATION); + expect(game.field.getEnemyPokemon().waveData.abilitiesApplied).toContain(AbilityId.ANTICIPATION); }); it("Conversion 2 should change the type to the resistive type - Conversion 2 against Dragonite", async () => { @@ -192,7 +192,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); game.move.select(MoveId.CONVERSION_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -207,7 +207,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FLYING_PRESS); @@ -222,7 +222,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.TACKLE); @@ -237,7 +237,7 @@ describe("Inverse Battle", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FORESIGHT); diff --git a/test/battle/special_battle.test.ts b/test/battle/special-battle.test.ts similarity index 98% rename from test/battle/special_battle.test.ts rename to test/battle/special-battle.test.ts index 36b543b0666..d22931bfea5 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special-battle.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/battlerTags/octolock.test.ts b/test/battler-tags/octolock.test.ts similarity index 96% rename from test/battlerTags/octolock.test.ts rename to test/battler-tags/octolock.test.ts index 5b395a180a2..29024f177cb 100644 --- a/test/battlerTags/octolock.test.ts +++ b/test/battler-tags/octolock.test.ts @@ -3,7 +3,7 @@ import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { Stat } from "#enums/stat"; import type { Pokemon } from "#field/pokemon"; import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; describe("BattlerTag - OctolockTag", () => { diff --git a/test/battlerTags/stockpiling.test.ts b/test/battler-tags/stockpiling.test.ts similarity index 99% rename from test/battlerTags/stockpiling.test.ts rename to test/battler-tags/stockpiling.test.ts index 9024b3edb3c..a4bed560687 100644 --- a/test/battlerTags/stockpiling.test.ts +++ b/test/battler-tags/stockpiling.test.ts @@ -4,7 +4,7 @@ import { PokemonSummonData } from "#data/pokemon-data"; import { Stat } from "#enums/stat"; import type { Pokemon } from "#field/pokemon"; import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; beforeEach(() => { diff --git a/test/battlerTags/substitute.test.ts b/test/battler-tags/substitute.test.ts similarity index 99% rename from test/battlerTags/substitute.test.ts rename to test/battler-tags/substitute.test.ts index 825bebf1a1e..7ae60ad1408 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battler-tags/substitute.test.ts @@ -9,7 +9,7 @@ import { MoveResult } from "#enums/move-result"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; import type { Pokemon } from "#field/pokemon"; import type { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { TurnMove } from "#types/turn-move"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/boss-pokemon.test.ts b/test/boss-pokemon.test.ts index 06a2f313016..b0dfbf19794 100644 --- a/test/boss-pokemon.test.ts +++ b/test/boss-pokemon.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { EFFECTIVE_STATS } from "#enums/stat"; import type { EnemyPokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -80,7 +80,7 @@ describe("Boss Pokemon / Shields", () => { await game.classicMode.startBattle([SpeciesId.MEWTWO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const segmentHp = enemyPokemon.getMaxHp() / enemyPokemon.bossSegments; expect(enemyPokemon.isBoss()).toBe(true); expect(enemyPokemon.bossSegments).toBe(3); @@ -191,7 +191,7 @@ describe("Boss Pokemon / Shields", () => { await game.classicMode.startBattle([SpeciesId.MEWTWO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.isBoss()).toBe(true); expect(enemyPokemon.bossSegments).toBe(2); expect(getTotalStatStageBoosts(enemyPokemon)).toBe(0); diff --git a/test/daily_mode.test.ts b/test/daily-mode.test.ts similarity index 98% rename from test/daily_mode.test.ts rename to test/daily-mode.test.ts index 0fa7c0dc846..34a8da80478 100644 --- a/test/daily_mode.test.ts +++ b/test/daily-mode.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import { MapModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/data/splash_messages.test.ts b/test/data/splash-messages.test.ts similarity index 100% rename from test/data/splash_messages.test.ts rename to test/data/splash-messages.test.ts diff --git a/test/data/status_effect.test.ts b/test/data/status-effect.test.ts similarity index 97% rename from test/data/status_effect.test.ts rename to test/data/status-effect.test.ts index 2ea4dce4147..20e164ce4d7 100644 --- a/test/data/status_effect.test.ts +++ b/test/data/status-effect.test.ts @@ -11,8 +11,8 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; -import { mockI18next } from "#test/testUtils/testUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { mockI18next } from "#test/test-utils/test-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; const pokemonName = "PKM"; @@ -331,8 +331,8 @@ describe("Status Effects", () => { await game.move.forceStatusActivation(true); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.isFullHp()).toBe(true); - expect(game.scene.getPlayerPokemon()!.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL); + expect(game.field.getEnemyPokemon().isFullHp()).toBe(true); + expect(game.field.getPlayerPokemon().getLastXMoves(1)[0].result).toBe(MoveResult.FAIL); }); }); @@ -365,7 +365,7 @@ describe("Status Effects", () => { it("should last the appropriate number of turns", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.status = new Status(StatusEffect.SLEEP, 0, 4); game.move.select(MoveId.SPLASH); @@ -422,7 +422,7 @@ describe("Status Effects", () => { it("should not inflict a 0 HP mon with a status", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.hp = 0; expect(player.trySetStatus(StatusEffect.BURN)).toBe(false); diff --git a/test/eggs/egg.test.ts b/test/eggs/egg.test.ts index b27124bd786..8b47e68f402 100644 --- a/test/eggs/egg.test.ts +++ b/test/eggs/egg.test.ts @@ -6,7 +6,7 @@ import { EggTier } from "#enums/egg-type"; import { SpeciesId } from "#enums/species-id"; import { VariantTier } from "#enums/variant-tier"; import { EggData } from "#system/egg-data"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import * as Utils from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -28,7 +28,7 @@ describe("Egg Generation Tests", () => { }); beforeEach(async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); }); it("should return Kyogre for the 10th of June", () => { diff --git a/test/eggs/manaphy-egg.test.ts b/test/eggs/manaphy-egg.test.ts index 319b5a15d7b..484426f1b76 100644 --- a/test/eggs/manaphy-egg.test.ts +++ b/test/eggs/manaphy-egg.test.ts @@ -2,7 +2,7 @@ import { Egg } from "#data/egg"; import { EggSourceType } from "#enums/egg-source-types"; import { EggTier } from "#enums/egg-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,7 +24,7 @@ describe("Manaphy Eggs", () => { }); beforeEach(async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); /** * In our tests, we will perform an "RNG sweep" by letting rngSweepProgress diff --git a/test/endless_boss.test.ts b/test/endless-boss.test.ts similarity index 72% rename from test/endless_boss.test.ts rename to test/endless-boss.test.ts index 99c179ceeb6..2a4ac9ddc7d 100644 --- a/test/endless_boss.test.ts +++ b/test/endless-boss.test.ts @@ -1,7 +1,7 @@ import { BiomeId } from "#enums/biome-id"; import { GameModes } from "#enums/game-modes"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; const EndlessBossWave = { @@ -34,10 +34,10 @@ describe("Endless Boss", () => { expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Minor); expect(game.scene.arena.biomeType).toBe(BiomeId.END); - const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus?.hasPassive()).toBe(false); - expect(eternatus?.formIndex).toBe(0); + const eternatus = game.field.getEnemyPokemon(); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); + expect(eternatus.hasPassive()).toBe(false); + expect(eternatus.formIndex).toBe(0); }); it(`should spawn a major boss every ${EndlessBossWave.Major} waves in END biome in Endless`, async () => { @@ -46,10 +46,10 @@ describe("Endless Boss", () => { expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Major); expect(game.scene.arena.biomeType).toBe(BiomeId.END); - const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus?.hasPassive()).toBe(false); - expect(eternatus?.formIndex).toBe(1); + const eternatus = game.field.getEnemyPokemon(); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); + expect(eternatus.hasPassive()).toBe(false); + expect(eternatus.formIndex).toBe(1); }); it(`should spawn a minor boss every ${EndlessBossWave.Minor} waves in END biome in Spliced Endless`, async () => { @@ -58,10 +58,10 @@ describe("Endless Boss", () => { expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Minor); expect(game.scene.arena.biomeType).toBe(BiomeId.END); - const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus?.hasPassive()).toBe(false); - expect(eternatus?.formIndex).toBe(0); + const eternatus = game.field.getEnemyPokemon(); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); + expect(eternatus.hasPassive()).toBe(false); + expect(eternatus.formIndex).toBe(0); }); it(`should spawn a major boss every ${EndlessBossWave.Major} waves in END biome in Spliced Endless`, async () => { @@ -70,10 +70,10 @@ describe("Endless Boss", () => { expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Major); expect(game.scene.arena.biomeType).toBe(BiomeId.END); - const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus?.hasPassive()).toBe(false); - expect(eternatus?.formIndex).toBe(1); + const eternatus = game.field.getEnemyPokemon(); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); + expect(eternatus.hasPassive()).toBe(false); + expect(eternatus.formIndex).toBe(1); }); it(`should NOT spawn major or minor boss outside wave ${EndlessBossWave.Minor}s in END biome`, async () => { @@ -81,6 +81,6 @@ describe("Endless Boss", () => { await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.ENDLESS); expect(game.scene.currentBattle.waveIndex).not.toBe(EndlessBossWave.Minor); - expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); + expect(game.field.getEnemyPokemon().species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); }); diff --git a/test/enemy_command.test.ts b/test/enemy-command.test.ts similarity index 93% rename from test/enemy_command.test.ts rename to test/enemy-command.test.ts index 249c819a107..e7687ae9641 100644 --- a/test/enemy_command.test.ts +++ b/test/enemy-command.test.ts @@ -2,11 +2,11 @@ import type { BattleScene } from "#app/battle-scene"; import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { AiType } from "#enums/ai-type"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { EnemyPokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { randSeedInt } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -61,7 +61,7 @@ describe("Enemy Commands - Move Selection", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.aiType = AiType.SMART_RANDOM; const moveChoices: MoveChoiceSet = {}; @@ -85,7 +85,7 @@ describe("Enemy Commands - Move Selection", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.aiType = AiType.SMART_RANDOM; const moveChoices: MoveChoiceSet = {}; diff --git a/test/escape-calculations.test.ts b/test/escape-calculations.test.ts index 338d2a1dcfc..f1bb955582a 100644 --- a/test/escape-calculations.test.ts +++ b/test/escape-calculations.test.ts @@ -3,7 +3,7 @@ import { Command } from "#enums/command"; import { SpeciesId } from "#enums/species-id"; import { AttemptRunPhase } from "#phases/attempt-run-phase"; import type { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/evolution.test.ts b/test/evolution.test.ts index ffede4d09d6..afe557ff2c0 100644 --- a/test/evolution.test.ts +++ b/test/evolution.test.ts @@ -2,7 +2,7 @@ import { pokemonEvolutions, SpeciesFormEvolution, SpeciesWildEvolutionDelay } fr import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import * as Utils from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -64,7 +64,7 @@ describe("Evolution", () => { it("should handle illegal abilityIndex values", async () => { await game.classicMode.runToSummon([SpeciesId.SQUIRTLE]); - const squirtle = game.scene.getPlayerPokemon()!; + const squirtle = game.field.getPlayerPokemon(); squirtle.abilityIndex = 5; await squirtle.evolve(pokemonEvolutions[SpeciesId.SQUIRTLE][0], squirtle.getSpeciesForm()); @@ -74,7 +74,7 @@ describe("Evolution", () => { it("should handle nincada's unique evolution", async () => { await game.classicMode.runToSummon([SpeciesId.NINCADA]); - const nincada = game.scene.getPlayerPokemon()!; + const nincada = game.field.getPlayerPokemon(); nincada.abilityIndex = 2; nincada.metBiome = -1; nincada.gender = 1; @@ -107,12 +107,12 @@ describe("Evolution", () => { await game.classicMode.startBattle([SpeciesId.TOTODILE]); - const totodile = game.scene.getPlayerPokemon()!; + const totodile = game.field.getPlayerPokemon(); const hpBefore = totodile.hp; expect(totodile.hp).toBe(totodile.getMaxHp()); - const golem = game.scene.getEnemyPokemon()!; + const golem = game.field.getEnemyPokemon(); golem.hp = 1; expect(golem.hp).toBe(1); @@ -135,14 +135,14 @@ describe("Evolution", () => { await game.classicMode.startBattle([SpeciesId.CYNDAQUIL]); - const cyndaquil = game.scene.getPlayerPokemon()!; + const cyndaquil = game.field.getPlayerPokemon(); cyndaquil.hp = Math.floor(cyndaquil.getMaxHp() / 2); const hpBefore = cyndaquil.hp; const maxHpBefore = cyndaquil.getMaxHp(); expect(cyndaquil.hp).toBe(Math.floor(cyndaquil.getMaxHp() / 2)); - const golem = game.scene.getEnemyPokemon()!; + const golem = game.field.getEnemyPokemon(); golem.hp = 1; expect(golem.hp).toBe(1); @@ -167,7 +167,7 @@ describe("Evolution", () => { * 1, 2 or 3, it's a 4 family maushold */ await game.classicMode.startBattle([SpeciesId.TANDEMAUS]); // starts us off with a tandemaus - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.level = 25; // tandemaus evolves at level 25 vi.spyOn(Utils, "randSeedInt").mockReturnValue(0); // setting the random generator to be 0 to force a three family maushold const threeForm = playerPokemon.getEvolution()!; diff --git a/test/field/pokemon-id-checks.test.ts b/test/field/pokemon-id-checks.test.ts index 065a1ffeb7e..3a648802a1d 100644 --- a/test/field/pokemon-id-checks.test.ts +++ b/test/field/pokemon-id-checks.test.ts @@ -5,7 +5,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Pokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/field/pokemon.test.ts b/test/field/pokemon.test.ts index 8c04dc61b32..02058ad6cb1 100644 --- a/test/field/pokemon.test.ts +++ b/test/field/pokemon.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Spec - Pokemon", () => { @@ -28,7 +28,7 @@ describe("Spec - Pokemon", () => { it("should not crash when trying to set status of undefined", async () => { await game.classicMode.runToSummon([SpeciesId.ABRA]); - const pkm = game.scene.getPlayerPokemon()!; + const pkm = game.field.getPlayerPokemon(); expect(pkm).toBeDefined(); expect(pkm.trySetStatus(undefined)).toBe(false); @@ -50,7 +50,7 @@ describe("Spec - Pokemon", () => { }); it("should append a new pokemon by default", async () => { - const zubat = scene.getEnemyPokemon()!; + const zubat = game.field.getEnemyPokemon(); zubat.addToParty(PokeballType.LUXURY_BALL); const party = scene.getPlayerParty(); @@ -62,7 +62,7 @@ describe("Spec - Pokemon", () => { it("should put a new pokemon into the passed slotIndex", async () => { const slotIndex = 1; - const zubat = scene.getEnemyPokemon()!; + const zubat = game.field.getEnemyPokemon(); zubat.addToParty(PokeballType.LUXURY_BALL, slotIndex); const party = scene.getPlayerParty(); @@ -78,7 +78,7 @@ describe("Spec - Pokemon", () => { await game.classicMode.startBattle([SpeciesId.ROTOM]); - const fanRotom = game.scene.getPlayerPokemon()!; + const fanRotom = game.field.getPlayerPokemon(); expect(fanRotom.compatibleTms).not.toContain(MoveId.BLIZZARD); expect(fanRotom.compatibleTms).toContain(MoveId.AIR_SLASH); diff --git a/test/final_boss.test.ts b/test/final-boss.test.ts similarity index 90% rename from test/final_boss.test.ts rename to test/final-boss.test.ts index 9dc54490330..81b5f7816d6 100644 --- a/test/final_boss.test.ts +++ b/test/final-boss.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { TurnHeldItemTransferModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; const FinalWave = { @@ -41,7 +41,7 @@ describe("Final Boss", () => { expect(game.scene.currentBattle.waveIndex).toBe(FinalWave.Classic); expect(game.scene.arena.biomeType).toBe(BiomeId.END); - expect(game.scene.getEnemyPokemon()!.species.speciesId).toBe(SpeciesId.ETERNATUS); + expect(game.field.getEnemyPokemon().species.speciesId).toBe(SpeciesId.ETERNATUS); }); it("should NOT spawn Eternatus before wave 200 in END biome", async () => { @@ -50,7 +50,7 @@ describe("Final Boss", () => { expect(game.scene.currentBattle.waveIndex).not.toBe(FinalWave.Classic); expect(game.scene.arena.biomeType).toBe(BiomeId.END); - expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); + expect(game.field.getEnemyPokemon().species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); it("should NOT spawn Eternatus outside of END biome", async () => { @@ -59,13 +59,13 @@ describe("Final Boss", () => { expect(game.scene.currentBattle.waveIndex).toBe(FinalWave.Classic); expect(game.scene.arena.biomeType).not.toBe(BiomeId.END); - expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); + expect(game.field.getEnemyPokemon().species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); it("should initially spawn in regular form without passive & 4 boss segments", async () => { await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); - const eternatus = game.scene.getEnemyPokemon()!; + const eternatus = game.field.getEnemyPokemon(); expect(eternatus.formIndex).toBe(0); expect(eternatus.bossSegments).toBe(4); expect(eternatus.bossSegmentIndex).toBe(3); @@ -77,7 +77,7 @@ describe("Final Boss", () => { await game.runToFinalBossEncounter([SpeciesId.KYUREM], GameModes.CLASSIC); // phase 1 - const eternatus = game.scene.getEnemyPokemon()!; + const eternatus = game.field.getEnemyPokemon(); const phase1Hp = eternatus.getMaxHp(); game.move.use(MoveId.DRAGON_PULSE); @@ -100,7 +100,7 @@ describe("Final Boss", () => { await game.runToFinalBossEncounter([SpeciesId.SALAZZLE], GameModes.CLASSIC); // Eternatus phase 1 - const eternatus = game.scene.getEnemyPokemon()!; + const eternatus = game.field.getEnemyPokemon(); const phase1Hp = eternatus.getMaxHp(); game.move.use(MoveId.WILL_O_WISP); diff --git a/test/fontFace.setup.ts b/test/font-face.setup.ts similarity index 100% rename from test/fontFace.setup.ts rename to test/font-face.setup.ts diff --git a/test/game-mode.test.ts b/test/game-mode.test.ts index 52de7e6a705..56af49b3f12 100644 --- a/test/game-mode.test.ts +++ b/test/game-mode.test.ts @@ -1,7 +1,7 @@ import type { GameMode } from "#app/game-mode"; import { getGameMode } from "#app/game-mode"; import { GameModes } from "#enums/game-modes"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import * as Utils from "#utils/common"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/inputs/inputs.test.ts b/test/inputs/inputs.test.ts index ce208d6ce6d..636b2e7a99e 100644 --- a/test/inputs/inputs.test.ts +++ b/test/inputs/inputs.test.ts @@ -1,7 +1,7 @@ -import cfg_keyboard_qwerty from "#inputs/cfg_keyboard_qwerty"; -import pad_xbox360 from "#inputs/pad_xbox360"; -import { GameManager } from "#test/testUtils/gameManager"; -import { InputsHandler } from "#test/testUtils/inputsHandler"; +import cfg_keyboard_qwerty from "#inputs/cfg-keyboard-qwerty"; +import pad_xbox360 from "#inputs/pad-xbox360"; +import { GameManager } from "#test/test-utils/game-manager"; +import { InputsHandler } from "#test/test-utils/inputs-handler"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/internals.test.ts b/test/internals.test.ts index bb3cd89565c..98262a6db25 100644 --- a/test/internals.test.ts +++ b/test/internals.test.ts @@ -1,6 +1,6 @@ import { AbilityId } from "#enums/ability-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,7 +24,7 @@ describe("Internals", () => { it("should provide Eevee with 3 defined abilities", async () => { await game.classicMode.runToSummon([SpeciesId.EEVEE]); - const eevee = game.scene.getPlayerPokemon()!; + const eevee = game.field.getPlayerPokemon(); expect(eevee.getSpeciesForm().getAbilityCount()).toBe(3); @@ -35,7 +35,7 @@ describe("Internals", () => { it("should set Eeeve abilityIndex between 0-2", async () => { await game.classicMode.runToSummon([SpeciesId.EEVEE]); - const eevee = game.scene.getPlayerPokemon()!; + const eevee = game.field.getPlayerPokemon(); expect(eevee.abilityIndex).toBeGreaterThanOrEqual(0); expect(eevee.abilityIndex).toBeLessThanOrEqual(2); diff --git a/test/items/dire_hit.test.ts b/test/items/dire-hit.test.ts similarity index 96% rename from test/items/dire_hit.test.ts rename to test/items/dire-hit.test.ts index 2473dd0038e..6d4bc7524eb 100644 --- a/test/items/dire_hit.test.ts +++ b/test/items/dire-hit.test.ts @@ -9,7 +9,7 @@ import { CommandPhase } from "#phases/command-phase"; import { NewBattlePhase } from "#phases/new-battle-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -42,7 +42,7 @@ describe("Items - Dire Hit", () => { it("should raise CRIT stage by 1", async () => { await game.classicMode.startBattle([SpeciesId.GASTLY]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "getCritStage"); diff --git a/test/items/double_battle_chance_booster.test.ts b/test/items/double-battle-chance-booster.test.ts similarity index 98% rename from test/items/double_battle_chance_booster.test.ts rename to test/items/double-battle-chance-booster.test.ts index df6a3c6d7de..2c12b34eba3 100644 --- a/test/items/double_battle_chance_booster.test.ts +++ b/test/items/double-battle-chance-booster.test.ts @@ -4,7 +4,7 @@ import { ShopCursorTarget } from "#enums/shop-cursor-target"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import { DoubleBattleChanceBoosterModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/items/eviolite.test.ts b/test/items/eviolite.test.ts index 74aff03616c..9268226661b 100644 --- a/test/items/eviolite.test.ts +++ b/test/items/eviolite.test.ts @@ -1,7 +1,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatBoosterModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder, randItem } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -28,7 +28,7 @@ describe("Items - Eviolite", () => { it("should provide 50% boost to DEF and SPDEF for unevolved, unfused pokemon", async () => { await game.classicMode.startBattle([SpeciesId.PICHU]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => { const statValue = new NumberHolder(partyMember.getStat(stat, false)); @@ -49,7 +49,7 @@ describe("Items - Eviolite", () => { it("should not provide a boost for fully evolved, unfused pokemon", async () => { await game.classicMode.startBattle([SpeciesId.RAICHU]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => { const statValue = new NumberHolder(partyMember.getStat(stat, false)); @@ -199,7 +199,7 @@ describe("Items - Eviolite", () => { await game.classicMode.startBattle([randItem(gMaxablePokemon)]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => { const statValue = new NumberHolder(partyMember.getStat(stat, false)); diff --git a/test/items/exp_booster.test.ts b/test/items/exp-booster.test.ts similarity index 90% rename from test/items/exp_booster.test.ts rename to test/items/exp-booster.test.ts index 6c8c16d08f4..1740b56693b 100644 --- a/test/items/exp_booster.test.ts +++ b/test/items/exp-booster.test.ts @@ -1,6 +1,6 @@ import { AbilityId } from "#enums/ability-id"; import { PokemonExpBoosterModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -29,7 +29,7 @@ describe("EXP Modifier Items", () => { game.override.startingHeldItems([{ name: "LUCKY_EGG", count: 3 }, { name: "GOLDEN_EGG" }]); await game.classicMode.startBattle(); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); partyMember.exp = 100; const expHolder = new NumberHolder(partyMember.exp); game.scene.applyModifiers(PokemonExpBoosterModifier, true, partyMember, expHolder); diff --git a/test/items/grip_claw.test.ts b/test/items/grip-claw.test.ts similarity index 98% rename from test/items/grip_claw.test.ts rename to test/items/grip-claw.test.ts index 6e25cdf6c08..5ffebd76946 100644 --- a/test/items/grip_claw.test.ts +++ b/test/items/grip-claw.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Pokemon } from "#field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/items/leek.test.ts b/test/items/leek.test.ts index 7ee3dff23d6..485f35ed10a 100644 --- a/test/items/leek.test.ts +++ b/test/items/leek.test.ts @@ -1,7 +1,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { randInt } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -34,7 +34,7 @@ describe("Items - Leek", () => { it("should raise CRIT stage by 2 when held by FARFETCHD", async () => { await game.classicMode.startBattle([SpeciesId.FARFETCHD]); - const enemyMember = game.scene.getEnemyPokemon()!; + const enemyMember = game.field.getEnemyPokemon(); vi.spyOn(enemyMember, "getCritStage"); @@ -48,7 +48,7 @@ describe("Items - Leek", () => { it("should raise CRIT stage by 2 when held by GALAR_FARFETCHD", async () => { await game.classicMode.startBattle([SpeciesId.GALAR_FARFETCHD]); - const enemyMember = game.scene.getEnemyPokemon()!; + const enemyMember = game.field.getEnemyPokemon(); vi.spyOn(enemyMember, "getCritStage"); @@ -62,7 +62,7 @@ describe("Items - Leek", () => { it("should raise CRIT stage by 2 when held by SIRFETCHD", async () => { await game.classicMode.startBattle([SpeciesId.SIRFETCHD]); - const enemyMember = game.scene.getEnemyPokemon()!; + const enemyMember = game.field.getEnemyPokemon(); vi.spyOn(enemyMember, "getCritStage"); @@ -90,7 +90,7 @@ describe("Items - Leek", () => { partyMember.fusionGender = ally.gender; partyMember.fusionLuck = ally.luck; - const enemyMember = game.scene.getEnemyPokemon()!; + const enemyMember = game.field.getEnemyPokemon(); vi.spyOn(enemyMember, "getCritStage"); @@ -118,7 +118,7 @@ describe("Items - Leek", () => { partyMember.fusionGender = ally.gender; partyMember.fusionLuck = ally.luck; - const enemyMember = game.scene.getEnemyPokemon()!; + const enemyMember = game.field.getEnemyPokemon(); vi.spyOn(enemyMember, "getCritStage"); @@ -132,7 +132,7 @@ describe("Items - Leek", () => { it("should not raise CRIT stage when held by a Pokemon outside of FARFETCHD line", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const enemyMember = game.scene.getEnemyPokemon()!; + const enemyMember = game.field.getEnemyPokemon(); vi.spyOn(enemyMember, "getCritStage"); diff --git a/test/items/leftovers.test.ts b/test/items/leftovers.test.ts index 9f2c532ef8b..6ae4094799b 100644 --- a/test/items/leftovers.test.ts +++ b/test/items/leftovers.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { DamageAnimPhase } from "#phases/damage-anim-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,7 +40,7 @@ describe("Items - Leftovers", () => { // Make sure leftovers are there expect(game.scene.modifiers[0].type.id).toBe("LEFTOVERS"); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); // We should have full hp expect(leadPokemon.isFullHp()).toBe(true); diff --git a/test/items/light_ball.test.ts b/test/items/light-ball.test.ts similarity index 99% rename from test/items/light_ball.test.ts rename to test/items/light-ball.test.ts index eebcc81c224..a7f41255ff3 100644 --- a/test/items/light_ball.test.ts +++ b/test/items/light-ball.test.ts @@ -3,7 +3,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; import i18next from "#plugins/i18n"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/items/lock_capsule.test.ts b/test/items/lock-capsule.test.ts similarity index 96% rename from test/items/lock_capsule.test.ts rename to test/items/lock-capsule.test.ts index e98e6880eb1..01552a4db37 100644 --- a/test/items/lock_capsule.test.ts +++ b/test/items/lock-capsule.test.ts @@ -3,7 +3,7 @@ import { ModifierTier } from "#enums/modifier-tier"; import { MoveId } from "#enums/move-id"; import { UiMode } from "#enums/ui-mode"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/items/metal_powder.test.ts b/test/items/metal-powder.test.ts similarity index 99% rename from test/items/metal_powder.test.ts rename to test/items/metal-powder.test.ts index 17baa057fd5..4dac8dd39b1 100644 --- a/test/items/metal_powder.test.ts +++ b/test/items/metal-powder.test.ts @@ -3,7 +3,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; import i18next from "#plugins/i18n"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/items/multi_lens.test.ts b/test/items/multi-lens.test.ts similarity index 92% rename from test/items/multi_lens.test.ts rename to test/items/multi-lens.test.ts index 56d452df9d2..b69a07033c9 100644 --- a/test/items/multi_lens.test.ts +++ b/test/items/multi-lens.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -46,7 +46,7 @@ describe("Items - Multi Lens", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const spy = vi.spyOn(enemyPokemon, "getAttackDamage"); vi.spyOn(enemyPokemon, "getBaseDamage").mockReturnValue(100); @@ -67,7 +67,7 @@ describe("Items - Multi Lens", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -79,7 +79,7 @@ describe("Items - Multi Lens", () => { it("should apply secondary effects on each hit", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.TRAILBLAZE); @@ -90,7 +90,7 @@ describe("Items - Multi Lens", () => { it("should not enhance multi-hit moves", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.TACHYON_CUTTER); @@ -120,8 +120,8 @@ describe("Items - Multi Lens", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); const spy = vi.spyOn(enemyPokemon, "getAttackDamage"); game.move.select(MoveId.SEISMIC_TOSS); @@ -145,7 +145,7 @@ describe("Items - Multi Lens", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -164,7 +164,7 @@ describe("Items - Multi Lens", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -184,7 +184,7 @@ describe("Items - Multi Lens", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -196,7 +196,7 @@ describe("Items - Multi Lens", () => { game.override.enemyLevel(1000); await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "damageAndUpdate"); game.move.select(MoveId.FUTURE_SIGHT); diff --git a/test/items/mystical_rock.test.ts b/test/items/mystical-rock.test.ts similarity index 96% rename from test/items/mystical_rock.test.ts rename to test/items/mystical-rock.test.ts index f1e9bb91ecf..3a29c359582 100644 --- a/test/items/mystical_rock.test.ts +++ b/test/items/mystical-rock.test.ts @@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/items/quick_powder.test.ts b/test/items/quick-powder.test.ts similarity index 99% rename from test/items/quick_powder.test.ts rename to test/items/quick-powder.test.ts index 6c8cb0751c3..2200e8cf96e 100644 --- a/test/items/quick_powder.test.ts +++ b/test/items/quick-powder.test.ts @@ -3,7 +3,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; import i18next from "#plugins/i18n"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/items/reviver_seed.test.ts b/test/items/reviver-seed.test.ts similarity index 93% rename from test/items/reviver_seed.test.ts rename to test/items/reviver-seed.test.ts index f0929ee0993..45d41459f06 100644 --- a/test/items/reviver_seed.test.ts +++ b/test/items/reviver-seed.test.ts @@ -5,7 +5,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { PokemonInstantReviveModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -51,7 +51,7 @@ describe("Items - Reviver Seed", () => { ])("should activate the holder's reviver seed from a $moveType", async ({ move }) => { game.override.enemyLevel(100).startingLevel(1).enemyMoveset(move); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.hp - 1); const reviverSeed = player.getHeldItems()[0] as PokemonInstantReviveModifier; @@ -66,7 +66,7 @@ describe("Items - Reviver Seed", () => { it("should activate the holder's reviver seed from confusion self-hit", async () => { game.override.enemyLevel(1).startingLevel(100).enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.hp - 1); player.addTag(BattlerTagType.CONFUSED, 3); @@ -95,7 +95,7 @@ describe("Items - Reviver Seed", () => { .moveset(move) .enemyMoveset(MoveId.ENDURE); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.damageAndUpdate(enemy.hp - 1); game.move.select(move); @@ -119,7 +119,7 @@ describe("Items - Reviver Seed", () => { .enemyAbility(AbilityId.LIQUID_OOZE) .enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.GASTLY, SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.hp - 1); const playerSeed = player.getHeldItems()[0] as PokemonInstantReviveModifier; @@ -140,9 +140,9 @@ describe("Items - Reviver Seed", () => { .startingHeldItems([]) // reset held items to nothing so user doesn't revive and not trigger Destiny Bond .enemyMoveset(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.hp - 1); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.DESTINY_BOND); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/items/scope_lens.test.ts b/test/items/scope-lens.test.ts similarity index 90% rename from test/items/scope_lens.test.ts rename to test/items/scope-lens.test.ts index 866164629f8..7bc2dd7356b 100644 --- a/test/items/scope_lens.test.ts +++ b/test/items/scope-lens.test.ts @@ -1,7 +1,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -33,7 +33,7 @@ describe("Items - Scope Lens", () => { it("should raise CRIT stage by 1", async () => { await game.classicMode.startBattle([SpeciesId.GASTLY]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "getCritStage"); diff --git a/test/items/temp_stat_stage_booster.test.ts b/test/items/temp-stat-stage-booster.test.ts similarity index 95% rename from test/items/temp_stat_stage_booster.test.ts rename to test/items/temp-stat-stage-booster.test.ts index 454a469700a..f95fe553faf 100644 --- a/test/items/temp_stat_stage_booster.test.ts +++ b/test/items/temp-stat-stage-booster.test.ts @@ -7,7 +7,7 @@ import { BATTLE_STATS, Stat } from "#enums/stat"; import { UiMode } from "#enums/ui-mode"; import { TempStatStageBoosterModifier } from "#modifiers/modifier"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -41,7 +41,7 @@ describe("Items - Temporary Stat Stage Boosters", () => { it("should provide a x1.3 stat stage multiplier", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getStatStageMultiplier"); @@ -57,7 +57,7 @@ describe("Items - Temporary Stat Stage Boosters", () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getAccuracyMultiplier"); @@ -77,7 +77,7 @@ describe("Items - Temporary Stat Stage Boosters", () => { it("should increase existing stat stage multiplier by 3/10 for the rest of the boosters", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getStatStageMultiplier"); @@ -102,7 +102,7 @@ describe("Items - Temporary Stat Stage Boosters", () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); vi.spyOn(partyMember, "getStatStageMultiplier"); vi.spyOn(partyMember, "getAccuracyMultiplier"); diff --git a/test/items/thick_club.test.ts b/test/items/thick-club.test.ts similarity index 99% rename from test/items/thick_club.test.ts rename to test/items/thick-club.test.ts index 3a993d64a0c..c497cef6338 100644 --- a/test/items/thick_club.test.ts +++ b/test/items/thick-club.test.ts @@ -3,7 +3,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; import i18next from "#plugins/i18n"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder, randInt } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/items/toxic_orb.test.ts b/test/items/toxic-orb.test.ts similarity index 93% rename from test/items/toxic_orb.test.ts rename to test/items/toxic-orb.test.ts index 0f4acedbfb5..664ddd437e4 100644 --- a/test/items/toxic_orb.test.ts +++ b/test/items/toxic-orb.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import i18next from "#plugins/i18n"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -42,7 +42,7 @@ describe("Items - Toxic orb", () => { it("should badly poison the holder", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); expect(player.getHeldItems()[0].type.id).toBe("TOXIC_ORB"); game.move.select(MoveId.SPLASH); diff --git a/test/matchers.setup.ts b/test/matchers.setup.ts new file mode 100644 index 00000000000..03b29302916 --- /dev/null +++ b/test/matchers.setup.ts @@ -0,0 +1,39 @@ +import { toEqualArrayUnsorted } from "#test/test-utils/matchers/to-equal-array-unsorted"; +import { toHaveAbilityApplied } from "#test/test-utils/matchers/to-have-ability-applied"; +import { toHaveBattlerTag } from "#test/test-utils/matchers/to-have-battler-tag"; +import { toHaveEffectiveStat } from "#test/test-utils/matchers/to-have-effective-stat"; +import { toHaveFainted } from "#test/test-utils/matchers/to-have-fainted"; +import { toHaveFullHp } from "#test/test-utils/matchers/to-have-full-hp"; +import { toHaveHp } from "#test/test-utils/matchers/to-have-hp"; +import { toHaveStatStage } from "#test/test-utils/matchers/to-have-stat-stage"; +import { toHaveStatusEffect } from "#test/test-utils/matchers/to-have-status-effect"; +import { toHaveTakenDamage } from "#test/test-utils/matchers/to-have-taken-damage"; +import { toHaveTerrain } from "#test/test-utils/matchers/to-have-terrain"; +import { toHaveTypes } from "#test/test-utils/matchers/to-have-types"; +import { toHaveUsedMove } from "#test/test-utils/matchers/to-have-used-move"; +import { toHaveUsedPP } from "#test/test-utils/matchers/to-have-used-pp"; +import { toHaveWeather } from "#test/test-utils/matchers/to-have-weather"; +import { expect } from "vitest"; + +/* + * Setup file for custom matchers. + * Make sure to define the call signatures in `test/@types/vitest.d.ts` too! + */ + +expect.extend({ + toEqualArrayUnsorted, + toHaveTypes, + toHaveUsedMove, + toHaveEffectiveStat, + toHaveTakenDamage, + toHaveWeather, + toHaveTerrain, + toHaveFullHp, + toHaveStatusEffect, + toHaveStatStage, + toHaveBattlerTag, + toHaveAbilityApplied, + toHaveHp, + toHaveFainted, + toHaveUsedPP, +}); diff --git a/test/misc.test.ts b/test/misc.test.ts index 5afd8f898c6..a77ac1f5c91 100644 --- a/test/misc.test.ts +++ b/test/misc.test.ts @@ -1,5 +1,4 @@ -import { GameManager } from "#test/testUtils/gameManager"; -import { waitUntil } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,19 +35,6 @@ describe("Test misc", () => { expect(spy).toHaveBeenCalled(); }); - // it.skip("test apifetch mock async", async () => { - // const spy = vi.fn(); - // await apiFetch("https://localhost:8080/account/info").then(response => { - // expect(response.status).toBe(200); - // expect(response.ok).toBe(true); - // return response.json(); - // }).then(data => { - // spy(); // Call the spy function - // expect(data).toEqual({ "username": "greenlamp", "lastSessionSlot": 0 }); - // }); - // expect(spy).toHaveBeenCalled(); - // }); - it("test fetch mock sync", async () => { const response = await fetch("https://localhost:8080/account/info"); const data = await response.json(); @@ -62,19 +48,4 @@ describe("Test misc", () => { const data = await game.scene.cachedFetch("./battle-anims/splishy-splash.json"); expect(data).toBeDefined(); }); - - it("testing wait phase queue", async () => { - const fakeScene = { - phaseQueue: [1, 2, 3], // Initially not empty - }; - setTimeout(() => { - fakeScene.phaseQueue = []; - }, 500); - const spy = vi.fn(); - await waitUntil(() => fakeScene.phaseQueue.length === 0).then(result => { - expect(result).toBe(true); - spy(); // Call the spy function - }); - expect(spy).toHaveBeenCalled(); - }); }); diff --git a/test/moves/ability-ignore-moves.test.ts b/test/moves/ability-ignore-moves.test.ts index 99c5b8f8efe..e3a7c7db12f 100644 --- a/test/moves/ability-ignore-moves.test.ts +++ b/test/moves/ability-ignore-moves.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -77,7 +77,7 @@ describe("Moves - Ability-Ignoring Moves", () => { await game.toEndOfTurn(); expect(enemy.isFainted()).toBe(false); - expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0].move).toBe(MoveId.SUNSTEEL_STRIKE); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].move).toBe(MoveId.SUNSTEEL_STRIKE); }); // TODO: Verify this behavior on cart diff --git a/test/moves/after_you.test.ts b/test/moves/after-you.test.ts similarity index 98% rename from test/moves/after_you.test.ts rename to test/moves/after-you.test.ts index e961342dc36..1625af3dd88 100644 --- a/test/moves/after_you.test.ts +++ b/test/moves/after-you.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { MovePhase } from "#phases/move-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/alluring_voice.test.ts b/test/moves/alluring-voice.test.ts similarity index 92% rename from test/moves/alluring_voice.test.ts rename to test/moves/alluring-voice.test.ts index d72d7b4f906..cc89a106c16 100644 --- a/test/moves/alluring_voice.test.ts +++ b/test/moves/alluring-voice.test.ts @@ -4,7 +4,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#phases/berry-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Alluring Voice", () => { it("should confuse the opponent if their stat stages were raised", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.use(MoveId.ALLURING_VOICE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/moves/aromatherapy.test.ts b/test/moves/aromatherapy.test.ts index 39850c4f841..60f9923a2f8 100644 --- a/test/moves/aromatherapy.test.ts +++ b/test/moves/aromatherapy.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/assist.test.ts b/test/moves/assist.test.ts index eff153534dd..ab0a8106457 100644 --- a/test/moves/assist.test.ts +++ b/test/moves/assist.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -51,18 +51,18 @@ describe("Moves - Assist", () => { // Player_2 uses Sketch, copies Swords Dance, Player_1 uses Assist, uses Player_2's Sketched Swords Dance await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(2); // Stat raised from Assist -> Swords Dance + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(2); // Stat raised from Assist -> Swords Dance }); it("should fail if there are no allies", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const feebas = game.scene.getPlayerPokemon()!; + const feebas = game.field.getPlayerPokemon(); game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); game.move.select(MoveId.ASSIST, 0); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should fail if ally has no usable moves and user has usable moves", async () => { @@ -82,21 +82,20 @@ describe("Moves - Assist", () => { game.move.select(MoveId.PROTECT, 1); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should apply secondary effects of a move", async () => { - game.override.moveset([MoveId.ASSIST, MoveId.WOOD_HAMMER, MoveId.WOOD_HAMMER, MoveId.WOOD_HAMMER]); await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.SHUCKLE]); const [feebas, shuckle] = game.scene.getPlayerField(); - game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); - game.move.changeMoveset(shuckle, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); + game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.WOOD_HAMMER]); + game.move.changeMoveset(shuckle, [MoveId.ASSIST, MoveId.WOOD_HAMMER]); game.move.select(MoveId.ASSIST, 0); game.move.select(MoveId.ASSIST, 1); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.isFullHp()).toBeFalsy(); // should receive recoil damage from Wood Hammer + expect(game.field.getPlayerPokemon().isFullHp()).toBeFalsy(); // should receive recoil damage from Wood Hammer }); }); diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index 7db149c9975..1b39b1c4fef 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -7,7 +7,7 @@ import { BerryPhase } from "#phases/berry-phase"; import { CommandPhase } from "#phases/command-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; @@ -42,9 +42,9 @@ describe("Moves - Astonish", () => { test("move effect should cancel the target's move on the turn it applies", async () => { await game.classicMode.startBattle([SpeciesId.MEOWSCARADA]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.ASTONISH); diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora-veil.test.ts similarity index 98% rename from test/moves/aurora_veil.test.ts rename to test/moves/aurora-veil.test.ts index 24e7b1857cc..3c7c86c7fdf 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora-veil.test.ts @@ -8,7 +8,7 @@ import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import type { Pokemon } from "#field/pokemon"; import type { Move } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/autotomize.test.ts b/test/moves/autotomize.test.ts index 01021870b88..85ea9c3852f 100644 --- a/test/moves/autotomize.test.ts +++ b/test/moves/autotomize.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Autotomize", () => { const threeAutotomizeDracozoltWeight = 0.1; await game.classicMode.startBattle([SpeciesId.DRACOZOLT]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getWeight()).toBe(baseDracozoltWeight); game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); @@ -62,7 +62,7 @@ describe("Moves - Autotomize", () => { const autotomizeAegislashWeight = 0.1; await game.classicMode.startBattle([SpeciesId.AEGISLASH]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getWeight()).toBe(baseAegislashWeight); @@ -98,7 +98,7 @@ describe("Moves - Autotomize", () => { const autotomizeLightGroudonWeight = 425; game.override.ability(AbilityId.LIGHT_METAL); await game.classicMode.startBattle([SpeciesId.GROUDON]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getWeight()).toBe(baseLightGroudonWeight); game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); diff --git a/test/moves/baddy_bad.test.ts b/test/moves/baddy-bad.test.ts similarity index 94% rename from test/moves/baddy_bad.test.ts rename to test/moves/baddy-bad.test.ts index 0af04f0c0c7..5888dd58c31 100644 --- a/test/moves/baddy_bad.test.ts +++ b/test/moves/baddy-bad.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/baneful-bunker.test.ts b/test/moves/baneful-bunker.test.ts new file mode 100644 index 00000000000..07fb74ce6a8 --- /dev/null +++ b/test/moves/baneful-bunker.test.ts @@ -0,0 +1,76 @@ +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Baneful Bunker", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .battleStyle("single") + .moveset([MoveId.SLASH, MoveId.FLASH_CANNON]) + .enemySpecies(SpeciesId.TOXAPEX) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset(MoveId.BANEFUL_BUNKER) + .startingLevel(100) + .enemyLevel(100); + }); + + function expectProtected() { + expect(game.scene.getEnemyPokemon()?.hp).toBe(game.scene.getEnemyPokemon()?.getMaxHp()); + expect(game.scene.getPlayerPokemon()?.status?.effect).toBe(StatusEffect.POISON); + } + + it("should protect the user and poison attackers that make contact", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + game.move.select(MoveId.SLASH); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.phaseInterceptor.to("BerryPhase", false); + + expectProtected(); + }); + + it("should ignore accuracy checks", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + game.move.select(MoveId.SLASH); + await game.phaseInterceptor.to("MoveEndPhase"); // baneful bunker + await game.move.forceMiss(); + + await game.phaseInterceptor.to("BerryPhase", false); + + expectProtected(); + }); + + it("should block non-contact moves without poisoning attackers", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.field.getPlayerPokemon(); + const toxapex = game.field.getEnemyPokemon(); + + game.move.select(MoveId.FLASH_CANNON); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(toxapex.hp).toBe(toxapex.getMaxHp()); + expect(charizard.status?.effect).toBeUndefined(); + }); +}); diff --git a/test/moves/baneful_bunker.test.ts b/test/moves/baneful_bunker.test.ts deleted file mode 100644 index 09050dcbb44..00000000000 --- a/test/moves/baneful_bunker.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { AbilityId } from "#enums/ability-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; - -describe("Moves - Baneful Bunker", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - - game.override - .battleStyle("single") - .moveset(MoveId.SLASH) - .enemySpecies(SpeciesId.SNORLAX) - .enemyAbility(AbilityId.INSOMNIA) - .enemyMoveset(MoveId.BANEFUL_BUNKER) - .startingLevel(100) - .enemyLevel(100); - }); - test("should protect the user and poison attackers that make contact", async () => { - await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.SLASH); - await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeTruthy(); - }); - test("should protect the user and poison attackers that make contact, regardless of accuracy checks", async () => { - await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.SLASH); - await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("MoveEffectPhase"); - - await game.move.forceMiss(); - await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeTruthy(); - }); - - test("should not poison attackers that don't make contact", async () => { - game.override.moveset(MoveId.FLASH_CANNON); - await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.FLASH_CANNON); - await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("MoveEffectPhase"); - - await game.move.forceMiss(); - await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeFalsy(); - }); -}); diff --git a/test/moves/baton_pass.test.ts b/test/moves/baton-pass.test.ts similarity index 93% rename from test/moves/baton_pass.test.ts rename to test/moves/baton-pass.test.ts index af49ac0db9f..f9bd92a63cd 100644 --- a/test/moves/baton_pass.test.ts +++ b/test/moves/baton-pass.test.ts @@ -4,7 +4,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -42,7 +42,7 @@ describe("Moves - Baton Pass", () => { game.move.select(MoveId.NASTY_PLOT); await game.toNextTurn(); - let playerPokemon = game.scene.getPlayerPokemon()!; + let playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.SPATK)).toEqual(2); @@ -52,7 +52,7 @@ describe("Moves - Baton Pass", () => { await game.phaseInterceptor.to("TurnEndPhase"); // assert - playerPokemon = game.scene.getPlayerPokemon()!; + playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.species.speciesId).toEqual(SpeciesId.SHUCKLE); expect(playerPokemon.getStatStage(Stat.SPATK)).toEqual(2); }); @@ -73,7 +73,7 @@ describe("Moves - Baton Pass", () => { await game.phaseInterceptor.to("PostSummonPhase", false); // check buffs are still there - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.SPATK)).toEqual(2); + expect(game.field.getEnemyPokemon().getStatStage(Stat.SPATK)).toEqual(2); // confirm that a switch actually happened. can't use species because I // can't find a way to override trainer parties with more than 1 pokemon species expect(game.phaseInterceptor.log.slice(-4)).toEqual([ @@ -105,7 +105,7 @@ describe("Moves - Baton Pass", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.FIRE_SPIN); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/moves/beak_blast.test.ts b/test/moves/beak-blast.test.ts similarity index 85% rename from test/moves/beak_blast.test.ts rename to test/moves/beak-blast.test.ts index 60a6bb75066..4d28e7fd0ab 100644 --- a/test/moves/beak_blast.test.ts +++ b/test/moves/beak-blast.test.ts @@ -6,7 +6,7 @@ import { StatusEffect } from "#enums/status-effect"; import { BerryPhase } from "#phases/berry-phase"; import { MovePhase } from "#phases/move-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,8 +40,8 @@ describe("Moves - Beak Blast", () => { it("should add a charge effect that burns attackers on contact", async () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.BEAK_BLAST); @@ -57,8 +57,8 @@ describe("Moves - Beak Blast", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.BEAK_BLAST); @@ -74,8 +74,8 @@ describe("Moves - Beak Blast", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.BEAK_BLAST); @@ -91,7 +91,7 @@ describe("Moves - Beak Blast", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.BEAK_BLAST); @@ -104,8 +104,8 @@ describe("Moves - Beak Blast", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.BEAK_BLAST); @@ -120,8 +120,8 @@ describe("Moves - Beak Blast", () => { it("should still burn the enemy if the user is knocked out", async () => { game.override.ability(AbilityId.BALL_FETCH); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; - const user = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); + const user = game.field.getPlayerPokemon(); user.hp = 1; game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to("BerryPhase", false); @@ -133,7 +133,7 @@ describe("Moves - Beak Blast", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to("BerryPhase", false); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.status?.effect).not.toBe(StatusEffect.BURN); }); }); diff --git a/test/moves/beat_up.test.ts b/test/moves/beat-up.test.ts similarity index 90% rename from test/moves/beat_up.test.ts rename to test/moves/beat-up.test.ts index 8387b6f671b..cfb3d35bed5 100644 --- a/test/moves/beat_up.test.ts +++ b/test/moves/beat-up.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -43,8 +43,8 @@ describe("Moves - Beat Up", () => { SpeciesId.EEVEE, ]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); let enemyStartingHp = enemyPokemon.hp; game.move.select(MoveId.BEAT_UP); @@ -71,7 +71,7 @@ describe("Moves - Beat Up", () => { SpeciesId.EEVEE, ]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.scene.getPlayerParty()[1].trySetStatus(StatusEffect.BURN); diff --git a/test/moves/belly_drum.test.ts b/test/moves/belly-drum.test.ts similarity index 91% rename from test/moves/belly_drum.test.ts rename to test/moves/belly-drum.test.ts index 9044e10589f..827030c14aa 100644 --- a/test/moves/belly_drum.test.ts +++ b/test/moves/belly-drum.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -44,7 +44,7 @@ describe("Moves - BELLY DRUM", () => { test("raises the user's ATK stat stage to its max, at the cost of 1/2 of its maximum HP", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); game.move.select(MoveId.BELLY_DRUM); @@ -57,7 +57,7 @@ describe("Moves - BELLY DRUM", () => { test("will still take effect if an uninvolved stat stage is at max", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); // Here - Stat.ATK -> -3 and Stat.SPATK -> 6 @@ -75,7 +75,7 @@ describe("Moves - BELLY DRUM", () => { test("fails if the pokemon's ATK stat stage is at its maximum", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.setStatStage(Stat.ATK, 6); @@ -89,7 +89,7 @@ describe("Moves - BELLY DRUM", () => { test("fails if the user's health is less than 1/2", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); leadPokemon.hp = hpLost - PREDAMAGE; diff --git a/test/moves/burning_jealousy.test.ts b/test/moves/burning-jealousy.test.ts similarity index 93% rename from test/moves/burning_jealousy.test.ts rename to test/moves/burning-jealousy.test.ts index 9f8dfc29ee4..33ff855f31e 100644 --- a/test/moves/burning_jealousy.test.ts +++ b/test/moves/burning-jealousy.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -40,7 +40,7 @@ describe("Moves - Burning Jealousy", () => { it("should burn the opponent if their stat stages were raised", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.BURNING_JEALOUSY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -53,7 +53,7 @@ describe("Moves - Burning Jealousy", () => { game.override.starterSpecies(0).battleStyle("double"); await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.ABRA]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.BURNING_JEALOUSY); game.move.select(MoveId.GROWL, 1); @@ -67,7 +67,7 @@ describe("Moves - Burning Jealousy", () => { game.override.enemySpecies(SpeciesId.DITTO).enemyAbility(AbilityId.IMPOSTER).enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.BURNING_JEALOUSY); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/camouflage.test.ts b/test/moves/camouflage.test.ts index 39bf8f6d5b5..b3f87be4715 100644 --- a/test/moves/camouflage.test.ts +++ b/test/moves/camouflage.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Camouflage", () => { it("Camouflage should look at terrain first when selecting a type to change into", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.CAMOUFLAGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/moves/ceaseless_edge.test.ts b/test/moves/ceaseless-edge.test.ts similarity index 96% rename from test/moves/ceaseless_edge.test.ts rename to test/moves/ceaseless-edge.test.ts index 2d28f4b1a1b..64f4cf15511 100644 --- a/test/moves/ceaseless_edge.test.ts +++ b/test/moves/ceaseless-edge.test.ts @@ -7,7 +7,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; @@ -42,7 +42,7 @@ describe("Moves - Ceaseless Edge", () => { test("move should hit and apply spikes", async () => { await game.classicMode.startBattle([SpeciesId.ILLUMISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyStartingHp = enemyPokemon.hp; @@ -64,7 +64,7 @@ describe("Moves - Ceaseless Edge", () => { game.override.startingHeldItems([{ name: "MULTI_LENS" }]); await game.classicMode.startBattle([SpeciesId.ILLUMISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyStartingHp = enemyPokemon.hp; diff --git a/test/moves/chilly_reception.test.ts b/test/moves/chilly-reception.test.ts similarity index 92% rename from test/moves/chilly_reception.test.ts rename to test/moves/chilly-reception.test.ts index f34e61873cc..096454132f3 100644 --- a/test/moves/chilly_reception.test.ts +++ b/test/moves/chilly-reception.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import { RandomMoveAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -44,7 +44,7 @@ describe("Moves - Chilly Reception", () => { await game.toEndOfTurn(); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); - expect(game.scene.getPlayerPokemon()).toBe(meowth); + expect(game.field.getPlayerPokemon()).toBe(meowth); expect(slowking.isOnField()).toBe(false); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); expect(game.textInterceptor.logs).toContain( @@ -60,7 +60,7 @@ describe("Moves - Chilly Reception", () => { expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); }); it("should still switch out even if weather cannot be changed", async () => { @@ -85,7 +85,7 @@ describe("Moves - Chilly Reception", () => { expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()).toBe(meowth); + expect(game.field.getPlayerPokemon()).toBe(meowth); expect(slowking.isOnField()).toBe(false); }); @@ -95,7 +95,7 @@ describe("Moves - Chilly Reception", () => { expect(game.scene.arena.weather?.weatherType).not.toBe(WeatherType.SNOW); - const slowking = game.scene.getPlayerPokemon()!; + const slowking = game.field.getPlayerPokemon(); game.move.select(MoveId.SNOWSCAPE); await game.toNextTurn(); @@ -108,7 +108,7 @@ describe("Moves - Chilly Reception", () => { expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()).toBe(slowking); + expect(game.field.getPlayerPokemon()).toBe(slowking); expect(slowking.getLastXMoves()[0].result).toBe(MoveResult.FAIL); expect(game.textInterceptor.logs).toContain( i18next.t("moveTriggers:chillyReception", { pokemonName: getPokemonNameWithAffix(slowking) }), @@ -126,7 +126,7 @@ describe("Moves - Chilly Reception", () => { await game.toEndOfTurn(); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); - expect(game.scene.getPlayerPokemon()).toBe(meowth); + expect(game.field.getPlayerPokemon()).toBe(meowth); expect(slowking.isOnField()).toBe(false); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); expect(game.textInterceptor.logs).not.toContain( diff --git a/test/moves/chloroblast.test.ts b/test/moves/chloroblast.test.ts index c87f79c440a..a6320d2691d 100644 --- a/test/moves/chloroblast.test.ts +++ b/test/moves/chloroblast.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/clangorous_soul.test.ts b/test/moves/clangorous-soul.test.ts similarity index 93% rename from test/moves/clangorous_soul.test.ts rename to test/moves/clangorous-soul.test.ts index dc208087bb8..2f1c7a18f50 100644 --- a/test/moves/clangorous_soul.test.ts +++ b/test/moves/clangorous-soul.test.ts @@ -2,7 +2,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -41,7 +41,7 @@ describe("Moves - Clangorous Soul", () => { it("raises the user's ATK, DEF, SPATK, SPDEF, and SPD stat stages by 1 each at the cost of 1/3 of its maximum HP", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); game.move.select(MoveId.CLANGOROUS_SOUL); @@ -58,7 +58,7 @@ describe("Moves - Clangorous Soul", () => { it("will still take effect if one or more of the involved stat stages are not at max", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); //Here - Stat.SPD -> 0 and Stat.SPDEF -> 4 @@ -81,7 +81,7 @@ describe("Moves - Clangorous Soul", () => { it("fails if all stat stages involved are at max", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.setStatStage(Stat.ATK, 6); leadPokemon.setStatStage(Stat.DEF, 6); @@ -103,7 +103,7 @@ describe("Moves - Clangorous Soul", () => { it("fails if the user's health is less than 1/3", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); leadPokemon.hp = hpLost - PREDAMAGE; diff --git a/test/moves/copycat.test.ts b/test/moves/copycat.test.ts index e6a81cb5627..bfe4dd2f954 100644 --- a/test/moves/copycat.test.ts +++ b/test/moves/copycat.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -45,7 +45,7 @@ describe("Moves - Copycat", () => { game.move.select(MoveId.COPYCAT); // Last successful move should be Swords Dance await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(4); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(4); }); it("should fail when the last move used is not a valid Copycat move", async () => { @@ -58,7 +58,7 @@ describe("Moves - Copycat", () => { game.move.select(MoveId.COPYCAT); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should copy the called move when the last move successfully calls another", async () => { @@ -70,7 +70,7 @@ describe("Moves - Copycat", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); // Player moves first so enemy can copy Swords Dance await game.toNextTurn(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); expect(enemy.getLastXMoves()[0]).toMatchObject({ move: MoveId.SWORDS_DANCE, result: MoveResult.SUCCESS, @@ -87,6 +87,6 @@ describe("Moves - Copycat", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.SPDEF)).toBe(-2); + expect(game.field.getEnemyPokemon().getStatStage(Stat.SPDEF)).toBe(-2); }); }); diff --git a/test/moves/crafty-shield.test.ts b/test/moves/crafty-shield.test.ts new file mode 100644 index 00000000000..0e067a07214 --- /dev/null +++ b/test/moves/crafty-shield.test.ts @@ -0,0 +1,128 @@ +import { AbilityId } from "#enums/ability-id"; +import { ArenaTagSide } from "#enums/arena-tag-side"; +import { ArenaTagType } from "#enums/arena-tag-type"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Crafty Shield", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .battleStyle("double") + .enemySpecies(SpeciesId.DUSKNOIR) + .enemyMoveset(MoveId.GROWL) + .enemyAbility(AbilityId.INSOMNIA) + .startingLevel(100) + .enemyLevel(100); + }); + + it("should protect the user and allies from status moves", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + game.move.use(MoveId.CRAFTY_SHIELD, BattlerIndex.PLAYER); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.GROWL); + await game.move.forceEnemyMove(MoveId.GROWL); + + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.getStatStage(Stat.ATK)).toBe(0); + expect(blastoise.getStatStage(Stat.ATK)).toBe(0); + }); + + it("should not protect the user and allies from attack moves", async () => { + game.override.enemyMoveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.use(MoveId.CRAFTY_SHIELD, BattlerIndex.PLAYER); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.isFullHp()).toBe(false); + expect(blastoise.isFullHp()).toBe(false); + }); + + it("should not block entry hazards and field-targeted moves", async () => { + game.override.enemyMoveset([MoveId.PERISH_SONG, MoveId.TOXIC_SPIKES]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.use(MoveId.CRAFTY_SHIELD, BattlerIndex.PLAYER); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.PERISH_SONG); + await game.move.forceEnemyMove(MoveId.TOXIC_SPIKES); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(game.scene.arena.getTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.PLAYER)).toBeDefined(); + expect(charizard.getTag(BattlerTagType.PERISH_SONG)).toBeDefined(); + expect(blastoise.getTag(BattlerTagType.PERISH_SONG)).toBeDefined(); + }); + + it("should protect the user and allies from moves that ignore other protection", async () => { + game.override.moveset(MoveId.CURSE); + + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.use(MoveId.CRAFTY_SHIELD, BattlerIndex.PLAYER); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.CURSE, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(MoveId.CURSE, BattlerIndex.PLAYER_2); + + await game.toEndOfTurn(); + + expect(charizard.getTag(BattlerTagType.CURSED)).toBeUndefined(); + expect(blastoise.getTag(BattlerTagType.CURSED)).toBeUndefined(); + + const [dusknoir1, dusknoir2] = game.scene.getEnemyField(); + expect(dusknoir1).toHaveFullHp(); + expect(dusknoir2).toHaveFullHp(); + }); + + it("should not block allies' self or ally-targeted moves", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.use(MoveId.CRAFTY_SHIELD, BattlerIndex.PLAYER); + game.move.use(MoveId.SWORDS_DANCE, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.getStatStage(Stat.ATK)).toBe(0); + expect(blastoise.getStatStage(Stat.ATK)).toBe(2); + + game.move.use(MoveId.HOWL, BattlerIndex.PLAYER); + game.move.use(MoveId.CRAFTY_SHIELD, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.getStatStage(Stat.ATK)).toBe(1); + expect(blastoise.getStatStage(Stat.ATK)).toBe(3); + }); +}); diff --git a/test/moves/crafty_shield.test.ts b/test/moves/crafty_shield.test.ts deleted file mode 100644 index 98c0dfd7c9a..00000000000 --- a/test/moves/crafty_shield.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { Stat } from "#enums/stat"; -import { BerryPhase } from "#phases/berry-phase"; -import { GameManager } from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; - -describe("Moves - Crafty Shield", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - - game.override - .battleStyle("double") - .moveset([MoveId.CRAFTY_SHIELD, MoveId.SPLASH, MoveId.SWORDS_DANCE]) - .enemySpecies(SpeciesId.SNORLAX) - .enemyMoveset([MoveId.GROWL]) - .enemyAbility(AbilityId.INSOMNIA) - .startingLevel(100) - .enemyLevel(100); - }); - - test("should protect the user and allies from status moves", async () => { - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.CRAFTY_SHIELD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - leadPokemon.forEach(p => expect(p.getStatStage(Stat.ATK)).toBe(0)); - }); - - test("should not protect the user and allies from attack moves", async () => { - game.override.enemyMoveset([MoveId.TACKLE]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.CRAFTY_SHIELD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - expect(leadPokemon.some(p => p.hp < p.getMaxHp())).toBeTruthy(); - }); - - test("should protect the user and allies from moves that ignore other protection", async () => { - game.override.enemySpecies(SpeciesId.DUSCLOPS).enemyMoveset([MoveId.CURSE]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.CRAFTY_SHIELD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - leadPokemon.forEach(p => expect(p.getTag(BattlerTagType.CURSED)).toBeUndefined()); - }); - - test("should not block allies' self-targeted moves", async () => { - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.CRAFTY_SHIELD); - game.move.select(MoveId.SWORDS_DANCE, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - expect(leadPokemon[0].getStatStage(Stat.ATK)).toBe(0); - expect(leadPokemon[1].getStatStage(Stat.ATK)).toBe(2); - }); -}); diff --git a/test/moves/defog.test.ts b/test/moves/defog.test.ts index 253eac4f22c..820dfaa6bcb 100644 --- a/test/moves/defog.test.ts +++ b/test/moves/defog.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/delayed-attack.test.ts b/test/moves/delayed-attack.test.ts new file mode 100644 index 00000000000..e8cf2871626 --- /dev/null +++ b/test/moves/delayed-attack.test.ts @@ -0,0 +1,389 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +import { AttackTypeBoosterModifier } from "#app/modifier/modifier"; +import { allMoves } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; +import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { PokemonType } from "#enums/pokemon-type"; +import { PositionalTagType } from "#enums/positional-tag-type"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; +import i18next from "i18next"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Delayed Attacks", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .ability(AbilityId.NO_GUARD) + .battleStyle("single") + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.SPLASH); + }); + + /** + * Wait until a number of turns have passed. + * @param numTurns - Number of turns to pass. + * @param toEndOfTurn - Whether to advance to the `TurnEndPhase` (`true`) or the `PositionalTagPhase` (`false`); + * default `true` + * @returns A Promise that resolves once the specified number of turns has elapsed + * and the specified phase has been reached. + */ + async function passTurns(numTurns: number, toEndOfTurn = true): Promise { + for (let i = 0; i < numTurns; i++) { + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + if (game.scene.getPlayerField()[1]?.isActive()) { + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + } + await game.move.forceEnemyMove(MoveId.SPLASH); + if (game.scene.getEnemyField()[1]?.isActive()) { + await game.move.forceEnemyMove(MoveId.SPLASH); + } + await game.phaseInterceptor.to("PositionalTagPhase"); + } + if (toEndOfTurn) { + await game.toEndOfTurn(); + } + } + + /** + * Expect that future sight is active with the specified number of attacks. + * @param numAttacks - The number of delayed attacks that should be queued; default `1` + */ + function expectFutureSightActive(numAttacks = 1) { + const delayedAttacks = game.scene.arena.positionalTagManager["tags"].filter( + t => t.tagType === PositionalTagType.DELAYED_ATTACK, + ); + expect(delayedAttacks).toHaveLength(numAttacks); + } + + it.each<{ name: string; move: MoveId }>([ + { name: "Future Sight", move: MoveId.FUTURE_SIGHT }, + { name: "Doom Desire", move: MoveId.DOOM_DESIRE }, + ])("$name should show message and strike 2 turns after use, ignoring player/enemy switches", async ({ move }) => { + game.override.battleType(BattleType.TRAINER); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); + + game.move.use(move); + await game.toNextTurn(); + + expectFutureSightActive(); + + game.doSwitchPokemon(1); + game.forceEnemyToSwitch(); + await game.toNextTurn(); + + await passTurns(1); + + expectFutureSightActive(0); + const enemy = game.field.getEnemyPokemon(); + expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + expect(game.textInterceptor.logs).toContain( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(enemy), + moveName: allMoves[move].name, + }), + ); + }); + + it("should fail (preserving prior instances) when used against the same target", async () => { + await game.classicMode.startBattle([SpeciesId.BRONZONG]); + + game.move.use(MoveId.FUTURE_SIGHT); + await game.toNextTurn(); + + expectFutureSightActive(); + const bronzong = game.field.getPlayerPokemon(); + expect(bronzong.getLastXMoves()[0].result).toBe(MoveResult.OTHER); + + game.move.use(MoveId.FUTURE_SIGHT); + await game.toNextTurn(); + + expectFutureSightActive(); + expect(bronzong.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should still be delayed when called by other moves", async () => { + await game.classicMode.startBattle([SpeciesId.BRONZONG]); + + game.move.use(MoveId.METRONOME); + game.move.forceMetronomeMove(MoveId.FUTURE_SIGHT); + await game.toNextTurn(); + + expectFutureSightActive(); + const enemy = game.field.getEnemyPokemon(); + expect(enemy.hp).toBe(enemy.getMaxHp()); + + await passTurns(2); + + expectFutureSightActive(0); + expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + }); + + it("should work when used against different targets in doubles", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); + + const [karp, feebas, enemy1, enemy2] = game.scene.getField(); + + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); + await game.toEndOfTurn(); + + expectFutureSightActive(2); + expect(enemy1.hp).toBe(enemy1.getMaxHp()); + expect(enemy2.hp).toBe(enemy2.getMaxHp()); + expect(karp.getLastXMoves()[0].result).toBe(MoveResult.OTHER); + expect(feebas.getLastXMoves()[0].result).toBe(MoveResult.OTHER); + + await passTurns(2); + + expect(enemy1.hp).toBeLessThan(enemy1.getMaxHp()); + expect(enemy2.hp).toBeLessThan(enemy2.getMaxHp()); + }); + + it("should trigger multiple pending attacks in order of creation, even if that order changes later on", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); + + const [alomomola, blissey] = game.scene.getField(); + + const oldOrder = game.field.getSpeedOrder(); + + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); + await game.move.forceEnemyMove(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER_2); + // Ensure that the moves are used deterministically in speed order (for speed ties) + await game.setTurnOrder(oldOrder.map(p => p.getBattlerIndex())); + await game.toNextTurn(); + + expectFutureSightActive(4); + + // Lower speed to change turn order + alomomola.setStatStage(Stat.SPD, 6); + blissey.setStatStage(Stat.SPD, -6); + + const newOrder = game.field.getSpeedOrder(); + expect(newOrder).not.toEqual(oldOrder); + + await passTurns(2, false); + + // All attacks have concluded at this point, unshifting new `MoveEffectPhase`s to the queue. + expectFutureSightActive(0); + + const MEPs = game.scene.phaseManager.phaseQueue.filter(p => p.is("MoveEffectPhase")); + expect(MEPs).toHaveLength(4); + expect(MEPs.map(mep => mep.getPokemon())).toEqual(oldOrder); + }); + + it("should vanish silently if it would otherwise hit the user", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS, SpeciesId.MILOTIC]); + + const [karp, feebas, milotic] = game.scene.getPlayerParty(); + + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.toNextTurn(); + + expectFutureSightActive(1); + + // Milotic / Feebas // Karp + game.doSwitchPokemon(2); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.toNextTurn(); + + expect(game.scene.getPlayerParty()).toEqual([milotic, feebas, karp]); + + // Milotic / Karp // Feebas + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + game.doSwitchPokemon(2); + + await passTurns(1); + + expect(game.scene.getPlayerParty()).toEqual([milotic, karp, feebas]); + + expect(karp.hp).toBe(karp.getMaxHp()); + expect(feebas.hp).toBe(feebas.getMaxHp()); + expect(game.textInterceptor.logs).not.toContain( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(karp), + moveName: allMoves[MoveId.FUTURE_SIGHT].name, + }), + ); + }); + + it("should redirect normally if target is fainted when move is used", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const [enemy1, enemy2] = game.scene.getEnemyField(); + + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); + await game.killPokemon(enemy2); + await game.toNextTurn(); + + expect(enemy2.isFainted()).toBe(true); + expectFutureSightActive(); + + const attack = game.scene.arena.positionalTagManager.tags.find( + t => t.tagType === PositionalTagType.DELAYED_ATTACK, + )!; + expect(attack).toBeDefined(); + expect(attack.targetIndex).toBe(enemy1.getBattlerIndex()); + + await passTurns(2); + + expect(enemy1.hp).toBeLessThan(enemy1.getMaxHp()); + expect(game.textInterceptor.logs).toContain( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(enemy1), + moveName: allMoves[MoveId.FUTURE_SIGHT].name, + }), + ); + }); + + it("should vanish silently if slot is vacant when attack lands", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const [enemy1, enemy2] = game.scene.getEnemyField(); + + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); + await game.toNextTurn(); + + expectFutureSightActive(1); + + game.move.use(MoveId.SPLASH); + await game.killPokemon(enemy2); + await game.toNextTurn(); + + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + + expectFutureSightActive(0); + expect(enemy1.hp).toBe(enemy1.getMaxHp()); + expect(game.textInterceptor.logs).not.toContain( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(enemy1), + moveName: allMoves[MoveId.FUTURE_SIGHT].name, + }), + ); + }); + + it("should consider type changes at moment of execution while ignoring redirection", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + // fake left enemy having lightning rod + const [enemy1, enemy2] = game.scene.getEnemyField(); + game.field.mockAbility(enemy1, AbilityId.LIGHTNING_ROD); + + game.move.use(MoveId.FUTURE_SIGHT, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); + await game.toNextTurn(); + + expectFutureSightActive(1); + + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + await game.toNextTurn(); + + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(MoveId.ELECTRIFY, BattlerIndex.PLAYER); + await game.phaseInterceptor.to("PositionalTagPhase"); + await game.phaseInterceptor.to("MoveEffectPhase", false); + + // Wait until all normal attacks have triggered, then check pending MEP + const karp = game.field.getPlayerPokemon(); + const typeMock = vi.spyOn(karp, "getMoveType"); + + await game.toEndOfTurn(); + + expect(enemy1.hp).toBe(enemy1.getMaxHp()); + expect(enemy2.hp).toBeLessThan(enemy2.getMaxHp()); + expect(game.textInterceptor.logs).toContain( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(enemy2), + moveName: allMoves[MoveId.FUTURE_SIGHT].name, + }), + ); + expect(typeMock).toHaveLastReturnedWith(PokemonType.ELECTRIC); + }); + + // TODO: this is not implemented + it.todo("should not apply Shell Bell recovery, even if user is on field"); + + // TODO: Enable once code is added to MEP to do this + it.todo("should not apply the user's abilities when dealing damage if the user is inactive", async () => { + game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.LUNALA); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); + + game.move.use(MoveId.DOOM_DESIRE); + await game.toNextTurn(); + + expectFutureSightActive(); + + await passTurns(1); + + game.doSwitchPokemon(1); + const typeMock = vi.spyOn(game.field.getPlayerPokemon(), "getMoveType"); + const powerMock = vi.spyOn(allMoves[MoveId.DOOM_DESIRE], "calculateBattlePower"); + + await game.toNextTurn(); + + // Player Normalize was not applied due to being off field + const enemy = game.field.getEnemyPokemon(); + expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + expect(game.textInterceptor.logs).toContain( + i18next.t("moveTriggers:tookMoveAttack", { + pokemonName: getPokemonNameWithAffix(enemy), + moveName: allMoves[MoveId.DOOM_DESIRE].name, + }), + ); + expect(typeMock).toHaveLastReturnedWith(PokemonType.STEEL); + expect(powerMock).toHaveLastReturnedWith(150); + }); + + it.todo("should not apply the user's held items when dealing damage if the user is inactive", async () => { + game.override.startingHeldItems([{ name: "ATTACK_TYPE_BOOSTER", count: 99, type: PokemonType.PSYCHIC }]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); + + game.move.use(MoveId.FUTURE_SIGHT); + await game.toNextTurn(); + + expectFutureSightActive(); + + await passTurns(1); + + game.doSwitchPokemon(1); + + const powerMock = vi.spyOn(allMoves[MoveId.FUTURE_SIGHT], "calculateBattlePower"); + const typeBoostSpy = vi.spyOn(AttackTypeBoosterModifier.prototype, "apply"); + + await game.toNextTurn(); + + expect(powerMock).toHaveLastReturnedWith(120); + expect(typeBoostSpy).not.toHaveBeenCalled(); + }); + + // TODO: Implement and move to a power spot's test file + it.todo("Should activate ally's power spot when switched in during single battles"); +}); diff --git a/test/moves/destiny_bond.test.ts b/test/moves/destiny-bond.test.ts similarity index 77% rename from test/moves/destiny_bond.test.ts rename to test/moves/destiny-bond.test.ts index 29bbfabb09f..9c397717335 100644 --- a/test/moves/destiny_bond.test.ts +++ b/test/moves/destiny-bond.test.ts @@ -8,7 +8,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { PokemonInstantReviveModifier } from "#modifiers/modifier"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -48,15 +48,15 @@ describe("Moves - Destiny Bond", () => { game.override.moveset(moveToUse); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(moveToUse); await game.setTurnOrder(enemyFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(true); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(true); }); it("should KO the opponent on the next turn", async () => { @@ -65,24 +65,24 @@ describe("Moves - Destiny Bond", () => { game.override.moveset([MoveId.SPLASH, moveToUse]); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); // Turn 1: Enemy uses Destiny Bond and doesn't faint game.move.select(MoveId.SPLASH); await game.setTurnOrder(playerFirst); await game.toNextTurn(); - expect(enemyPokemon?.isFainted()).toBe(false); - expect(playerPokemon?.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(false); // Turn 2: Player KO's the enemy before the enemy's turn game.move.select(moveToUse); await game.setTurnOrder(playerFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(true); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(true); }); it("should fail if used twice in a row", async () => { @@ -91,24 +91,24 @@ describe("Moves - Destiny Bond", () => { game.override.moveset([MoveId.SPLASH, moveToUse]); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); // Turn 1: Enemy uses Destiny Bond and doesn't faint game.move.select(MoveId.SPLASH); await game.setTurnOrder(enemyFirst); await game.toNextTurn(); - expect(enemyPokemon?.isFainted()).toBe(false); - expect(playerPokemon?.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(false); // Turn 2: Enemy should fail Destiny Bond then get KO'd game.move.select(moveToUse); await game.setTurnOrder(enemyFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(false); }); it("should not KO the opponent if the user dies to weather", async () => { @@ -118,15 +118,15 @@ describe("Moves - Destiny Bond", () => { game.override.moveset(moveToUse).ability(AbilityId.SAND_STREAM); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(moveToUse); await game.setTurnOrder(enemyFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(false); }); it("should not KO the opponent if the user had another turn", async () => { @@ -135,25 +135,25 @@ describe("Moves - Destiny Bond", () => { game.override.moveset([MoveId.SPORE, moveToUse]); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); // Turn 1: Enemy uses Destiny Bond and doesn't faint game.move.select(MoveId.SPORE); await game.setTurnOrder(enemyFirst); await game.toNextTurn(); - expect(enemyPokemon?.isFainted()).toBe(false); - expect(playerPokemon?.isFainted()).toBe(false); - expect(enemyPokemon?.status?.effect).toBe(StatusEffect.SLEEP); + expect(enemyPokemon.isFainted()).toBe(false); + expect(playerPokemon.isFainted()).toBe(false); + expect(enemyPokemon.status?.effect).toBe(StatusEffect.SLEEP); // Turn 2: Enemy should skip a turn due to sleep, then get KO'd game.move.select(moveToUse); await game.setTurnOrder(enemyFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(false); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(false); }); it("should not KO an ally", async () => { @@ -171,10 +171,10 @@ describe("Moves - Destiny Bond", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon0?.isFainted()).toBe(false); - expect(enemyPokemon1?.isFainted()).toBe(false); - expect(playerPokemon0?.isFainted()).toBe(true); - expect(playerPokemon1?.isFainted()).toBe(false); + expect(enemyPokemon0.isFainted()).toBe(false); + expect(enemyPokemon1.isFainted()).toBe(false); + expect(playerPokemon0.isFainted()).toBe(true); + expect(playerPokemon1.isFainted()).toBe(false); }); it("should not cause a crash if the user is KO'd by Ceaseless Edge", async () => { @@ -184,15 +184,15 @@ describe("Moves - Destiny Bond", () => { game.override.moveset(moveToUse); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(moveToUse); await game.setTurnOrder(enemyFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(true); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(true); // Ceaseless Edge spikes effect should still activate const tagAfter = game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY) as ArenaTrapTag; @@ -235,20 +235,20 @@ describe("Moves - Destiny Bond", () => { game.override.moveset(moveToUse).startingHeldItems([{ name: "REVIVER_SEED" }]); await game.classicMode.startBattle(defaultParty); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(moveToUse); await game.setTurnOrder(enemyFirst); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.isFainted()).toBe(true); - expect(playerPokemon?.isFainted()).toBe(true); + expect(enemyPokemon.isFainted()).toBe(true); + expect(playerPokemon.isFainted()).toBe(true); // Check that the Tackle user's Reviver Seed did not activate const revSeeds = game.scene .getModifiers(PokemonInstantReviveModifier) - .filter(m => m.pokemonId === playerPokemon?.id); + .filter(m => m.pokemonId === playerPokemon.id); expect(revSeeds.length).toBe(1); }); }); diff --git a/test/moves/diamond_storm.test.ts b/test/moves/diamond-storm.test.ts similarity index 90% rename from test/moves/diamond_storm.test.ts rename to test/moves/diamond-storm.test.ts index 1eb86f94b76..ffd3c62420e 100644 --- a/test/moves/diamond_storm.test.ts +++ b/test/moves/diamond-storm.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -41,6 +41,6 @@ describe("Moves - Diamond Storm", () => { game.move.select(MoveId.DIAMOND_STORM); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.DEF)).toBe(2); + expect(game.field.getPlayerPokemon().getStatStage(Stat.DEF)).toBe(2); }); }); diff --git a/test/moves/dig.test.ts b/test/moves/dig.test.ts index 9d431b78838..fcc593b75da 100644 --- a/test/moves/dig.test.ts +++ b/test/moves/dig.test.ts @@ -6,7 +6,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Dig", () => { @@ -38,8 +38,8 @@ describe("Moves - Dig", () => { it("should make the user semi-invulnerable, then attack over 2 turns", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DIG); await game.phaseInterceptor.to("TurnEndPhase"); @@ -62,7 +62,7 @@ describe("Moves - Dig", () => { game.override.moveset([]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.changeMoveset(playerPokemon, MoveId.DIG); game.move.select(MoveId.DIG); @@ -80,8 +80,8 @@ describe("Moves - Dig", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DIG); @@ -95,7 +95,7 @@ describe("Moves - Dig", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.DIG); @@ -110,8 +110,8 @@ describe("Moves - Dig", () => { it("should cause the user to take double damage from Earthquake", async () => { await game.classicMode.startBattle([SpeciesId.DONDOZO]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); const preDigEarthquakeDmg = playerPokemon.getAttackDamage({ source: enemyPokemon, diff --git a/test/moves/disable.test.ts b/test/moves/disable.test.ts index f6b1c24ac7d..9b5763bf90b 100644 --- a/test/moves/disable.test.ts +++ b/test/moves/disable.test.ts @@ -6,7 +6,7 @@ import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { RandomMoveAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Disable", () => { @@ -132,7 +132,7 @@ describe("Moves - Disable", () => { vi.spyOn(RandomMoveAttr.prototype, "getMoveOverride").mockReturnValue(MoveId.ABSORB); await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const playerMon = game.scene.getPlayerPokemon()!; + const playerMon = game.field.getPlayerPokemon(); playerMon.pushMoveHistory({ move: MoveId.SPLASH, targets: [BattlerIndex.ENEMY], useMode: MoveUseMode.NORMAL }); game.scene.currentBattle.lastMove = MoveId.SPLASH; @@ -141,7 +141,7 @@ describe("Moves - Disable", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - const enemyMon = game.scene.getEnemyPokemon()!; + const enemyMon = game.field.getEnemyPokemon(); expect(enemyMon.isMoveRestricted(moveId), `calling move ${MoveId[moveId]} was not disabled`).toBe(true); expect(enemyMon.getLastXMoves(-1)).toHaveLength(2); const calledMove = enemyMon.getLastXMoves()[0].move; diff --git a/test/moves/dive.test.ts b/test/moves/dive.test.ts index c7e4f99f6cb..6464cb110b4 100644 --- a/test/moves/dive.test.ts +++ b/test/moves/dive.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,8 +38,8 @@ describe("Moves - Dive", () => { it("should make the user semi-invulnerable, then attack over 2 turns", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DIVE); @@ -64,8 +64,8 @@ describe("Moves - Dive", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DIVE); @@ -79,7 +79,7 @@ describe("Moves - Dive", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.DIVE); @@ -96,8 +96,8 @@ describe("Moves - Dive", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DIVE); @@ -113,8 +113,8 @@ describe("Moves - Dive", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DIVE); diff --git a/test/moves/doodle.test.ts b/test/moves/doodle.test.ts index 5f4b8ab9b39..8b90d120b24 100644 --- a/test/moves/doodle.test.ts +++ b/test/moves/doodle.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -39,7 +39,7 @@ describe("Moves - Doodle", () => { game.move.select(MoveId.DOODLE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getPlayerPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should copy the opponent's ability to itself and its ally in doubles", async () => { @@ -64,6 +64,6 @@ describe("Moves - Doodle", () => { await game.phaseInterceptor.to("BerryPhase"); // Enemies should have been intimidated twice - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-2); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-2); }); }); diff --git a/test/moves/double_team.test.ts b/test/moves/double-team.test.ts similarity index 89% rename from test/moves/double_team.test.ts rename to test/moves/double-team.test.ts index 9cdae33af41..6d471df2d57 100644 --- a/test/moves/double_team.test.ts +++ b/test/moves/double-team.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Double Team", () => { it("raises the user's EVA stat stage by 1", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const ally = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const ally = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getAccuracyMultiplier"); expect(ally.getStatStage(Stat.EVA)).toBe(0); diff --git a/test/moves/dragon_cheer.test.ts b/test/moves/dragon-cheer.test.ts similarity index 98% rename from test/moves/dragon_cheer.test.ts rename to test/moves/dragon-cheer.test.ts index 7d1f35fe2d4..614dd9ab6ab 100644 --- a/test/moves/dragon_cheer.test.ts +++ b/test/moves/dragon-cheer.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/dragon_rage.test.ts b/test/moves/dragon-rage.test.ts similarity index 96% rename from test/moves/dragon_rage.test.ts rename to test/moves/dragon-rage.test.ts index 46e7dfa5a21..c90e2b78abd 100644 --- a/test/moves/dragon_rage.test.ts +++ b/test/moves/dragon-rage.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import type { EnemyPokemon, PlayerPokemon } from "#field/pokemon"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -47,7 +47,7 @@ describe("Moves - Dragon Rage", () => { await game.classicMode.startBattle(); partyPokemon = game.scene.getPlayerParty()[0]; - enemyPokemon = game.scene.getEnemyPokemon()!; + enemyPokemon = game.field.getEnemyPokemon(); }); it("ignores weaknesses", async () => { diff --git a/test/moves/dragon_tail.test.ts b/test/moves/dragon-tail.test.ts similarity index 96% rename from test/moves/dragon_tail.test.ts rename to test/moves/dragon-tail.test.ts index c5a77716c56..1cea6f908a0 100644 --- a/test/moves/dragon_tail.test.ts +++ b/test/moves/dragon-tail.test.ts @@ -7,7 +7,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -41,7 +41,7 @@ describe("Moves - Dragon Tail", () => { it("should cause opponent to flee, and not crash", async () => { await game.classicMode.startBattle([SpeciesId.DRATINI]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DRAGON_TAIL); @@ -59,8 +59,8 @@ describe("Moves - Dragon Tail", () => { game.override.enemyAbility(AbilityId.ROUGH_SKIN); await game.classicMode.startBattle([SpeciesId.DRATINI]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.DRAGON_TAIL); @@ -132,7 +132,7 @@ describe("Moves - Dragon Tail", () => { game.override.enemyAbility(AbilityId.SUCTION_CUPS); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.DRAGON_TAIL); await game.phaseInterceptor.to("TurnEndPhase"); @@ -149,7 +149,7 @@ describe("Moves - Dragon Tail", () => { await game.toNextTurn(); // Make sure the enemy switched to a healthy Pokemon - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); expect(enemy).toBeDefined(); expect(enemy.isFullHp()).toBe(true); @@ -171,7 +171,7 @@ describe("Moves - Dragon Tail", () => { await game.toNextTurn(); // Make sure the enemy field is not empty and has a revived Pokemon - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); expect(enemy).toBeDefined(); expect(enemy.hp).toBe(Math.floor(enemy.getMaxHp() / 2)); expect(game.scene.getEnemyField().length).toBe(1); @@ -189,7 +189,7 @@ describe("Moves - Dragon Tail", () => { await game.toNextTurn(); // Make sure the player's field is not empty and has a revived Pokemon - const dratini = game.scene.getPlayerPokemon()!; + const dratini = game.field.getPlayerPokemon(); expect(dratini).toBeDefined(); expect(dratini.hp).toBe(Math.floor(dratini.getMaxHp() / 2)); expect(game.scene.getPlayerField().length).toBe(1); diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax-cannon.test.ts similarity index 99% rename from test/moves/dynamax_cannon.test.ts rename to test/moves/dynamax-cannon.test.ts index fcbbccd5123..5090a228e23 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax-cannon.test.ts @@ -5,7 +5,7 @@ import { SpeciesId } from "#enums/species-id"; import type { Move } from "#moves/move"; import { DamageAnimPhase } from "#phases/damage-anim-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/effectiveness.test.ts b/test/moves/effectiveness.test.ts index 58e041fb5c5..0bdef2428a4 100644 --- a/test/moves/effectiveness.test.ts +++ b/test/moves/effectiveness.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { TrainerSlot } from "#enums/trainer-slot"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import Phaser from "phaser"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/electrify.test.ts b/test/moves/electrify.test.ts index c3aa925a331..10ae2fcd939 100644 --- a/test/moves/electrify.test.ts +++ b/test/moves/electrify.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Electrify", () => { it("should convert attacks to Electric type", async () => { await game.classicMode.startBattle([SpeciesId.EXCADRILL]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "getMoveType"); game.move.select(MoveId.ELECTRIFY); @@ -54,8 +54,8 @@ describe("Moves - Electrify", () => { await game.classicMode.startBattle([SpeciesId.EXCADRILL]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getPlayerPokemon(); vi.spyOn(enemyPokemon, "getMoveType"); game.move.select(MoveId.ELECTRIFY); diff --git a/test/moves/electro_shot.test.ts b/test/moves/electro-shot.test.ts similarity index 91% rename from test/moves/electro_shot.test.ts rename to test/moves/electro-shot.test.ts index cb696b162d5..4b1303fc930 100644 --- a/test/moves/electro_shot.test.ts +++ b/test/moves/electro-shot.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,8 +38,8 @@ describe("Moves - Electro Shot", () => { it("should increase the user's Sp. Atk on the first turn, then attack on the second turn", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.ELECTRO_SHOT); @@ -68,8 +68,8 @@ describe("Moves - Electro Shot", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.ELECTRO_SHOT); @@ -91,7 +91,7 @@ describe("Moves - Electro Shot", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.ELECTRO_SHOT); diff --git a/test/moves/encore.test.ts b/test/moves/encore.test.ts index c20dc194ead..0840346c3b1 100644 --- a/test/moves/encore.test.ts +++ b/test/moves/encore.test.ts @@ -4,7 +4,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -39,7 +39,7 @@ describe("Moves - Encore", () => { it("should prevent the target from using any move except the last used move", async () => { await game.classicMode.startBattle([SpeciesId.SNORLAX]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.ENCORE); await game.move.selectEnemyMove(MoveId.SPLASH); @@ -67,8 +67,8 @@ describe("Moves - Encore", () => { await game.classicMode.startBattle([SpeciesId.SNORLAX]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); if (delay) { game.move.select(MoveId.SPLASH); @@ -92,23 +92,23 @@ describe("Moves - Encore", () => { game.override.moveset([MoveId.ENCORE, MoveId.TORMENT, MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemyPokemon = game.scene.getEnemyPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.ENCORE); await game.setTurnOrder(turnOrder); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.getTag(BattlerTagType.ENCORE)).toBeDefined(); + expect(enemyPokemon.getTag(BattlerTagType.ENCORE)).toBeDefined(); await game.toNextTurn(); game.move.select(MoveId.TORMENT); await game.setTurnOrder(turnOrder); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon?.getTag(BattlerTagType.TORMENT)).toBeDefined(); + expect(enemyPokemon.getTag(BattlerTagType.TORMENT)).toBeDefined(); await game.toNextTurn(); game.move.select(MoveId.SPLASH); await game.setTurnOrder(turnOrder); await game.phaseInterceptor.to("BerryPhase"); - const lastMove = enemyPokemon?.getLastXMoves()[0]; + const lastMove = enemyPokemon.getLastXMoves()[0]; expect(lastMove?.move).toBe(MoveId.STRUGGLE); }); }); diff --git a/test/moves/endure.test.ts b/test/moves/endure.test.ts index 717c9d58211..1bac3c5d6ff 100644 --- a/test/moves/endure.test.ts +++ b/test/moves/endure.test.ts @@ -1,9 +1,10 @@ import { AbilityId } from "#enums/ability-id"; +import { HitResult } from "#enums/hit-result"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Endure", () => { let phaserGame: Phaser.Game; @@ -22,7 +23,7 @@ describe("Moves - Endure", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([MoveId.THUNDER, MoveId.BULLET_SEED, MoveId.TOXIC, MoveId.SHEER_COLD]) + .moveset([MoveId.THUNDER, MoveId.BULLET_SEED, MoveId.SHEER_COLD]) .ability(AbilityId.SKILL_LINK) .startingLevel(100) .battleStyle("single") @@ -32,55 +33,52 @@ describe("Moves - Endure", () => { .enemyMoveset(MoveId.ENDURE); }); - it("should let the pokemon survive with 1 HP", async () => { + it("should let the pokemon survive with 1 HP from attacks", async () => { await game.classicMode.startBattle([SpeciesId.ARCEUS]); game.move.select(MoveId.THUNDER); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.hp).toBe(1); + expect(game.field.getEnemyPokemon().hp).toBe(1); }); - it("should let the pokemon survive with 1 HP when hit with a multihit move", async () => { + it("should let the pokemon survive with 1 HP from multi-strike moves", async () => { await game.classicMode.startBattle([SpeciesId.ARCEUS]); game.move.select(MoveId.BULLET_SEED); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.hp).toBe(1); + expect(game.field.getEnemyPokemon().hp).toBe(1); }); it("should let the pokemon survive against OHKO moves", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.SHEER_COLD); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemy.isFainted()).toBeFalsy(); + expect(enemy.hp).toBe(1); }); // comprehensive indirect damage test copied from Reviver Seed test it.each([ - { moveType: "Damaging Move Chip Damage", move: MoveId.SALT_CURE }, - { moveType: "Chip Damage", move: MoveId.LEECH_SEED }, - { moveType: "Trapping Chip Damage", move: MoveId.WHIRLPOOL }, - { moveType: "Status Effect Damage", move: MoveId.TOXIC }, + { moveType: "Damaging Move Chip", move: MoveId.SALT_CURE }, + { moveType: "Status Move Chip", move: MoveId.LEECH_SEED }, + { moveType: "Partial Trapping move", move: MoveId.WHIRLPOOL }, + { moveType: "Status Effect", move: MoveId.TOXIC }, { moveType: "Weather", move: MoveId.SANDSTORM }, - ])("should not prevent fainting from $moveType", async ({ move }) => { - game.override - .enemyLevel(1) - .startingLevel(100) - .enemySpecies(SpeciesId.MAGIKARP) - .moveset(move) - .enemyMoveset(MoveId.ENDURE); + ])("should not prevent fainting from $moveType Damage", async ({ move }) => { + game.override.moveset(move).enemyLevel(100); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; - enemy.damageAndUpdate(enemy.hp - 1); + const enemy = game.field.getEnemyPokemon(); + enemy.hp = 2; + // force attack to do 1 dmg (for salt cure) + vi.spyOn(enemy, "getAttackDamage").mockReturnValue({ cancelled: false, result: HitResult.EFFECTIVE, damage: 1 }); game.move.select(move); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemy.isFainted()).toBeTruthy(); + expect(enemy.isFainted()).toBe(true); }); }); diff --git a/test/moves/entrainment.test.ts b/test/moves/entrainment.test.ts index 9d7da455525..8d5d69458cb 100644 --- a/test/moves/entrainment.test.ts +++ b/test/moves/entrainment.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Entrainment", () => { game.move.select(MoveId.ENTRAINMENT); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.ADAPTABILITY); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.ADAPTABILITY); }); it("should activate post-summon abilities", async () => { @@ -48,6 +48,6 @@ describe("Moves - Entrainment", () => { game.move.select(MoveId.ENTRAINMENT); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); }); diff --git a/test/moves/fairy_lock.test.ts b/test/moves/fairy-lock.test.ts similarity index 99% rename from test/moves/fairy_lock.test.ts rename to test/moves/fairy-lock.test.ts index 5f20c39c6f8..eba139fee22 100644 --- a/test/moves/fairy_lock.test.ts +++ b/test/moves/fairy-lock.test.ts @@ -3,7 +3,7 @@ import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagType } from "#enums/arena-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/fake_out.test.ts b/test/moves/fake-out.test.ts similarity index 89% rename from test/moves/fake_out.test.ts rename to test/moves/fake-out.test.ts index 815de9b9225..22ff8e2c304 100644 --- a/test/moves/fake_out.test.ts +++ b/test/moves/fake-out.test.ts @@ -1,6 +1,6 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Moves - Fake Out", () => { it("should only work the first turn a pokemon is sent out in a battle", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const corv = game.scene.getEnemyPokemon()!; + const corv = game.field.getEnemyPokemon(); game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); @@ -52,14 +52,14 @@ describe("Moves - Fake Out", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); // set hp to 1 for easy knockout - game.scene.getEnemyPokemon()!.hp = 1; + game.field.getEnemyPokemon().hp = 1; game.move.select(MoveId.FAKE_OUT); await game.toNextWave(); game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); - const corv = game.scene.getEnemyPokemon()!; + const corv = game.field.getEnemyPokemon(); expect(corv).toBeDefined(); expect(corv?.hp).toBeLessThan(corv?.getMaxHp()); }); @@ -69,14 +69,14 @@ describe("Moves - Fake Out", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); // set hp to 1 for easy knockout - game.scene.getEnemyPokemon()!.hp = 1; + game.field.getEnemyPokemon().hp = 1; game.move.select(MoveId.FAKE_OUT); await game.toNextWave(); game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); - const corv = game.scene.getEnemyPokemon()!; + const corv = game.field.getEnemyPokemon(); expect(corv).toBeDefined(); expect(corv.hp).toBeLessThan(corv.getMaxHp()); }); @@ -87,7 +87,7 @@ describe("Moves - Fake Out", () => { game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); - const corv = game.scene.getEnemyPokemon()!; + const corv = game.field.getEnemyPokemon(); expect(corv.hp).toBeLessThan(corv.getMaxHp()); corv.hp = corv.getMaxHp(); diff --git a/test/moves/false_swipe.test.ts b/test/moves/false-swipe.test.ts similarity index 90% rename from test/moves/false_swipe.test.ts rename to test/moves/false-swipe.test.ts index 0aa16ff43e1..40408ad523b 100644 --- a/test/moves/false_swipe.test.ts +++ b/test/moves/false-swipe.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - False Swipe", () => { it("should reduce the target to 1 HP", async () => { await game.classicMode.startBattle([SpeciesId.MILOTIC]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); diff --git a/test/moves/fell_stinger.test.ts b/test/moves/fell-stinger.test.ts similarity index 90% rename from test/moves/fell_stinger.test.ts rename to test/moves/fell-stinger.test.ts index c3ea17904af..ede70b7af9b 100644 --- a/test/moves/fell_stinger.test.ts +++ b/test/moves/fell-stinger.test.ts @@ -5,7 +5,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -41,7 +41,7 @@ describe("Moves - Fell Stinger", () => { game.override.enemyMoveset([MoveId.DOUBLE_EDGE]); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("VictoryPhase"); @@ -53,7 +53,7 @@ describe("Moves - Fell Stinger", () => { game.override.enemyMoveset(MoveId.SPLASH).enemyStatusEffect(StatusEffect.BURN); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("VictoryPhase"); @@ -65,7 +65,7 @@ describe("Moves - Fell Stinger", () => { game.override.weather(WeatherType.HAIL); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FELL_STINGER); @@ -78,7 +78,7 @@ describe("Moves - Fell Stinger", () => { game.override.enemyPassiveAbility(AbilityId.STURDY).enemyAbility(AbilityId.DRY_SKIN).weather(WeatherType.HARSH_SUN); await game.challengeMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FELL_STINGER); @@ -91,7 +91,7 @@ describe("Moves - Fell Stinger", () => { game.override.enemyAbility(AbilityId.BALL_FETCH).enemyHeldItems([{ name: "REVIVER_SEED" }]); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("TurnEndPhase"); @@ -106,7 +106,7 @@ describe("Moves - Fell Stinger", () => { vi.spyOn(fellStinger, "power", "get").mockReturnValue(50000); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const leftEnemy = game.scene.getEnemyField()[0]!; // Turn 1: set Salt Cure, enemy splashes and does nothing @@ -129,7 +129,7 @@ describe("Moves - Fell Stinger", () => { vi.spyOn(allMoves[MoveId.FELL_STINGER], "power", "get").mockReturnValue(50000); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const leftEnemy = game.scene.getEnemyField()[0]!; // Turn 1: set Bind, enemy splashes and does nothing @@ -152,7 +152,7 @@ describe("Moves - Fell Stinger", () => { vi.spyOn(allMoves[MoveId.FELL_STINGER], "power", "get").mockReturnValue(50000); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const leftEnemy = game.scene.getEnemyField()[0]!; // Turn 1: set Leech Seed, enemy splashes and does nothing @@ -173,11 +173,11 @@ describe("Moves - Fell Stinger", () => { game.override.enemyAbility(AbilityId.KLUTZ); await game.classicMode.startBattle([SpeciesId.LEAVANNY]); - const leadPokemon = game.scene.getPlayerPokemon(); + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("TurnEndPhase"); - expect(leadPokemon?.getStatStage(Stat.ATK)).toBe(3); + expect(leadPokemon.getStatStage(Stat.ATK)).toBe(3); }); }); diff --git a/test/moves/fillet_away.test.ts b/test/moves/fillet-away.test.ts similarity index 92% rename from test/moves/fillet_away.test.ts rename to test/moves/fillet-away.test.ts index 3ba4f5740eb..e6eb003c9ea 100644 --- a/test/moves/fillet_away.test.ts +++ b/test/moves/fillet-away.test.ts @@ -2,7 +2,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -42,7 +42,7 @@ describe("Moves - FILLET AWAY", () => { test("raises the user's ATK, SPATK, and SPD stat stages by 2 each, at the cost of 1/2 of its maximum HP", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); game.move.select(MoveId.FILLET_AWAY); @@ -57,7 +57,7 @@ describe("Moves - FILLET AWAY", () => { test("still takes effect if one or more of the involved stat stages are not at max", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); //Here - Stat.SPD -> 0 and Stat.SPATK -> 3 @@ -76,7 +76,7 @@ describe("Moves - FILLET AWAY", () => { test("fails if all stat stages involved are at max", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.setStatStage(Stat.ATK, 6); leadPokemon.setStatStage(Stat.SPATK, 6); @@ -94,7 +94,7 @@ describe("Moves - FILLET AWAY", () => { test("fails if the user's health is less than 1/2", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); leadPokemon.hp = hpLost - PREDAMAGE; diff --git a/test/moves/first-attack-double-power.test.ts b/test/moves/first-attack-double-power.test.ts index 7d1d9c4d762..4172f843872 100644 --- a/test/moves/first-attack-double-power.test.ts +++ b/test/moves/first-attack-double-power.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/fissure.test.ts b/test/moves/fissure.test.ts index 6fadf867e8a..b22b81906a6 100644 --- a/test/moves/fissure.test.ts +++ b/test/moves/fissure.test.ts @@ -5,7 +5,7 @@ import { Stat } from "#enums/stat"; import type { EnemyPokemon, PlayerPokemon } from "#field/pokemon"; import { DamageAnimPhase } from "#phases/damage-anim-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -43,7 +43,7 @@ describe("Moves - Fissure", () => { await game.classicMode.startBattle(); partyPokemon = game.scene.getPlayerParty()[0]; - enemyPokemon = game.scene.getEnemyPokemon()!; + enemyPokemon = game.field.getEnemyPokemon(); }); it("ignores damage modification from abilities, for example FUR_COAT", async () => { diff --git a/test/moves/flame_burst.test.ts b/test/moves/flame-burst.test.ts similarity index 98% rename from test/moves/flame_burst.test.ts rename to test/moves/flame-burst.test.ts index 76d9a100e37..ce82b46d0fc 100644 --- a/test/moves/flame_burst.test.ts +++ b/test/moves/flame-burst.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Pokemon } from "#field/pokemon"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/flower_shield.test.ts b/test/moves/flower-shield.test.ts similarity index 91% rename from test/moves/flower_shield.test.ts rename to test/moves/flower-shield.test.ts index 16a1efacf35..5fc671895d3 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower-shield.test.ts @@ -6,7 +6,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,8 +38,8 @@ describe("Moves - Flower Shield", () => { game.override.enemySpecies(SpeciesId.CHERRIM); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const cherrim = game.scene.getEnemyPokemon()!; - const magikarp = game.scene.getPlayerPokemon()!; + const cherrim = game.field.getEnemyPokemon(); + const magikarp = game.field.getPlayerPokemon(); expect(magikarp.getStatStage(Stat.DEF)).toBe(0); expect(cherrim.getStatStage(Stat.DEF)).toBe(0); @@ -78,8 +78,8 @@ describe("Moves - Flower Shield", () => { game.override.enemySpecies(SpeciesId.PARAS).enemyMoveset(MoveId.DIG).enemyLevel(50); await game.classicMode.startBattle([SpeciesId.CHERRIM]); - const paras = game.scene.getEnemyPokemon()!; - const cherrim = game.scene.getPlayerPokemon()!; + const paras = game.field.getEnemyPokemon(); + const cherrim = game.field.getPlayerPokemon(); expect(paras.getStatStage(Stat.DEF)).toBe(0); expect(cherrim.getStatStage(Stat.DEF)).toBe(0); @@ -97,8 +97,8 @@ describe("Moves - Flower Shield", () => { game.override.enemySpecies(SpeciesId.MAGIKARP); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; - const ally = game.scene.getPlayerPokemon()!; + const enemy = game.field.getEnemyPokemon(); + const ally = game.field.getPlayerPokemon(); expect(enemy.getStatStage(Stat.DEF)).toBe(0); expect(ally.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/moves/fly.test.ts b/test/moves/fly.test.ts index c27db3686b4..dc40b4a439b 100644 --- a/test/moves/fly.test.ts +++ b/test/moves/fly.test.ts @@ -6,7 +6,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -41,8 +41,8 @@ describe("Moves - Fly", () => { it("should make the user semi-invulnerable, then attack over 2 turns", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FLY); @@ -67,8 +67,8 @@ describe("Moves - Fly", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FLY); @@ -82,7 +82,7 @@ describe("Moves - Fly", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.FLY); @@ -99,8 +99,8 @@ describe("Moves - Fly", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FLY); diff --git a/test/moves/focus_punch.test.ts b/test/moves/focus-punch.test.ts similarity index 91% rename from test/moves/focus_punch.test.ts rename to test/moves/focus-punch.test.ts index 5123e99c6ff..9a76dbec0db 100644 --- a/test/moves/focus_punch.test.ts +++ b/test/moves/focus-punch.test.ts @@ -6,7 +6,7 @@ import { MessagePhase } from "#phases/message-phase"; import { MoveHeaderPhase } from "#phases/move-header-phase"; import { SwitchSummonPhase } from "#phases/switch-summon-phase"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -41,8 +41,8 @@ describe("Moves - Focus Punch", () => { it("should deal damage at the end of turn if uninterrupted", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); const enemyStartingHp = enemyPokemon.hp; @@ -65,8 +65,8 @@ describe("Moves - Focus Punch", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); const enemyStartingHp = enemyPokemon.hp; @@ -89,8 +89,8 @@ describe("Moves - Focus Punch", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FOCUS_PUNCH); diff --git a/test/moves/follow_me.test.ts b/test/moves/follow-me.test.ts similarity index 98% rename from test/moves/follow_me.test.ts rename to test/moves/follow-me.test.ts index 891b1844512..2624a1fd267 100644 --- a/test/moves/follow_me.test.ts +++ b/test/moves/follow-me.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; diff --git a/test/moves/foresight.test.ts b/test/moves/foresight.test.ts index 3163f65dd79..7de628ba172 100644 --- a/test/moves/foresight.test.ts +++ b/test/moves/foresight.test.ts @@ -1,7 +1,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -33,7 +33,7 @@ describe("Moves - Foresight", () => { it("should allow Normal and Fighting moves to hit Ghost types", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.QUICK_ATTACK); await game.toNextTurn(); @@ -57,7 +57,7 @@ describe("Moves - Foresight", () => { game.override.enemyMoveset([MoveId.MINIMIZE]); await game.classicMode.startBattle(); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); vi.spyOn(pokemon, "getAccuracyMultiplier"); game.move.select(MoveId.FORESIGHT); diff --git a/test/moves/forests_curse.test.ts b/test/moves/forests-curse.test.ts similarity index 82% rename from test/moves/forests_curse.test.ts rename to test/moves/forests-curse.test.ts index 812d3c57217..db88c1f79c4 100644 --- a/test/moves/forests_curse.test.ts +++ b/test/moves/forests-curse.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,13 +35,13 @@ describe("Moves - Forest's Curse", () => { it("will replace the added type from Trick Or Treat", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemyPokemon = game.scene.getEnemyPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.TRICK_OR_TREAT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon!.summonData.addedType).toBe(PokemonType.GHOST); + expect(enemyPokemon.summonData.addedType).toBe(PokemonType.GHOST); game.move.select(MoveId.FORESTS_CURSE); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon?.summonData.addedType).toBe(PokemonType.GRASS); + expect(enemyPokemon.summonData.addedType).toBe(PokemonType.GRASS); }); }); diff --git a/test/moves/freeze_dry.test.ts b/test/moves/freeze-dry.test.ts similarity index 91% rename from test/moves/freeze_dry.test.ts rename to test/moves/freeze-dry.test.ts index 5639330db1b..0b22d4f0997 100644 --- a/test/moves/freeze_dry.test.ts +++ b/test/moves/freeze-dry.test.ts @@ -4,7 +4,7 @@ import { Challenges } from "#enums/challenges"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Freeze-Dry", () => { it("should deal 2x damage to pure water types", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -50,7 +50,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemySpecies(SpeciesId.WINGULL); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -64,7 +64,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemySpecies(SpeciesId.VOLCANION); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -85,7 +85,7 @@ describe("Moves - Freeze-Dry", () => { .moveset([MoveId.SOAK, MoveId.FREEZE_DRY]); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.SOAK); @@ -103,7 +103,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemySpecies(SpeciesId.QUAGSIRE); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FORESTS_CURSE); @@ -120,7 +120,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemySpecies(SpeciesId.SKARMORY); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.teraType = PokemonType.WATER; enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); @@ -136,7 +136,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemySpecies(SpeciesId.PELIPPER); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.teraType = PokemonType.FIRE; enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); @@ -152,7 +152,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemySpecies(SpeciesId.TERAPAGOS).enemyAbility(AbilityId.TERA_SHELL); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.SOAK); @@ -169,7 +169,7 @@ describe("Moves - Freeze-Dry", () => { game.override.ability(AbilityId.NORMALIZE); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -183,7 +183,7 @@ describe("Moves - Freeze-Dry", () => { game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.SHIELDON); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -197,7 +197,7 @@ describe("Moves - Freeze-Dry", () => { game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.JELLICENT); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -211,7 +211,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemyMoveset([MoveId.ELECTRIFY]); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -225,7 +225,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.GYARADOS); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -239,7 +239,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.BARBOACH); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -253,7 +253,7 @@ describe("Moves - Freeze-Dry", () => { game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.FLAPPLE); await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -269,7 +269,7 @@ describe("Moves - Freeze-Dry", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -285,7 +285,7 @@ describe("Moves - Freeze-Dry", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -301,7 +301,7 @@ describe("Moves - Freeze-Dry", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); @@ -318,7 +318,7 @@ describe("Moves - Freeze-Dry", () => { await game.challengeMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); game.move.select(MoveId.FREEZE_DRY); diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy-frost.test.ts similarity index 93% rename from test/moves/freezy_frost.test.ts rename to test/moves/freezy-frost.test.ts index 9cf2f38b286..e25c29c9302 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy-frost.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -37,8 +37,8 @@ describe("Moves - Freezy Frost", () => { it("should clear stat changes of user and opponent", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const user = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const user = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.HOWL); await game.toNextTurn(); @@ -56,7 +56,7 @@ describe("Moves - Freezy Frost", () => { it("should clear all stat changes even when enemy uses the move", async () => { game.override.enemyMoveset(MoveId.FREEZY_FROST); await game.classicMode.startBattle([SpeciesId.SHUCKLE]); // Shuckle for slower Howl on first turn so Freezy Frost doesn't affect it. - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); game.move.select(MoveId.HOWL); await game.toNextTurn(); diff --git a/test/moves/fusion_bolt.test.ts b/test/moves/fusion-bolt.test.ts similarity index 90% rename from test/moves/fusion_bolt.test.ts rename to test/moves/fusion-bolt.test.ts index ad6810cb412..9594dcfd15c 100644 --- a/test/moves/fusion_bolt.test.ts +++ b/test/moves/fusion-bolt.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Fusion Bolt", () => { it("should not make contact", async () => { await game.classicMode.startBattle([SpeciesId.ZEKROM]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); const initialHp = partyMember.hp; game.move.select(fusionBolt); diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion-flare-bolt.test.ts similarity index 99% rename from test/moves/fusion_flare_bolt.test.ts rename to test/moves/fusion-flare-bolt.test.ts index 1777eb5e07e..42cc1248325 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion-flare-bolt.test.ts @@ -8,7 +8,7 @@ import { DamageAnimPhase } from "#phases/damage-anim-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; import { MovePhase } from "#phases/move-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/fusion_flare.test.ts b/test/moves/fusion-flare.test.ts similarity index 92% rename from test/moves/fusion_flare.test.ts rename to test/moves/fusion-flare.test.ts index d86f784bce4..dd8ae11683d 100644 --- a/test/moves/fusion_flare.test.ts +++ b/test/moves/fusion-flare.test.ts @@ -2,7 +2,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Fusion Flare", () => { it("should thaw freeze status condition", async () => { await game.classicMode.startBattle([SpeciesId.RESHIRAM]); - const partyMember = game.scene.getPlayerPokemon()!; + const partyMember = game.field.getPlayerPokemon(); game.move.select(fusionFlare); diff --git a/test/moves/future_sight.test.ts b/test/moves/future_sight.test.ts deleted file mode 100644 index 96b71b8b0f1..00000000000 --- a/test/moves/future_sight.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; - -describe("Moves - Future Sight", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - game.override - .startingLevel(50) - .moveset([MoveId.FUTURE_SIGHT, MoveId.SPLASH]) - .battleStyle("single") - .enemySpecies(SpeciesId.MAGIKARP) - .enemyAbility(AbilityId.STURDY) - .enemyMoveset(MoveId.SPLASH); - }); - - it("hits 2 turns after use, ignores user switch out", async () => { - await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); - - game.move.select(MoveId.FUTURE_SIGHT); - await game.toNextTurn(); - game.doSwitchPokemon(1); - await game.toNextTurn(); - game.move.select(MoveId.SPLASH); - await game.toNextTurn(); - - expect(game.scene.getEnemyPokemon()!.isFullHp()).toBe(false); - }); -}); diff --git a/test/moves/gastro_acid.test.ts b/test/moves/gastro-acid.test.ts similarity index 98% rename from test/moves/gastro_acid.test.ts rename to test/moves/gastro-acid.test.ts index 9b8e8f33250..59177528492 100644 --- a/test/moves/gastro_acid.test.ts +++ b/test/moves/gastro-acid.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Gastro Acid", () => { diff --git a/test/moves/geomancy.test.ts b/test/moves/geomancy.test.ts index 100c4d85637..df5bb1b4b97 100644 --- a/test/moves/geomancy.test.ts +++ b/test/moves/geomancy.test.ts @@ -4,7 +4,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import type { EffectiveStat } from "#enums/stat"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Geomancy", () => { it("should boost the user's stats on the second turn of use", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); const affectedStats: EffectiveStat[] = [Stat.SPATK, Stat.SPDEF, Stat.SPD]; game.move.select(MoveId.GEOMANCY); @@ -58,7 +58,7 @@ describe("Moves - Geomancy", () => { it("should execute over 2 turns between waves", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); const affectedStats: EffectiveStat[] = [Stat.SPATK, Stat.SPDEF, Stat.SPD]; game.move.select(MoveId.GEOMANCY); diff --git a/test/moves/gigaton_hammer.test.ts b/test/moves/gigaton-hammer.test.ts similarity index 88% rename from test/moves/gigaton_hammer.test.ts rename to test/moves/gigaton-hammer.test.ts index 69186886f40..e5009310de6 100644 --- a/test/moves/gigaton_hammer.test.ts +++ b/test/moves/gigaton-hammer.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,7 +35,7 @@ describe("Moves - Gigaton Hammer", () => { it("can't be used two turns in a row", async () => { await game.classicMode.startBattle(); - const enemy1 = game.scene.getEnemyPokemon()!; + const enemy1 = game.field.getEnemyPokemon(); game.move.select(MoveId.GIGATON_HAMMER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -49,7 +49,7 @@ describe("Moves - Gigaton Hammer", () => { game.move.select(MoveId.GIGATON_HAMMER); await game.toNextTurn(); - const enemy2 = game.scene.getEnemyPokemon()!; + const enemy2 = game.field.getEnemyPokemon(); expect(enemy2.hp).toBe(enemy2.getMaxHp()); }); @@ -58,7 +58,7 @@ describe("Moves - Gigaton Hammer", () => { game.override.startingWave(4); await game.classicMode.startBattle(); - const enemy1 = game.scene.getEnemyPokemon()!; + const enemy1 = game.field.getEnemyPokemon(); game.move.select(MoveId.GIGATON_HAMMER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -72,7 +72,7 @@ describe("Moves - Gigaton Hammer", () => { game.move.select(MoveId.GIGATON_HAMMER); await game.toNextTurn(); - const enemy2 = game.scene.getEnemyPokemon()!; + const enemy2 = game.field.getEnemyPokemon(); expect(enemy2.hp).toBeLessThan(enemy2.getMaxHp()); }); diff --git a/test/moves/glaive_rush.test.ts b/test/moves/glaive-rush.test.ts similarity index 89% rename from test/moves/glaive_rush.test.ts rename to test/moves/glaive-rush.test.ts index a09c35604b9..c16bd338932 100644 --- a/test/moves/glaive_rush.test.ts +++ b/test/moves/glaive-rush.test.ts @@ -2,7 +2,7 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,7 +35,7 @@ describe("Moves - Glaive Rush", () => { it("takes double damage from attacks", async () => { await game.classicMode.startBattle([SpeciesId.KLINK]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1000; game.move.select(MoveId.SHADOW_SNEAK); @@ -50,7 +50,7 @@ describe("Moves - Glaive Rush", () => { it("always gets hit by attacks", async () => { await game.classicMode.startBattle([SpeciesId.KLINK]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1000; allMoves[MoveId.AVALANCHE].accuracy = 0; @@ -63,8 +63,8 @@ describe("Moves - Glaive Rush", () => { game.override.startingHeldItems([{ name: "MULTI_LENS", count: 2 }]).enemyMoveset([MoveId.AVALANCHE]); await game.classicMode.startBattle([SpeciesId.KLINK]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1000; player.hp = 1000; @@ -83,8 +83,8 @@ describe("Moves - Glaive Rush", () => { game.override.enemyMoveset([MoveId.SHADOW_SNEAK]); await game.classicMode.startBattle([SpeciesId.KLINK]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1000; player.hp = 1000; @@ -108,8 +108,8 @@ describe("Moves - Glaive Rush", () => { game.override.enemyMoveset([MoveId.SHADOW_SNEAK]); await game.classicMode.startBattle([SpeciesId.KLINK, SpeciesId.FEEBAS]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1000; allMoves[MoveId.SHADOW_SNEAK].accuracy = 0; @@ -131,8 +131,8 @@ describe("Moves - Glaive Rush", () => { .enemyMoveset([MoveId.GLAIVE_RUSH, MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.KLINK]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.hp = 1000; player.hp = 1000; diff --git a/test/moves/growth.test.ts b/test/moves/growth.test.ts index 94df21271a1..4c892f0dee2 100644 --- a/test/moves/growth.test.ts +++ b/test/moves/growth.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { EnemyCommandPhase } from "#phases/enemy-command-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,7 +35,7 @@ describe("Moves - Growth", () => { it("should raise SPATK stat stage by 1", async () => { await game.classicMode.startBattle([SpeciesId.MIGHTYENA]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(0); diff --git a/test/moves/grudge.test.ts b/test/moves/grudge.test.ts index ff18cd5d6a4..cc75024bfbf 100644 --- a/test/moves/grudge.test.ts +++ b/test/moves/grudge.test.ts @@ -1,8 +1,10 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { WeatherType } from "#enums/weather-type"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,68 +25,66 @@ describe("Moves - Grudge", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([MoveId.EMBER, MoveId.SPLASH]) .ability(AbilityId.BALL_FETCH) .battleStyle("single") .criticalHits(false) - .enemySpecies(SpeciesId.SHEDINJA) - .enemyAbility(AbilityId.WONDER_GUARD) - .enemyMoveset([MoveId.GRUDGE, MoveId.SPLASH]); + .enemySpecies(SpeciesId.RATTATA) + .startingLevel(100) + .enemyAbility(AbilityId.NO_GUARD); }); - it("should reduce the PP of the Pokemon's move to 0 when the user has fainted", async () => { + it("should reduce the PP of an attack that faints the user to 0", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(MoveId.EMBER); - await game.move.selectEnemyMove(MoveId.GRUDGE); + const feebas = game.field.getPlayerPokemon(); + const ratatta = game.field.getEnemyPokemon(); + + game.move.use(MoveId.GUILLOTINE); + await game.move.forceEnemyMove(MoveId.GRUDGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("BerryPhase"); + await game.phaseInterceptor.to("FaintPhase"); - const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === MoveId.EMBER); - - expect(playerMove?.getPpRatio()).toBe(0); + // Ratatta should have fainted and consumed all of Guillotine's PP + expect(ratatta).toHaveFainted(); + expect(feebas).toHaveUsedPP(MoveId.GUILLOTINE, "all"); }); it("should remain in effect until the user's next move", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(MoveId.SPLASH); - await game.move.selectEnemyMove(MoveId.GRUDGE); + const feebas = game.field.getPlayerPokemon(); + const ratatta = game.field.getEnemyPokemon(); + + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.GRUDGE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - game.move.select(MoveId.EMBER); - await game.move.selectEnemyMove(MoveId.SPLASH); + expect(ratatta).toHaveBattlerTag(BattlerTagType.GRUDGE); + + game.move.use(MoveId.GUILLOTINE); + await game.move.forceEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); - await game.phaseInterceptor.to("BerryPhase"); + await game.toEndOfTurn(); - const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === MoveId.EMBER); - - expect(playerMove?.getPpRatio()).toBe(0); + expect(ratatta).toHaveFainted(); + expect(feebas).toHaveUsedPP(MoveId.GUILLOTINE, "all"); }); - it("should not reduce the opponent's PP if the user dies to weather/indirect damage", async () => { + it("should not reduce PP if the user dies to weather/indirect damage", async () => { // Opponent will be reduced to 1 HP by False Swipe, then faint to Sandstorm - game.override - .moveset([MoveId.FALSE_SWIPE]) - .startingLevel(100) - .ability(AbilityId.SAND_STREAM) - .enemySpecies(SpeciesId.RATTATA); - await game.classicMode.startBattle([SpeciesId.GEODUDE]); + game.override.weather(WeatherType.SANDSTORM); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemyPokemon = game.scene.getEnemyPokemon(); - const playerPokemon = game.scene.getPlayerPokemon(); + const feebas = game.field.getPlayerPokemon(); + const ratatta = game.field.getEnemyPokemon(); - game.move.select(MoveId.FALSE_SWIPE); - await game.move.selectEnemyMove(MoveId.GRUDGE); + game.move.use(MoveId.FALSE_SWIPE); + await game.move.forceEnemyMove(MoveId.GRUDGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("BerryPhase"); + await game.toEndOfTurn(); - expect(enemyPokemon?.isFainted()).toBe(true); - - const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === MoveId.FALSE_SWIPE); - expect(playerMove?.getPpRatio()).toBeGreaterThan(0); + expect(ratatta).toHaveFainted(); + expect(feebas).toHaveUsedPP(MoveId.FALSE_SWIPE, 1); }); }); diff --git a/test/moves/guard_split.test.ts b/test/moves/guard-split.test.ts similarity index 90% rename from test/moves/guard_split.test.ts rename to test/moves/guard-split.test.ts index 7972296f6ae..316807f68aa 100644 --- a/test/moves/guard_split.test.ts +++ b/test/moves/guard-split.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Guard Split", () => { game.override.enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const avgDef = Math.floor((player.getStat(Stat.DEF, false) + enemy.getStat(Stat.DEF, false)) / 2); const avgSpDef = Math.floor((player.getStat(Stat.SPDEF, false) + enemy.getStat(Stat.SPDEF, false)) / 2); @@ -56,8 +56,8 @@ describe("Moves - Guard Split", () => { game.override.enemyMoveset([MoveId.GUARD_SPLIT]); await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const avgDef = Math.floor((player.getStat(Stat.DEF, false) + enemy.getStat(Stat.DEF, false)) / 2); const avgSpDef = Math.floor((player.getStat(Stat.SPDEF, false) + enemy.getStat(Stat.SPDEF, false)) / 2); diff --git a/test/moves/guard_swap.test.ts b/test/moves/guard-swap.test.ts similarity index 92% rename from test/moves/guard_swap.test.ts rename to test/moves/guard-swap.test.ts index eda4349b9f8..4d30c437a66 100644 --- a/test/moves/guard_swap.test.ts +++ b/test/moves/guard-swap.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { BATTLE_STATS, Stat } from "#enums/stat"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Guard Swap", () => { it("should swap the user's DEF and SPDEF stat stages with the target's", async () => { await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(1)); diff --git a/test/moves/hard_press.test.ts b/test/moves/hard-press.test.ts similarity index 92% rename from test/moves/hard_press.test.ts rename to test/moves/hard-press.test.ts index f61f5084752..70563052b98 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard-press.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Move } from "#moves/move"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -49,7 +49,7 @@ describe("Moves - Hard Press", () => { it("should return 50 power if target HP ratio is at 50%", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); const targetHpRatio = 0.5; - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getHpRatio").mockReturnValue(targetHpRatio); @@ -62,7 +62,7 @@ describe("Moves - Hard Press", () => { it("should return 1 power if target HP ratio is at 1%", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); const targetHpRatio = 0.01; - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getHpRatio").mockReturnValue(targetHpRatio); @@ -75,7 +75,7 @@ describe("Moves - Hard Press", () => { it("should return 1 power if target HP ratio is less than 1%", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); const targetHpRatio = 0.005; - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getHpRatio").mockReturnValue(targetHpRatio); diff --git a/test/moves/haze.test.ts b/test/moves/haze.test.ts index 990bbc62ae8..1e16b499fa2 100644 --- a/test/moves/haze.test.ts +++ b/test/moves/haze.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Haze", () => { it("should reset all stat changes of all Pokemon on field", async () => { await game.classicMode.startBattle([SpeciesId.RATTATA]); - const user = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const user = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); expect(user.getStatStage(Stat.ATK)).toBe(0); expect(enemy.getStatStage(Stat.ATK)).toBe(0); diff --git a/test/moves/heal_bell.test.ts b/test/moves/heal-bell.test.ts similarity index 98% rename from test/moves/heal_bell.test.ts rename to test/moves/heal-bell.test.ts index e7f6548713a..8b526601e49 100644 --- a/test/moves/heal_bell.test.ts +++ b/test/moves/heal-bell.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/heal_block.test.ts b/test/moves/heal-block.test.ts similarity index 76% rename from test/moves/heal_block.test.ts rename to test/moves/heal-block.test.ts index 0f3ff0df683..4c8e6395171 100644 --- a/test/moves/heal_block.test.ts +++ b/test/moves/heal-block.test.ts @@ -1,12 +1,11 @@ import { AbilityId } from "#enums/ability-id"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; +import { PositionalTagType } from "#enums/positional-tag-type"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -39,8 +38,8 @@ describe("Moves - Heal Block", () => { it("shouldn't stop damage from HP-drain attacks, just HP restoration", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); player.damageAndUpdate(player.getMaxHp() - 1); @@ -57,8 +56,8 @@ describe("Moves - Heal Block", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.ABSORB); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -68,22 +67,25 @@ describe("Moves - Heal Block", () => { expect(enemy.isFullHp()).toBe(false); }); - it("should stop delayed heals, such as from Wish", async () => { + it("should prevent Wish from restoring HP", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); - player.damageAndUpdate(player.getMaxHp() - 1); + player.hp = 1; - game.move.select(MoveId.WISH); - await game.phaseInterceptor.to("TurnEndPhase"); + game.move.use(MoveId.WISH); + await game.toNextTurn(); - expect(game.scene.arena.getTagOnSide(ArenaTagType.WISH, ArenaTagSide.PLAYER)).toBeDefined(); - while (game.scene.arena.getTagOnSide(ArenaTagType.WISH, ArenaTagSide.PLAYER)) { - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to("TurnEndPhase"); - } + expect(game.scene.arena.positionalTagManager.tags.filter(t => t.tagType === PositionalTagType.WISH)) // + .toHaveLength(1); + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + + // wish triggered, but did NOT heal the player + expect(game.scene.arena.positionalTagManager.tags.filter(t => t.tagType === PositionalTagType.WISH)) // + .toHaveLength(0); expect(player.hp).toBe(1); }); @@ -92,7 +94,7 @@ describe("Moves - Heal Block", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.getMaxHp() - 1); @@ -105,7 +107,7 @@ describe("Moves - Heal Block", () => { it("should prevent healing from heal-over-time moves", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.getMaxHp() - 1); @@ -121,7 +123,7 @@ describe("Moves - Heal Block", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.getMaxHp() - 1); @@ -136,7 +138,7 @@ describe("Moves - Heal Block", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.damageAndUpdate(player.getMaxHp() - 1); game.move.select(MoveId.SPLASH); diff --git a/test/moves/heart_swap.test.ts b/test/moves/heart-swap.test.ts similarity index 91% rename from test/moves/heart_swap.test.ts rename to test/moves/heart-swap.test.ts index c90b13b88ef..f192f74558d 100644 --- a/test/moves/heart_swap.test.ts +++ b/test/moves/heart-swap.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { BATTLE_STATS } from "#enums/stat"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Heart Swap", () => { it("should swap all of the user's stat stages with the target's", async () => { await game.classicMode.startBattle([SpeciesId.MANAPHY]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(1)); diff --git a/test/moves/hyper_beam.test.ts b/test/moves/hyper-beam.test.ts similarity index 92% rename from test/moves/hyper_beam.test.ts rename to test/moves/hyper-beam.test.ts index aa3ecfe910b..c61d503d627 100644 --- a/test/moves/hyper_beam.test.ts +++ b/test/moves/hyper-beam.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#phases/berry-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -40,8 +40,8 @@ describe("Moves - Hyper Beam", () => { it("should force the user to recharge on the next turn (and only that turn)", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.HYPER_BEAM); diff --git a/test/moves/imprison.test.ts b/test/moves/imprison.test.ts index 0007c07985c..3e971707d6e 100644 --- a/test/moves/imprison.test.ts +++ b/test/moves/imprison.test.ts @@ -3,7 +3,7 @@ import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Moves - Imprison", () => { it("Pokemon under Imprison cannot use shared moves", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.TRANSFORM); await game.move.selectEnemyMove(MoveId.IMPRISON); @@ -60,7 +60,7 @@ describe("Moves - Imprison", () => { it("Imprison applies to Pokemon switched into Battle", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]); - const playerPokemon1 = game.scene.getPlayerPokemon()!; + const playerPokemon1 = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.move.selectEnemyMove(MoveId.IMPRISON); @@ -74,7 +74,7 @@ describe("Moves - Imprison", () => { game.doSwitchPokemon(1); await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - const playerPokemon2 = game.scene.getPlayerPokemon()!; + const playerPokemon2 = game.field.getPlayerPokemon(); const imprisonBattlerTag2 = playerPokemon2.getTag(BattlerTagType.IMPRISON); expect(playerPokemon1).not.toEqual(playerPokemon2); expect(imprisonBattlerTag2).toBeDefined(); @@ -84,8 +84,8 @@ describe("Moves - Imprison", () => { game.override.moveset([MoveId.SPLASH, MoveId.IMPRISON]); await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.IMPRISON); await game.move.selectEnemyMove(MoveId.GROWL); await game.toNextTurn(); diff --git a/test/moves/instruct.test.ts b/test/moves/instruct.test.ts index c73091a0eea..27318105783 100644 --- a/test/moves/instruct.test.ts +++ b/test/moves/instruct.test.ts @@ -9,7 +9,7 @@ import { Stat } from "#enums/stat"; import type { Pokemon } from "#field/pokemon"; import { RandomMoveAttr } from "#moves/move"; import type { MovePhase } from "#phases/move-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { TurnMove } from "#types/turn-move"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -50,7 +50,7 @@ describe("Moves - Instruct", () => { game.override.moveset(MoveId.INSTRUCT).enemyLevel(1000); // ensures shuckle no die await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.changeMoveset(enemy, MoveId.SONIC_BOOM); game.move.select(MoveId.INSTRUCT); @@ -60,7 +60,7 @@ describe("Moves - Instruct", () => { await game.phaseInterceptor.to("MovePhase"); // enemy attacks us await game.phaseInterceptor.to("MovePhase", false); // instruct let currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; - expect(currentPhase.pokemon).toBe(game.scene.getPlayerPokemon()); + expect(currentPhase.pokemon).toBe(game.field.getPlayerPokemon()); await game.phaseInterceptor.to("MoveEndPhase"); await game.phaseInterceptor.to("MovePhase", false); // enemy repeats move @@ -70,14 +70,14 @@ describe("Moves - Instruct", () => { await game.phaseInterceptor.to("TurnEndPhase", false); instructSuccess(enemy, MoveId.SONIC_BOOM); - expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); + expect(game.field.getPlayerPokemon().getInverseHp()).toBe(40); }); it("should repeat enemy's move through substitute", async () => { game.override.moveset([MoveId.INSTRUCT, MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.changeMoveset(enemy, [MoveId.SONIC_BOOM, MoveId.SUBSTITUTE]); game.move.select(MoveId.SPLASH); @@ -90,8 +90,8 @@ describe("Moves - Instruct", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); - instructSuccess(game.scene.getEnemyPokemon()!, MoveId.SONIC_BOOM); - expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); + instructSuccess(game.field.getEnemyPokemon(), MoveId.SONIC_BOOM); + expect(game.field.getPlayerPokemon().getInverseHp()).toBe(40); }); it("should repeat ally's attack on enemy", async () => { @@ -116,7 +116,7 @@ describe("Moves - Instruct", () => { game.override.moveset(MoveId.INSTRUCT).enemyLevel(5); await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.changeMoveset(enemy, [MoveId.GIGATON_HAMMER, MoveId.BLOOD_MOON]); game.move.select(MoveId.INSTRUCT); @@ -124,7 +124,7 @@ describe("Moves - Instruct", () => { await game.phaseInterceptor.to("BerryPhase"); instructSuccess(enemy, MoveId.GIGATON_HAMMER); - expect(game.scene.getPlayerPokemon()!.turnData.attacksReceived.length).toBe(2); + expect(game.field.getPlayerPokemon().turnData.attacksReceived.length).toBe(2); }); it("should add moves to move queue for copycat", async () => { @@ -141,7 +141,7 @@ describe("Moves - Instruct", () => { instructSuccess(enemy1, MoveId.WATER_GUN); // amoonguss gets hit by water gun thrice; once by original attack, once by instructed use and once by copycat - expect(game.scene.getPlayerPokemon()!.turnData.attacksReceived.length).toBe(3); + expect(game.field.getPlayerPokemon().turnData.attacksReceived.length).toBe(3); }); it("should fail on metronomed moves, even if also in moveset", async () => { @@ -175,16 +175,16 @@ describe("Moves - Instruct", () => { await game.move.forceStatusActivation(false); await game.phaseInterceptor.to("TurnEndPhase", false); - const moveHistory = game.scene.getEnemyPokemon()?.getLastXMoves(-1)!; + const moveHistory = game.field.getEnemyPokemon().getLastXMoves(-1)!; expect(moveHistory.map(m => m.move)).toEqual([MoveId.SONIC_BOOM, MoveId.NONE, MoveId.SONIC_BOOM]); - expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); + expect(game.field.getPlayerPokemon().getInverseHp()).toBe(40); }); it("should not repeat enemy's out of pp move", async () => { game.override.moveset(MoveId.INSTRUCT).enemySpecies(SpeciesId.UNOWN); await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.changeMoveset(enemyPokemon, MoveId.HIDDEN_POWER); const moveUsed = enemyPokemon.moveset.find(m => m?.moveId === MoveId.HIDDEN_POWER)!; moveUsed.ppUsed = moveUsed.getMovePp() - 1; @@ -258,7 +258,7 @@ describe("Moves - Instruct", () => { game.override.enemyMoveset(MoveId.INSTRUCT).enemySpecies(SpeciesId.UNOWN); await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.TOXICROAK]); - const amoonguss = game.scene.getPlayerPokemon()!; + const amoonguss = game.field.getPlayerPokemon(); game.move.changeMoveset(amoonguss, MoveId.SEED_BOMB); amoonguss.pushMoveHistory({ @@ -284,7 +284,7 @@ describe("Moves - Instruct", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("TurnEndPhase", false); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should attempt to call enemy's disabled move, but move use itself should fail", async () => { @@ -310,7 +310,7 @@ describe("Moves - Instruct", () => { game.override.moveset([MoveId.INSTRUCT]); await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.changeMoveset(enemy, MoveId.PROTECT); game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -325,8 +325,8 @@ describe("Moves - Instruct", () => { game.override.moveset([MoveId.INSTRUCT]).enemyMoveset([MoveId.SONIC_BOOM, MoveId.HYPER_BEAM]); await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.pushMoveHistory({ move: MoveId.SONIC_BOOM, targets: [BattlerIndex.PLAYER], @@ -353,7 +353,7 @@ describe("Moves - Instruct", () => { game.override.enemyMoveset(MoveId.INSTRUCT); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const regieleki = game.scene.getPlayerPokemon()!; + const regieleki = game.field.getPlayerPokemon(); regieleki.pushMoveHistory({ move: MoveId.ELECTRO_DRIFT, targets: [BattlerIndex.PLAYER], @@ -371,7 +371,7 @@ describe("Moves - Instruct", () => { game.override.enemyMoveset([MoveId.SPLASH, MoveId.WHIRLWIND]).moveset(MoveId.INSTRUCT); await game.classicMode.startBattle([SpeciesId.LUCARIO, SpeciesId.BANETTE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.pushMoveHistory({ move: MoveId.WHIRLWIND, targets: [BattlerIndex.PLAYER], @@ -387,7 +387,7 @@ describe("Moves - Instruct", () => { const instructedMove = enemyPokemon.getLastXMoves(-1)[1]; expect(instructedMove.result).toBe(MoveResult.SUCCESS); expect(instructedMove.move).toBe(MoveId.WHIRLWIND); - expect(game.scene.getPlayerPokemon()?.species.speciesId).toBe(SpeciesId.BANETTE); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.BANETTE); }); it("should respect moves' original priority for psychic terrain", async () => { @@ -559,7 +559,7 @@ describe("Moves - Instruct", () => { .enemyMoveset(MoveId.BULLET_SEED); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const bulbasaur = game.scene.getPlayerPokemon()!; + const bulbasaur = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.toNextTurn(); diff --git a/test/moves/jaw_lock.test.ts b/test/moves/jaw-lock.test.ts similarity index 90% rename from test/moves/jaw_lock.test.ts rename to test/moves/jaw-lock.test.ts index b5e98fbf6d8..441c74c7356 100644 --- a/test/moves/jaw_lock.test.ts +++ b/test/moves/jaw-lock.test.ts @@ -7,7 +7,7 @@ import { BerryPhase } from "#phases/berry-phase"; import { FaintPhase } from "#phases/faint-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -42,8 +42,8 @@ describe("Moves - Jaw Lock", () => { it("should trap the move's user and target", async () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.JAW_LOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -63,8 +63,8 @@ describe("Moves - Jaw Lock", () => { game.override.enemyLevel(1); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.JAW_LOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -88,8 +88,8 @@ describe("Moves - Jaw Lock", () => { it("should only trap the user until the target faints", async () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.JAW_LOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -140,8 +140,8 @@ describe("Moves - Jaw Lock", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.JAW_LOCK); diff --git a/test/moves/lash_out.test.ts b/test/moves/lash-out.test.ts similarity index 96% rename from test/moves/lash_out.test.ts rename to test/moves/lash-out.test.ts index b529351e01f..06629997b71 100644 --- a/test/moves/lash_out.test.ts +++ b/test/moves/lash-out.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/last-resort.test.ts b/test/moves/last-resort.test.ts index 4eaf1ee7f5d..ca4ed6726ed 100644 --- a/test/moves/last-resort.test.ts +++ b/test/moves/last-resort.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -13,7 +13,7 @@ describe("Moves - Last Resort", () => { let game: GameManager; function expectLastResortFail() { - expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0]).toEqual( + expect(game.field.getPlayerPokemon().getLastXMoves()[0]).toEqual( expect.objectContaining({ move: MoveId.LAST_RESORT, result: MoveResult.FAIL, @@ -45,7 +45,7 @@ describe("Moves - Last Resort", () => { game.override.moveset([MoveId.LAST_RESORT, MoveId.SPLASH, MoveId.GROWL, MoveId.GROWTH]); await game.classicMode.startBattle([SpeciesId.BLISSEY]); - const blissey = game.scene.getPlayerPokemon()!; + const blissey = game.field.getPlayerPokemon(); expect(blissey).toBeDefined(); // Last resort by itself @@ -69,7 +69,7 @@ describe("Moves - Last Resort", () => { blissey.pushMoveHistory({ move: MoveId.GROWTH, targets: [BattlerIndex.PLAYER], useMode: MoveUseMode.NORMAL }); game.move.select(MoveId.LAST_RESORT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0]).toEqual( + expect(game.field.getPlayerPokemon().getLastXMoves()[0]).toEqual( expect.objectContaining({ move: MoveId.LAST_RESORT, result: MoveResult.SUCCESS, @@ -114,7 +114,7 @@ describe("Moves - Last Resort", () => { game.move.select(MoveId.SLEEP_TALK); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.getLastXMoves(-1)).toEqual([ + expect(game.field.getPlayerPokemon().getLastXMoves(-1)).toEqual([ expect.objectContaining({ move: MoveId.LAST_RESORT, result: MoveResult.SUCCESS, @@ -136,15 +136,15 @@ describe("Moves - Last Resort", () => { await game.doKillOpponents(); await game.toNextWave(); - const oldMoveHistory = game.scene.getPlayerPokemon()?.summonData.moveHistory; + const oldMoveHistory = game.field.getPlayerPokemon().summonData.moveHistory; await game.reload.reloadSession(); - const newMoveHistory = game.scene.getPlayerPokemon()?.summonData.moveHistory; + const newMoveHistory = game.field.getPlayerPokemon().summonData.moveHistory; expect(oldMoveHistory).toEqual(newMoveHistory); // use last resort and it should kill the karp just fine game.move.select(MoveId.LAST_RESORT); - game.scene.getEnemyPokemon()!.hp = 1; + game.field.getEnemyPokemon().hp = 1; await game.phaseInterceptor.to("TurnEndPhase"); expect(game.isVictory()).toBe(true); diff --git a/test/moves/last_respects.test.ts b/test/moves/last-respects.test.ts similarity index 99% rename from test/moves/last_respects.test.ts rename to test/moves/last-respects.test.ts index e438971125a..9dadb316144 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last-respects.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Move } from "#moves/move"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/light_screen.test.ts b/test/moves/light-screen.test.ts similarity index 92% rename from test/moves/light_screen.test.ts rename to test/moves/light-screen.test.ts index 5dcdc3c271c..c8282037f20 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light-screen.test.ts @@ -8,7 +8,7 @@ import { SpeciesId } from "#enums/species-id"; import type { Pokemon } from "#field/pokemon"; import type { Move } from "#moves/move"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -53,8 +53,8 @@ describe("Moves - Light Screen", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -72,8 +72,8 @@ describe("Moves - Light Screen", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -88,8 +88,8 @@ describe("Moves - Light Screen", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -106,8 +106,8 @@ describe("Moves - Light Screen", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); expect(mockedDmg).toBe(allMoves[moveToUse].power); diff --git a/test/moves/lucky_chant.test.ts b/test/moves/lucky-chant.test.ts similarity index 94% rename from test/moves/lucky_chant.test.ts rename to test/moves/lucky-chant.test.ts index afcdd901382..7be75631494 100644 --- a/test/moves/lucky_chant.test.ts +++ b/test/moves/lucky-chant.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Lucky Chant", () => { @@ -37,7 +37,7 @@ describe("Moves - Lucky Chant", () => { game.override.criticalHits(true); await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const charizard = game.scene.getPlayerPokemon()!; + const charizard = game.field.getPlayerPokemon(); expect(charizard).toBeDefined(); const critSpy = vi.spyOn(charizard, "getCriticalHitResult"); // called on the defender (ie player) @@ -59,7 +59,7 @@ describe("Moves - Lucky Chant", () => { game.override.enemyMoveset(MoveId.FLOWER_TRICK); await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const charizard = game.scene.getPlayerPokemon()!; + const charizard = game.field.getPlayerPokemon(); expect(charizard).toBeDefined(); game.move.select(MoveId.SPLASH); @@ -79,7 +79,7 @@ describe("Moves - Lucky Chant", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - const charizard = game.scene.getPlayerPokemon()!; + const charizard = game.field.getPlayerPokemon(); expect(charizard).toBeDefined(); game.move.select(MoveId.FOLLOW_ME, BattlerIndex.PLAYER); diff --git a/test/moves/lunar_blessing.test.ts b/test/moves/lunar-blessing.test.ts similarity index 97% rename from test/moves/lunar_blessing.test.ts rename to test/moves/lunar-blessing.test.ts index 481156748e3..480c7fb3b31 100644 --- a/test/moves/lunar_blessing.test.ts +++ b/test/moves/lunar-blessing.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/lunar_dance.test.ts b/test/moves/lunar-dance.test.ts similarity index 97% rename from test/moves/lunar_dance.test.ts rename to test/moves/lunar-dance.test.ts index 3fcf953a37c..7386d15079b 100644 --- a/test/moves/lunar_dance.test.ts +++ b/test/moves/lunar-dance.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/magic_coat.test.ts b/test/moves/magic-coat.test.ts similarity index 88% rename from test/moves/magic_coat.test.ts rename to test/moves/magic-coat.test.ts index 4a026ceb84e..7c1c703119d 100644 --- a/test/moves/magic_coat.test.ts +++ b/test/moves/magic-coat.test.ts @@ -9,7 +9,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Magic Coat", () => { @@ -43,7 +43,7 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getEnemyPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should fail if called again in the same turn due to moves like instruct", async () => { @@ -52,7 +52,7 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.INSTRUCT); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getEnemyPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should not reflect moves used on the next turn", async () => { @@ -68,7 +68,7 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.GROWL); await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should reflect basic status moves", async () => { @@ -77,7 +77,7 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should individually bounce back multi-target moves when used by both targets in doubles", async () => { @@ -110,13 +110,13 @@ describe("Moves - Magic Coat", () => { it("should still bounce back a move that would otherwise fail", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.scene.getEnemyPokemon()?.setStatStage(Stat.ATK, -6); + game.field.getEnemyPokemon().setStatStage(Stat.ATK, -6); game.override.moveset([MoveId.GROWL]); game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce back a move that was just bounced", async () => { @@ -143,7 +143,7 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should still bounce back a move from a mold breaker user", async () => { @@ -153,8 +153,8 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(0); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should only bounce spikes back once when both targets use magic coat in doubles", async () => { @@ -175,7 +175,7 @@ describe("Moves - Magic Coat", () => { game.move.select(MoveId.CURSE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getTag(BattlerTagType.CURSED)).toBeDefined(); + expect(game.field.getEnemyPokemon().getTag(BattlerTagType.CURSED)).toBeDefined(); }); // TODO: encore is failing if the last move was virtual. @@ -186,7 +186,7 @@ describe("Moves - Magic Coat", () => { .enemyAbility(AbilityId.MAGIC_BOUNCE); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // turn 1 game.move.select(MoveId.GROWL); @@ -226,7 +226,7 @@ describe("Moves - Magic Coat", () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const stomping_tantrum = allMoves[MoveId.STOMPING_TANTRUM]; - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(stomping_tantrum, "calculateBattlePower"); game.move.select(MoveId.SPORE); @@ -252,34 +252,34 @@ describe("Moves - Magic Coat", () => { // Turn 1 - thunder wave immunity test game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); // Turn 2 - soundproof immunity test game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("should bounce back a move before the accuracy check", async () => { game.override.moveset([MoveId.SPORE]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const attacker = game.scene.getPlayerPokemon()!; + const attacker = game.field.getPlayerPokemon(); vi.spyOn(attacker, "getAccuracyMultiplier").mockReturnValue(0.0); game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); + expect(game.field.getPlayerPokemon().status?.effect).toBe(StatusEffect.SLEEP); }); it("should take the accuracy of the magic bounce user into account", async () => { game.override.moveset([MoveId.SPORE]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const opponent = game.scene.getEnemyPokemon()!; + const opponent = game.field.getEnemyPokemon(); vi.spyOn(opponent, "getAccuracyMultiplier").mockReturnValue(0); game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); + expect(game.field.getPlayerPokemon().status).toBeUndefined(); }); }); diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet-rise.test.ts similarity index 96% rename from test/moves/magnet_rise.test.ts rename to test/moves/magnet-rise.test.ts index da76c178be8..181113b5328 100644 --- a/test/moves/magnet_rise.test.ts +++ b/test/moves/magnet-rise.test.ts @@ -1,6 +1,6 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/make_it_rain.test.ts b/test/moves/make-it-rain.test.ts similarity index 89% rename from test/moves/make_it_rain.test.ts rename to test/moves/make-it-rain.test.ts index 47f1bc89fc1..a75c1ae59f8 100644 --- a/test/moves/make_it_rain.test.ts +++ b/test/moves/make-it-rain.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { MoveEndPhase } from "#phases/move-end-phase"; import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Make It Rain", () => { it("should only lower SPATK stat stage by 1 once in a double battle", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.MAKE_IT_RAIN); game.move.select(MoveId.SPLASH, 1); @@ -54,8 +54,8 @@ describe("Moves - Make It Rain", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.MAKE_IT_RAIN); @@ -70,7 +70,7 @@ describe("Moves - Make It Rain", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const enemyPokemon = game.scene.getEnemyField(); game.move.select(MoveId.MAKE_IT_RAIN); @@ -85,7 +85,7 @@ describe("Moves - Make It Rain", () => { it("should lower SPATK stat stage by 1 if it only hits the second target", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.MAKE_IT_RAIN); game.move.select(MoveId.SPLASH, 1); diff --git a/test/moves/mat_block.test.ts b/test/moves/mat-block.test.ts similarity index 97% rename from test/moves/mat_block.test.ts rename to test/moves/mat-block.test.ts index 954e2a8135d..0870a38f062 100644 --- a/test/moves/mat_block.test.ts +++ b/test/moves/mat-block.test.ts @@ -5,7 +5,7 @@ import { Stat } from "#enums/stat"; import { BerryPhase } from "#phases/berry-phase"; import { CommandPhase } from "#phases/command-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; diff --git a/test/moves/metal_burst.test.ts b/test/moves/metal-burst.test.ts similarity index 97% rename from test/moves/metal_burst.test.ts rename to test/moves/metal-burst.test.ts index c99b4324878..024f12d76af 100644 --- a/test/moves/metal_burst.test.ts +++ b/test/moves/metal-burst.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/metronome.test.ts b/test/moves/metronome.test.ts index 8ca9e63582e..2215c18f451 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -9,7 +9,7 @@ import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import type { RandomMoveAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -44,8 +44,8 @@ describe("Moves - Metronome", () => { it("should have one semi-invulnerable turn and deal damage on the second turn when a semi-invulnerable move is called", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.DIVE); game.move.select(MoveId.METRONOME); @@ -60,7 +60,7 @@ describe("Moves - Metronome", () => { it("should apply secondary effects of a move", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.WOOD_HAMMER); game.move.select(MoveId.METRONOME); @@ -71,7 +71,7 @@ describe("Moves - Metronome", () => { it("should recharge after using recharge move", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.HYPER_BEAM); vi.spyOn(allMoves[MoveId.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); @@ -137,7 +137,7 @@ describe("Moves - Metronome", () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.ROAR); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.METRONOME); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/miracle_eye.test.ts b/test/moves/miracle-eye.test.ts similarity index 92% rename from test/moves/miracle_eye.test.ts rename to test/moves/miracle-eye.test.ts index d77da857068..8ea6653eeb4 100644 --- a/test/moves/miracle_eye.test.ts +++ b/test/moves/miracle-eye.test.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -34,7 +34,7 @@ describe("Moves - Miracle Eye", () => { it("should allow Psychic moves to hit Dark types", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.CONFUSION); await game.toNextTurn(); diff --git a/test/moves/mirror_move.test.ts b/test/moves/mirror-move.test.ts similarity index 90% rename from test/moves/mirror_move.test.ts rename to test/moves/mirror-move.test.ts index 7f833c08bf5..50ea4274f49 100644 --- a/test/moves/mirror_move.test.ts +++ b/test/moves/mirror-move.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -56,7 +56,7 @@ describe("Moves - Mirror Move", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.SPDEF)).toBe(-2); + expect(game.field.getEnemyPokemon().getStatStage(Stat.SPDEF)).toBe(-2); }); it("should be able to copy status moves", async () => { @@ -67,7 +67,7 @@ describe("Moves - Mirror Move", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); it("should fail if the target has not used any moves", async () => { @@ -77,6 +77,6 @@ describe("Moves - Mirror Move", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); }); diff --git a/test/moves/mist.test.ts b/test/moves/mist.test.ts index b420b234e15..c1a3777e2a5 100644 --- a/test/moves/mist.test.ts +++ b/test/moves/mist.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/multi_target.test.ts b/test/moves/multi-target.test.ts similarity index 98% rename from test/moves/multi_target.test.ts rename to test/moves/multi-target.test.ts index a58fb8d3a6b..53480a6505f 100644 --- a/test/moves/multi_target.test.ts +++ b/test/moves/multi-target.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/nightmare.test.ts b/test/moves/nightmare.test.ts index 07579a6790c..0b7542f89d1 100644 --- a/test/moves/nightmare.test.ts +++ b/test/moves/nightmare.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Nightmare", () => { it("lowers enemy hp by 1/4 each turn while asleep", async () => { await game.classicMode.startBattle([SpeciesId.HYPNO]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const enemyMaxHP = enemyPokemon.hp; game.move.select(MoveId.NIGHTMARE); diff --git a/test/moves/obstruct.test.ts b/test/moves/obstruct.test.ts index ef589213c74..bc03075b2cc 100644 --- a/test/moves/obstruct.test.ts +++ b/test/moves/obstruct.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,8 +37,8 @@ describe("Moves - Obstruct", () => { game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); expect(player.isFullHp()).toBe(true); expect(enemy.getStatStage(Stat.DEF)).toBe(-2); @@ -51,8 +51,8 @@ describe("Moves - Obstruct", () => { await game.phaseInterceptor.to("MoveEffectPhase"); await game.move.forceMiss(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.isFullHp()).toBe(true); @@ -66,8 +66,8 @@ describe("Moves - Obstruct", () => { game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); expect(player.isFullHp()).toBe(true); expect(enemy.getStatStage(Stat.DEF)).toBe(0); @@ -80,7 +80,7 @@ describe("Moves - Obstruct", () => { game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); expect(player.getStatStage(Stat.ATK)).toBe(-1); }); @@ -92,6 +92,6 @@ describe("Moves - Obstruct", () => { game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.DEF)).toBe(0); + expect(game.field.getEnemyPokemon().getStatStage(Stat.DEF)).toBe(0); }); }); diff --git a/test/moves/octolock.test.ts b/test/moves/octolock.test.ts index bf2f8dc5865..f51c972f169 100644 --- a/test/moves/octolock.test.ts +++ b/test/moves/octolock.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Octolock", () => { it("lowers DEF and SPDEF stat stages of the target Pokemon by 1 each turn", async () => { await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(MoveId.OCTOLOCK); @@ -58,7 +58,7 @@ describe("Moves - Octolock", () => { game.override.enemyAbility(AbilityId.BIG_PECKS); await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(MoveId.OCTOLOCK); @@ -72,7 +72,7 @@ describe("Moves - Octolock", () => { game.override.enemyAbility(AbilityId.WHITE_SMOKE); await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(MoveId.OCTOLOCK); @@ -86,7 +86,7 @@ describe("Moves - Octolock", () => { game.override.enemyAbility(AbilityId.CLEAR_BODY); await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(MoveId.OCTOLOCK); @@ -99,7 +99,7 @@ describe("Moves - Octolock", () => { it("traps the target pokemon", async () => { await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // before Octolock - enemy should not be trapped expect(enemyPokemon.findTag(t => t instanceof TrappedTag)).toBeUndefined(); @@ -115,7 +115,7 @@ describe("Moves - Octolock", () => { game.override.enemyMoveset(MoveId.OCTOLOCK); await game.classicMode.startBattle([SpeciesId.GASTLY]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // before Octolock - player should not be trapped expect(playerPokemon.findTag(t => t instanceof TrappedTag)).toBeUndefined(); @@ -132,7 +132,7 @@ describe("Moves - Octolock", () => { it("does not work on pokemon with added ghost type via Trick-or-Treat", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); // before Octolock - pokemon should not be trapped expect(enemy.findTag(t => t instanceof TrappedTag)).toBeUndefined(); diff --git a/test/moves/order_up.test.ts b/test/moves/order-up.test.ts similarity index 72% rename from test/moves/order_up.test.ts rename to test/moves/order-up.test.ts index 2c9702fd6cb..2da7cc5daf8 100644 --- a/test/moves/order_up.test.ts +++ b/test/moves/order-up.test.ts @@ -6,7 +6,7 @@ import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { SpeciesId } from "#enums/species-id"; import type { EffectiveStat } from "#enums/stat"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -65,23 +65,4 @@ describe("Moves - Order Up", () => { affectedStats.forEach(st => expect(dondozo.getStatStage(st)).toBe(st === stat ? 3 : 2)); }, ); - - it("should be boosted by Sheer Force while still applying a stat boost", async () => { - game.override.passiveAbility(AbilityId.SHEER_FORCE).starterForms({ [SpeciesId.TATSUGIRI]: 0 }); - - await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); - - const [tatsugiri, dondozo] = game.scene.getPlayerField(); - - expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); - expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - - game.move.select(MoveId.ORDER_UP, 1, BattlerIndex.ENEMY); - expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); - - await game.phaseInterceptor.to("BerryPhase", false); - - expect(dondozo.waveData.abilitiesApplied.has(AbilityId.SHEER_FORCE)).toBeTruthy(); - expect(dondozo.getStatStage(Stat.ATK)).toBe(3); - }); }); diff --git a/test/moves/parting_shot.test.ts b/test/moves/parting-shot.test.ts similarity index 93% rename from test/moves/parting_shot.test.ts rename to test/moves/parting-shot.test.ts index 86a14330a3e..660edc4565a 100644 --- a/test/moves/parting_shot.test.ts +++ b/test/moves/parting-shot.test.ts @@ -6,7 +6,7 @@ import { BerryPhase } from "#phases/berry-phase"; import { FaintPhase } from "#phases/faint-phase"; import { MessagePhase } from "#phases/message-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, test } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Parting Shot", () => { game.override.enemySpecies(SpeciesId.POOCHYENA).ability(AbilityId.PRANKSTER); await game.classicMode.startBattle([SpeciesId.MURKROW, SpeciesId.MEOWTH]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).toBeDefined(); game.move.select(MoveId.PARTING_SHOT); @@ -53,7 +53,7 @@ describe("Moves - Parting Shot", () => { game.override.enemySpecies(SpeciesId.GHOLDENGO).enemyAbility(AbilityId.GOOD_AS_GOLD); await game.classicMode.startBattle([SpeciesId.MURKROW, SpeciesId.MEOWTH]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).toBeDefined(); game.move.select(MoveId.PARTING_SHOT); @@ -97,7 +97,7 @@ describe("Moves - Parting Shot", () => { // set up done await game.phaseInterceptor.to(TurnInitPhase, false); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).toBeDefined(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-6); @@ -120,7 +120,7 @@ describe("Moves - Parting Shot", () => { game.override.enemySpecies(SpeciesId.ALTARIA).enemyAbility(AbilityId.NONE).enemyMoveset([MoveId.MIST]); await game.classicMode.startBattle([SpeciesId.SNORLAX, SpeciesId.MEOWTH]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).toBeDefined(); game.move.select(MoveId.PARTING_SHOT); @@ -139,7 +139,7 @@ describe("Moves - Parting Shot", () => { game.override.enemySpecies(SpeciesId.TENTACOOL).enemyAbility(AbilityId.CLEAR_BODY); await game.classicMode.startBattle([SpeciesId.SNORLAX, SpeciesId.MEOWTH]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).toBeDefined(); game.move.select(MoveId.PARTING_SHOT); @@ -157,7 +157,7 @@ describe("Moves - Parting Shot", () => { async () => { await game.classicMode.startBattle([SpeciesId.MURKROW]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon).toBeDefined(); game.move.select(MoveId.PARTING_SHOT); @@ -186,7 +186,7 @@ describe("Moves - Parting Shot", () => { game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(0); expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MEOWTH); diff --git a/test/moves/payback.test.ts b/test/moves/payback.test.ts index 20e832288a3..f9692bd480f 100644 --- a/test/moves/payback.test.ts +++ b/test/moves/payback.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstance, vi } from "vitest"; diff --git a/test/moves/plasma_fists.test.ts b/test/moves/plasma-fists.test.ts similarity index 91% rename from test/moves/plasma_fists.test.ts rename to test/moves/plasma-fists.test.ts index 7a5ba77b62d..fb6e46feffa 100644 --- a/test/moves/plasma_fists.test.ts +++ b/test/moves/plasma-fists.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -60,8 +60,8 @@ describe("Moves - Plasma Fists", () => { await game.classicMode.startBattle([SpeciesId.ONIX]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "getMoveType"); game.move.select(MoveId.PLASMA_FISTS); @@ -78,8 +78,8 @@ describe("Moves - Plasma Fists", () => { await game.classicMode.startBattle([SpeciesId.DUSCLOPS]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); vi.spyOn(enemyPokemon, "getMoveType"); game.move.select(MoveId.PLASMA_FISTS); diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge-moves.test.ts similarity index 98% rename from test/moves/pledge_moves.test.ts rename to test/moves/pledge-moves.test.ts index bd0c981517c..7a9c4112d7d 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge-moves.test.ts @@ -7,7 +7,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -89,8 +89,8 @@ describe("Moves - Pledge Moves", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FIRE_PLEDGE); diff --git a/test/moves/pollen_puff.test.ts b/test/moves/pollen-puff.test.ts similarity index 95% rename from test/moves/pollen_puff.test.ts rename to test/moves/pollen-puff.test.ts index d372f72a390..76732a39c43 100644 --- a/test/moves/pollen_puff.test.ts +++ b/test/moves/pollen-puff.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -53,7 +53,7 @@ describe("Moves - Pollen Puff", () => { game.override.moveset([MoveId.POLLEN_PUFF]).ability(AbilityId.PARENTAL_BOND).enemyLevel(100); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const target = game.scene.getEnemyPokemon()!; + const target = game.field.getEnemyPokemon(); game.move.select(MoveId.POLLEN_PUFF); diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index 3e60c0d9fec..cbf70feebe6 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -6,7 +6,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { BerryPhase } from "#phases/berry-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -41,7 +41,7 @@ describe("Moves - Powder", () => { game.override.enemyMoveset([]); await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.changeMoveset(enemyPokemon, MoveId.EMBER); game.move.select(MoveId.POWDER); @@ -66,7 +66,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -80,7 +80,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -94,7 +94,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -108,7 +108,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -122,7 +122,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -137,7 +137,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -152,8 +152,8 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); // Turn 1: Roar away 1 opponent game.move.select(MoveId.ROAR, 0, BattlerIndex.ENEMY_2); @@ -184,8 +184,8 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -200,7 +200,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -214,7 +214,7 @@ describe("Moves - Powder", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER); @@ -227,7 +227,7 @@ describe("Moves - Powder", () => { game.override.enemyMoveset([MoveId.FIRE_PLEDGE, MoveId.GRASS_PLEDGE]).battleStyle("double"); await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER, 0, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, 1); @@ -244,7 +244,7 @@ describe("Moves - Powder", () => { game.override.enemyMoveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE]).battleStyle("double"); await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER, 0, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, 1); @@ -261,7 +261,7 @@ describe("Moves - Powder", () => { game.override.enemyMoveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE]).battleStyle("double"); await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.POWDER, 0, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, 1); diff --git a/test/moves/power_shift.test.ts b/test/moves/power-shift.test.ts similarity index 93% rename from test/moves/power_shift.test.ts rename to test/moves/power-shift.test.ts index 069d793a794..84bf6e230d4 100644 --- a/test/moves/power_shift.test.ts +++ b/test/moves/power-shift.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -32,7 +32,7 @@ describe("Moves - Power Shift", () => { it("switches the user's raw Attack stat with its raw Defense stat", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.setStat(Stat.ATK, 10, false); playerPokemon.setStat(Stat.DEF, 20, false); diff --git a/test/moves/power_split.test.ts b/test/moves/power-split.test.ts similarity index 90% rename from test/moves/power_split.test.ts rename to test/moves/power-split.test.ts index ef6fda419ca..9af57ebb191 100644 --- a/test/moves/power_split.test.ts +++ b/test/moves/power-split.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Power Split", () => { game.override.enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); const avgSpAtk = Math.floor((player.getStat(Stat.SPATK, false) + enemy.getStat(Stat.SPATK, false)) / 2); @@ -56,8 +56,8 @@ describe("Moves - Power Split", () => { game.override.enemyMoveset([MoveId.POWER_SPLIT]); await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); const avgSpAtk = Math.floor((player.getStat(Stat.SPATK, false) + enemy.getStat(Stat.SPATK, false)) / 2); diff --git a/test/moves/power_swap.test.ts b/test/moves/power-swap.test.ts similarity index 92% rename from test/moves/power_swap.test.ts rename to test/moves/power-swap.test.ts index cdd52fbc524..74cf37e33a5 100644 --- a/test/moves/power_swap.test.ts +++ b/test/moves/power-swap.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { BATTLE_STATS, Stat } from "#enums/stat"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Power Swap", () => { it("should swap the user's ATK and SPATK stat stages with the target's", async () => { await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(1)); diff --git a/test/moves/power_trick.test.ts b/test/moves/power-trick.test.ts similarity index 90% rename from test/moves/power_trick.test.ts rename to test/moves/power-trick.test.ts index 29a8107d891..a8013f1882b 100644 --- a/test/moves/power_trick.test.ts +++ b/test/moves/power-trick.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Power Trick", () => { it("swaps the user's ATK and DEF stats", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); const baseATK = player.getStat(Stat.ATK, false); const baseDEF = player.getStat(Stat.DEF, false); @@ -53,7 +53,7 @@ describe("Moves - Power Trick", () => { it("resets initial ATK and DEF stat swap when used consecutively", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); const baseATK = player.getStat(Stat.ATK, false); const baseDEF = player.getStat(Stat.DEF, false); @@ -74,7 +74,7 @@ describe("Moves - Power Trick", () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); await game.override.moveset([MoveId.POWER_TRICK, MoveId.BATON_PASS]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.addTag(BattlerTagType.POWER_TRICK); game.move.select(MoveId.BATON_PASS); @@ -82,7 +82,7 @@ describe("Moves - Power Trick", () => { await game.phaseInterceptor.to(TurnEndPhase); - const switchedPlayer = game.scene.getPlayerPokemon()!; + const switchedPlayer = game.field.getPlayerPokemon(); const baseATK = switchedPlayer.getStat(Stat.ATK); const baseDEF = switchedPlayer.getStat(Stat.DEF); @@ -95,14 +95,14 @@ describe("Moves - Power Trick", () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); await game.override.moveset([MoveId.POWER_TRICK, MoveId.TRANSFORM]); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); player.addTag(BattlerTagType.POWER_TRICK); game.move.select(MoveId.TRANSFORM); await game.phaseInterceptor.to(TurnEndPhase); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); const baseATK = enemy.getStat(Stat.ATK); const baseDEF = enemy.getStat(Stat.DEF); diff --git a/test/moves/protect.test.ts b/test/moves/protect.test.ts index 9fd54d44891..9a4856d0d99 100644 --- a/test/moves/protect.test.ts +++ b/test/moves/protect.test.ts @@ -1,15 +1,14 @@ -import { ArenaTrapTag } from "#data/arena-tag"; import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { ArenaTagSide } from "#enums/arena-tag-side"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; +import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Protect", () => { let phaserGame: Phaser.Game; @@ -27,90 +26,210 @@ describe("Moves - Protect", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override .battleStyle("single") - .moveset([MoveId.PROTECT]) + .moveset([MoveId.PROTECT, MoveId.SPIKY_SHIELD, MoveId.ENDURE, MoveId.SPLASH]) .enemySpecies(SpeciesId.SNORLAX) .enemyAbility(AbilityId.INSOMNIA) - .enemyMoveset([MoveId.TACKLE]) + .enemyMoveset(MoveId.LUMINA_CRASH) .startingLevel(100) .enemyLevel(100); }); - test("should protect the user from attacks", async () => { + it("should protect the user from attacks and their secondary effects", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const charizard = game.field.getPlayerPokemon(); game.move.select(MoveId.PROTECT); - await game.phaseInterceptor.to("BerryPhase", false); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); + expect(charizard.hp).toBe(charizard.getMaxHp()); + expect(charizard.getStatStage(Stat.SPDEF)).toBe(0); + expect(charizard); }); - test("should prevent secondary effects from the opponent's attack", async () => { - game.override.enemyMoveset([MoveId.CEASELESS_EDGE]); - vi.spyOn(allMoves[MoveId.CEASELESS_EDGE], "accuracy", "get").mockReturnValue(100); - + it.each<{ numTurns: number; chance: number }>([ + { numTurns: 1, chance: 3 }, + { numTurns: 2, chance: 9 }, + { numTurns: 3, chance: 27 }, + { numTurns: 4, chance: 81 }, + ])("should have a 1/$chance success rate after $numTurns successful uses", async ({ numTurns, chance }) => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const charizard = game.scene.getPlayerPokemon()!; + + // mock RNG roll to suceed unless exactly the desired chance is hit + vi.spyOn(charizard, "randBattleSeedInt").mockImplementation(range => (range !== chance ? 0 : 1)); + const conditionSpy = vi.spyOn(allMoves[MoveId.PROTECT]["conditions"][0], "apply"); + + // click protect many times + for (let x = 0; x < numTurns; x++) { + game.move.select(MoveId.PROTECT); + await game.toNextTurn(); + + expect(charizard.hp).toBe(charizard.getMaxHp()); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(conditionSpy).toHaveLastReturnedWith(true); + } game.move.select(MoveId.PROTECT); + await game.toNextTurn(); - await game.phaseInterceptor.to("BerryPhase", false); - - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(game.scene.arena.getTagOnSide(ArenaTrapTag, ArenaTagSide.ENEMY)).toBeUndefined(); + expect(charizard.hp).toBeLessThan(charizard.getMaxHp()); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(conditionSpy).toHaveLastReturnedWith(false); }); - test("should protect the user from status moves", async () => { - game.override.enemyMoveset([MoveId.CHARM]); - + it("should share fail chance with all move variants", async () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const charizard = game.field.getPlayerPokemon(); + charizard.summonData.moveHistory = [ + { move: MoveId.ENDURE, result: MoveResult.SUCCESS, targets: [BattlerIndex.PLAYER], useMode: MoveUseMode.NORMAL }, + { + move: MoveId.SPIKY_SHIELD, + result: MoveResult.SUCCESS, + targets: [BattlerIndex.PLAYER], + useMode: MoveUseMode.NORMAL, + }, + ]; + // force protect to fail on anything >=2 uses (1/9 chance) + vi.spyOn(charizard, "randBattleSeedInt").mockImplementation(range => (range >= 9 ? 1 : 0)); game.move.select(MoveId.PROTECT); + await game.toNextTurn(); - await game.phaseInterceptor.to("BerryPhase", false); - - expect(leadPokemon.getStatStage(Stat.ATK)).toBe(0); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); - test("should stop subsequent hits of a multi-hit move", async () => { + it("should reset fail chance on move failure", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.scene.getPlayerPokemon()!; + // force protect to always fail if RNG roll attempt is made + vi.spyOn(charizard, "randBattleSeedInt").mockReturnValue(1); + + game.move.select(MoveId.PROTECT); + await game.toNextTurn(); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + game.move.select(MoveId.SPIKY_SHIELD); + await game.toNextTurn(); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + + game.move.select(MoveId.SPIKY_SHIELD); + await game.toNextTurn(); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + }); + + it("should reset fail chance on using another move", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.scene.getPlayerPokemon()!; + // force protect to always fail if RNG roll attempt is made + vi.spyOn(charizard, "randBattleSeedInt").mockReturnValue(1); + + game.move.select(MoveId.PROTECT); + await game.toNextTurn(); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + game.move.select(MoveId.SPLASH); + await game.toNextTurn(); + + game.move.select(MoveId.PROTECT); + await game.toNextTurn(); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + }); + + it("should reset fail chance on starting a new wave", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.field.getPlayerPokemon(); + // force protect to always fail if RNG roll attempt is made + vi.spyOn(charizard, "randBattleSeedInt").mockReturnValue(1); + + game.move.select(MoveId.PROTECT); + // Wait until move end phase to kill opponent to ensure protect doesn't fail due to going last + await game.phaseInterceptor.to("MoveEndPhase"); + await game.doKillOpponents(); + await game.toNextWave(); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + game.move.select(MoveId.SPIKY_SHIELD); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + }); + + it("should not be blocked by Psychic Terrain", async () => { + game.override.ability(AbilityId.PSYCHIC_SURGE); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.scene.getPlayerPokemon()!; + game.move.select(MoveId.PROTECT); + await game.toNextTurn(); + + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + }); + + it("should stop subsequent hits of multi-hit moves", async () => { game.override.enemyMoveset([MoveId.TACHYON_CUTTER]); - await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const charizard = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.PROTECT); - await game.phaseInterceptor.to("BerryPhase", false); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); + expect(charizard.hp).toBe(charizard.getMaxHp()); expect(enemyPokemon.turnData.hitCount).toBe(1); }); - test("should fail if the user is the last to move in the turn", async () => { - game.override.enemyMoveset([MoveId.PROTECT]); - + it("should fail if the user moves last in the turn", async () => { + game.override.enemyMoveset(MoveId.PROTECT); await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const charizard = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.PROTECT); - await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("BerryPhase", false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); - expect(leadPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); + + it("should not block Protection-bypassing moves or Future Sight", async () => { + game.override.enemyMoveset([MoveId.FUTURE_SIGHT, MoveId.MIGHTY_CLEAVE, MoveId.SPORE]); + await game.classicMode.startBattle([SpeciesId.AGGRON]); + + const aggron = game.scene.getPlayerPokemon()!; + vi.spyOn(aggron, "randBattleSeedInt").mockReturnValue(0); + + // Turn 1: setup future sight + game.move.select(MoveId.PROTECT); + await game.move.forceEnemyMove(MoveId.FUTURE_SIGHT); + await game.toNextTurn(); + + // Turn 2: mighty cleave + game.move.select(MoveId.PROTECT); + await game.move.forceEnemyMove(MoveId.MIGHTY_CLEAVE); + await game.toNextTurn(); + + expect(aggron.hp).toBeLessThan(aggron.getMaxHp()); + + aggron.hp = aggron.getMaxHp(); + + // turn 3: Future Sight hits + game.move.select(MoveId.PROTECT); + await game.move.forceEnemyMove(MoveId.SPORE); + await game.toNextTurn(); + + expect(aggron.hp).toBeLessThan(aggron.getMaxHp()); + expect(aggron.status?.effect).toBeUndefined(); // check that protect actually worked + }); + + // TODO: Add test + it.todo("should not reset counter when throwing balls"); }); diff --git a/test/moves/psycho_shift.test.ts b/test/moves/psycho-shift.test.ts similarity index 78% rename from test/moves/psycho_shift.test.ts rename to test/moves/psycho-shift.test.ts index 6414a91543b..9e63798773c 100644 --- a/test/moves/psycho_shift.test.ts +++ b/test/moves/psycho-shift.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,13 +37,14 @@ describe("Moves - Psycho Shift", () => { it("If Psycho Shift is used on a Pokémon with Synchronize, the user of Psycho Shift will already be afflicted with a status condition when Synchronize activates", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const playerPokemon = game.scene.getPlayerPokemon(); - const enemyPokemon = game.scene.getEnemyPokemon(); - expect(enemyPokemon?.status).toBeUndefined(); + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); + expect(playerPokemon.status).toBeDefined(); + expect(enemyPokemon.status).toBeFalsy(); game.move.select(MoveId.PSYCHO_SHIFT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(playerPokemon?.status).toBeNull(); - expect(enemyPokemon?.status).toBeDefined(); + expect(playerPokemon.status).toBeNull(); + expect(enemyPokemon.status).toBeDefined(); }); }); diff --git a/test/moves/purify.test.ts b/test/moves/purify.test.ts index a5d7d86851b..1f3102616b5 100644 --- a/test/moves/purify.test.ts +++ b/test/moves/purify.test.ts @@ -5,7 +5,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import type { EnemyPokemon, PlayerPokemon } from "#field/pokemon"; import { MoveEndPhase } from "#phases/move-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -38,8 +38,8 @@ describe("Moves - Purify", () => { test("Purify heals opponent status effect and restores user hp", async () => { await game.classicMode.startBattle(); - const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; - const playerPokemon: PlayerPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon: EnemyPokemon = game.field.getEnemyPokemon(); + const playerPokemon: PlayerPokemon = game.field.getPlayerPokemon(); playerPokemon.hp = playerPokemon.getMaxHp() - 1; enemyPokemon.status = new Status(StatusEffect.BURN); @@ -55,7 +55,7 @@ describe("Moves - Purify", () => { test("Purify does not heal if opponent doesnt have any status effect", async () => { await game.classicMode.startBattle(); - const playerPokemon: PlayerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon: PlayerPokemon = game.field.getPlayerPokemon(); playerPokemon.hp = playerPokemon.getMaxHp() - 1; const playerInitialHp = playerPokemon.hp; diff --git a/test/moves/quash.test.ts b/test/moves/quash.test.ts index 632d37a4e13..91ff5581b9e 100644 --- a/test/moves/quash.test.ts +++ b/test/moves/quash.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/quick-guard.test.ts b/test/moves/quick-guard.test.ts new file mode 100644 index 00000000000..173d45b412f --- /dev/null +++ b/test/moves/quick-guard.test.ts @@ -0,0 +1,97 @@ +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Quick Guard", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .battleStyle("double") + .moveset([MoveId.QUICK_GUARD, MoveId.SPLASH, MoveId.SPIKY_SHIELD]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyMoveset(MoveId.QUICK_ATTACK) + .enemyAbility(AbilityId.BALL_FETCH) + .startingLevel(100) + .enemyLevel(100); + }); + + it("should protect the user and allies from priority moves", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.select(MoveId.QUICK_GUARD, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.QUICK_ATTACK, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(MoveId.QUICK_ATTACK, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(charizard.hp).toBe(charizard.getMaxHp()); + expect(blastoise.hp).toBe(blastoise.getMaxHp()); + }); + + it.each<{ name: string; move: MoveId; ability: AbilityId }>([ + { name: "Prankster", move: MoveId.SPORE, ability: AbilityId.PRANKSTER }, + { name: "Gale Wings", move: MoveId.BRAVE_BIRD, ability: AbilityId.GALE_WINGS }, + ])("should protect the user and allies from $name-boosted moves", async ({ move, ability }) => { + game.override.enemyMoveset(move).enemyAbility(ability); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.select(MoveId.QUICK_GUARD, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(move, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(move, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(charizard.hp).toBe(charizard.getMaxHp()); + expect(blastoise.hp).toBe(blastoise.getMaxHp()); + expect(charizard.status?.effect).toBeUndefined(); + expect(blastoise.status?.effect).toBeUndefined(); + }); + + it("should increment (but not respect) other protection moves' fail counters", async () => { + game.override.battleStyle("single"); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.scene.getPlayerPokemon()!; + // force protect to fail on anything >0 uses + vi.spyOn(charizard, "randBattleSeedInt").mockReturnValue(1); + + game.move.select(MoveId.QUICK_GUARD); + await game.toNextTurn(); + + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + game.move.select(MoveId.QUICK_GUARD); + await game.toNextTurn(); + + // ignored fail chance + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + game.move.select(MoveId.SPIKY_SHIELD); + await game.toNextTurn(); + + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); +}); diff --git a/test/moves/quick_guard.test.ts b/test/moves/quick_guard.test.ts deleted file mode 100644 index 5e2e1ae1f24..00000000000 --- a/test/moves/quick_guard.test.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { AbilityId } from "#enums/ability-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { MoveId } from "#enums/move-id"; -import { MoveResult } from "#enums/move-result"; -import { SpeciesId } from "#enums/species-id"; -import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; - -describe("Moves - Quick Guard", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - - game.override - .battleStyle("double") - .moveset([MoveId.QUICK_GUARD, MoveId.SPLASH, MoveId.FOLLOW_ME]) - .enemySpecies(SpeciesId.SNORLAX) - .enemyMoveset([MoveId.QUICK_ATTACK]) - .enemyAbility(AbilityId.INSOMNIA) - .startingLevel(100) - .enemyLevel(100); - }); - - test("should protect the user and allies from priority moves", async () => { - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const playerPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.QUICK_GUARD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to("BerryPhase", false); - - playerPokemon.forEach(p => expect(p.hp).toBe(p.getMaxHp())); - }); - - test("should protect the user and allies from Prankster-boosted moves", async () => { - game.override.enemyAbility(AbilityId.PRANKSTER).enemyMoveset([MoveId.GROWL]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const playerPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.QUICK_GUARD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to("BerryPhase", false); - - playerPokemon.forEach(p => expect(p.getStatStage(Stat.ATK)).toBe(0)); - }); - - test("should stop subsequent hits of a multi-hit priority move", async () => { - game.override.enemyMoveset([MoveId.WATER_SHURIKEN]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const playerPokemon = game.scene.getPlayerField(); - const enemyPokemon = game.scene.getEnemyField(); - - game.move.select(MoveId.QUICK_GUARD); - game.move.select(MoveId.FOLLOW_ME, 1); - - await game.phaseInterceptor.to("BerryPhase", false); - - playerPokemon.forEach(p => expect(p.hp).toBe(p.getMaxHp())); - enemyPokemon.forEach(p => expect(p.turnData.hitCount).toBe(1)); - }); - - test("should fail if the user is the last to move in the turn", async () => { - game.override.battleStyle("single").enemyMoveset([MoveId.QUICK_GUARD]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.QUICK_GUARD); - - await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - - await game.phaseInterceptor.to("BerryPhase", false); - - expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); - expect(playerPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); - }); -}); diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage-fist.test.ts similarity index 92% rename from test/moves/rage_fist.test.ts rename to test/moves/rage-fist.test.ts index d7928ddd310..61164b5710c 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage-fist.test.ts @@ -5,7 +5,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Move } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -65,7 +65,7 @@ describe("Moves - Rage Fist", () => { await game.phaseInterceptor.to("TurnEndPhase"); // hit 8 times, but nothing else - expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(8); + expect(game.field.getPlayerPokemon().battleData.hitCount).toBe(8); expect(move.calculateBattlePower).toHaveLastReturnedWith(350); }); @@ -80,7 +80,7 @@ describe("Moves - Rage Fist", () => { await game.toNextTurn(); // no increase due to substitute - expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(0); + expect(game.field.getPlayerPokemon().battleData.hitCount).toBe(0); // remove substitute and get confused game.move.select(MoveId.TIDY_UP); @@ -95,7 +95,7 @@ describe("Moves - Rage Fist", () => { await game.toNextTurn(); // didn't go up from hitting ourself - expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(0); + expect(game.field.getPlayerPokemon().battleData.hitCount).toBe(0); }); it("should maintain hits recieved between wild waves", async () => { @@ -105,20 +105,20 @@ describe("Moves - Rage Fist", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); - expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(2); + expect(game.field.getPlayerPokemon().battleData.hitCount).toBe(2); game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(4); + expect(game.field.getPlayerPokemon().battleData.hitCount).toBe(4); expect(move.calculateBattlePower).toHaveLastReturnedWith(250); }); it("should reset hits recieved before trainer battles", async () => { await game.classicMode.startBattle([SpeciesId.IRON_HANDS]); - const ironHands = game.scene.getPlayerPokemon()!; + const ironHands = game.field.getPlayerPokemon(); expect(ironHands).toBeDefined(); // beat up a magikarp @@ -184,7 +184,7 @@ describe("Moves - Rage Fist", () => { game.move.select(MoveId.RAGE_FIST); await game.phaseInterceptor.to("MoveEndPhase"); - const charizard = game.scene.getPlayerPokemon()!; + const charizard = game.field.getPlayerPokemon(); expect(charizard).toBeDefined(); expect(charizard.species.speciesId).toBe(SpeciesId.CHARIZARD); expect(move.calculateBattlePower).toHaveLastReturnedWith(150); diff --git a/test/moves/rage_powder.test.ts b/test/moves/rage-powder.test.ts similarity index 97% rename from test/moves/rage_powder.test.ts rename to test/moves/rage-powder.test.ts index a0b836f0917..9ae81720e32 100644 --- a/test/moves/rage_powder.test.ts +++ b/test/moves/rage-powder.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; diff --git a/test/moves/reflect_type.test.ts b/test/moves/reflect-type.test.ts similarity index 96% rename from test/moves/reflect_type.test.ts rename to test/moves/reflect-type.test.ts index 499c167bee0..ceaff4019b3 100644 --- a/test/moves/reflect_type.test.ts +++ b/test/moves/reflect-type.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index 47c49ea4d36..b8fa2b1ce80 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -8,7 +8,7 @@ import { SpeciesId } from "#enums/species-id"; import type { Pokemon } from "#field/pokemon"; import type { Move } from "#moves/move"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { NumberHolder } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -52,8 +52,8 @@ describe("Moves - Reflect", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -71,8 +71,8 @@ describe("Moves - Reflect", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -88,8 +88,8 @@ describe("Moves - Reflect", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -105,8 +105,8 @@ describe("Moves - Reflect", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -122,8 +122,8 @@ describe("Moves - Reflect", () => { await game.phaseInterceptor.to(TurnEndPhase); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); expect(mockedDmg).toBe(allMoves[moveToUse].power); diff --git a/test/moves/relic_song.test.ts b/test/moves/relic-song.test.ts similarity index 90% rename from test/moves/relic_song.test.ts rename to test/moves/relic-song.test.ts index 36c46769515..c834ccbee24 100644 --- a/test/moves/relic_song.test.ts +++ b/test/moves/relic-song.test.ts @@ -3,7 +3,7 @@ import { Challenges } from "#enums/challenges"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -34,7 +34,7 @@ describe("Moves - Relic Song", () => { it("swaps Meloetta's form between Aria and Pirouette", async () => { await game.classicMode.startBattle([SpeciesId.MELOETTA]); - const meloetta = game.scene.getPlayerPokemon()!; + const meloetta = game.field.getPlayerPokemon(); game.move.select(MoveId.RELIC_SONG); await game.toNextTurn(); @@ -51,7 +51,7 @@ describe("Moves - Relic Song", () => { game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.PSYCHIC + 1, 0); await game.challengeMode.startBattle([SpeciesId.MELOETTA]); - const meloetta = game.scene.getPlayerPokemon()!; + const meloetta = game.field.getPlayerPokemon(); expect(meloetta.formIndex).toBe(0); @@ -66,7 +66,7 @@ describe("Moves - Relic Song", () => { game.override.starterForms({ [SpeciesId.MELOETTA]: 1 }).startingWave(10); await game.classicMode.startBattle([SpeciesId.MELOETTA]); - const meloetta = game.scene.getPlayerPokemon()!; + const meloetta = game.field.getPlayerPokemon(); game.move.select(MoveId.SPLASH); await game.doKillOpponents(); diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 3eefbe3ceb6..9e564c52a99 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -2,7 +2,7 @@ import { allMoves } from "#data/data-lists"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Move } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/revival_blessing.test.ts b/test/moves/revival-blessing.test.ts similarity index 96% rename from test/moves/revival_blessing.test.ts rename to test/moves/revival-blessing.test.ts index a9a6bd0fd7d..d14fa89c738 100644 --- a/test/moves/revival_blessing.test.ts +++ b/test/moves/revival-blessing.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -41,7 +41,7 @@ describe("Moves - Revival Blessing", () => { game.doSelectPartyPokemon(1, "SwitchPhase"); await game.toNextTurn(); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); expect(player.species.speciesId).toBe(SpeciesId.MAGIKARP); game.move.select(MoveId.REVIVAL_BLESSING); @@ -82,7 +82,7 @@ describe("Moves - Revival Blessing", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase", false); - const player = game.scene.getPlayerPokemon()!; + const player = game.field.getPlayerPokemon(); expect(player.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); diff --git a/test/moves/role_play.test.ts b/test/moves/role-play.test.ts similarity index 86% rename from test/moves/role_play.test.ts rename to test/moves/role-play.test.ts index dda7f319cd5..ff5d487ddf0 100644 --- a/test/moves/role_play.test.ts +++ b/test/moves/role-play.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Role Play", () => { game.move.select(MoveId.ROLE_PLAY); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getPlayerPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate post-summon abilities", async () => { @@ -48,6 +48,6 @@ describe("Moves - Role Play", () => { game.move.select(MoveId.ROLE_PLAY); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); }); }); diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index eed61f82ab4..c1c66f4ab39 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -2,7 +2,7 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/roost.test.ts b/test/moves/roost.test.ts index 30a71721d03..bb567a41cd0 100644 --- a/test/moves/roost.test.ts +++ b/test/moves/roost.test.ts @@ -5,7 +5,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -49,7 +49,7 @@ describe("Moves - Roost", () => { test("Non flying type uses roost -> no type change, took damage", async () => { await game.classicMode.startBattle([SpeciesId.DUNSPARCE]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerPokemonStartingHP = playerPokemon.hp; game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -73,7 +73,7 @@ describe("Moves - Roost", () => { test("Pure flying type -> becomes normal after roost and takes damage from ground moves -> regains flying", async () => { await game.classicMode.startBattle([SpeciesId.TORNADUS]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerPokemonStartingHP = playerPokemon.hp; game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -97,7 +97,7 @@ describe("Moves - Roost", () => { test("Dual X/flying type -> becomes type X after roost and takes damage from ground moves -> regains flying", async () => { await game.classicMode.startBattle([SpeciesId.HAWLUCHA]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerPokemonStartingHP = playerPokemon.hp; game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -122,7 +122,7 @@ describe("Moves - Roost", () => { test("Pokemon with levitate after using roost should lose flying type but still be unaffected by ground moves", async () => { game.override.starterForms({ [SpeciesId.ROTOM]: 4 }); await game.classicMode.startBattle([SpeciesId.ROTOM]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerPokemonStartingHP = playerPokemon.hp; game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -146,7 +146,7 @@ describe("Moves - Roost", () => { test("A fire/flying type that uses burn up, then roost should be typeless until end of turn", async () => { await game.classicMode.startBattle([SpeciesId.MOLTRES]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerPokemonStartingHP = playerPokemon.hp; game.move.select(MoveId.BURN_UP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -182,7 +182,7 @@ describe("Moves - Roost", () => { test("An electric/flying type that uses double shock, then roost should be typeless until end of turn", async () => { game.override.enemySpecies(SpeciesId.ZEKROM); await game.classicMode.startBattle([SpeciesId.ZAPDOS]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); const playerPokemonStartingHP = playerPokemon.hp; game.move.select(MoveId.DOUBLE_SHOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -223,7 +223,7 @@ describe("Moves - Roost", () => { MoveId.TRICK_OR_TREAT, ]); await game.classicMode.startBattle([SpeciesId.MOLTRES]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.ROOST); await game.phaseInterceptor.to(MoveEffectPhase); diff --git a/test/moves/round.test.ts b/test/moves/round.test.ts index a706fd15e9b..517e2202d4d 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/safeguard.test.ts b/test/moves/safeguard.test.ts index 2651d8473be..2157f01fee4 100644 --- a/test/moves/safeguard.test.ts +++ b/test/moves/safeguard.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Safeguard", () => { it("protects from damaging moves with additional effects", async () => { await game.classicMode.startBattle(); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.NUZZLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -48,7 +48,7 @@ describe("Moves - Safeguard", () => { it("protects from status moves", async () => { await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SPORE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -60,7 +60,7 @@ describe("Moves - Safeguard", () => { it("protects from confusion", async () => { game.override.moveset([MoveId.CONFUSE_RAY]); await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.CONFUSE_RAY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -89,7 +89,7 @@ describe("Moves - Safeguard", () => { it("protects from Yawn", async () => { await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.YAWN); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); @@ -100,7 +100,7 @@ describe("Moves - Safeguard", () => { it("doesn't protect from already existing Yawn", async () => { await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.YAWN); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -115,7 +115,7 @@ describe("Moves - Safeguard", () => { it("doesn't protect from self-inflicted status from Rest or Flame Orb", async () => { game.override.enemyHeldItems([{ name: "FLAME_ORB" }]); await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.hp = 1; game.move.select(MoveId.SPLASH); diff --git a/test/moves/scale_shot.test.ts b/test/moves/scale-shot.test.ts similarity index 94% rename from test/moves/scale_shot.test.ts rename to test/moves/scale-shot.test.ts index 4e420f6b3ef..4a3369ce9fc 100644 --- a/test/moves/scale_shot.test.ts +++ b/test/moves/scale-shot.test.ts @@ -8,7 +8,7 @@ import { DamageAnimPhase } from "#phases/damage-anim-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -42,7 +42,7 @@ describe("Moves - Scale Shot", () => { game.override.enemySpecies(SpeciesId.FORRETRESS); await game.classicMode.startBattle([SpeciesId.MINCCINO]); - const minccino = game.scene.getPlayerPokemon()!; + const minccino = game.field.getPlayerPokemon(); game.move.select(MoveId.SCALE_SHOT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -70,7 +70,7 @@ describe("Moves - Scale Shot", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); await game.classicMode.startBattle([SpeciesId.MINCCINO]); - const minccino = game.scene.getPlayerPokemon()!; + const minccino = game.field.getPlayerPokemon(); game.move.select(MoveId.SCALE_SHOT); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/moves/secret_power.test.ts b/test/moves/secret-power.test.ts similarity index 96% rename from test/moves/secret_power.test.ts rename to test/moves/secret-power.test.ts index 8ec69fb276a..b8f713f59cf 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret-power.test.ts @@ -8,7 +8,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -43,7 +43,7 @@ describe("Moves - Secret Power", () => { vi.spyOn(allMoves[MoveId.SECRET_POWER], "chance", "get").mockReturnValue(100); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); // No Terrain + BiomeId.VOLCANO --> Burn game.move.select(MoveId.SECRET_POWER); diff --git a/test/moves/shed_tail.test.ts b/test/moves/shed-tail.test.ts similarity index 90% rename from test/moves/shed_tail.test.ts rename to test/moves/shed-tail.test.ts index 8a837a642c9..b53af269875 100644 --- a/test/moves/shed_tail.test.ts +++ b/test/moves/shed-tail.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -34,14 +34,14 @@ describe("Moves - Shed Tail", () => { it("transfers a Substitute doll to the switched in Pokemon", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const magikarp = game.scene.getPlayerPokemon()!; + const magikarp = game.field.getPlayerPokemon(); game.move.select(MoveId.SHED_TAIL); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase", false); - const feebas = game.scene.getPlayerPokemon()!; + const feebas = game.field.getPlayerPokemon(); const substituteTag = feebas.getTag(SubstituteTag); expect(feebas).not.toBe(magikarp); @@ -55,7 +55,7 @@ describe("Moves - Shed Tail", () => { it("should fail if no ally is available to switch in", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const magikarp = game.scene.getPlayerPokemon()!; + const magikarp = game.field.getPlayerPokemon(); expect(game.scene.getPlayerParty().length).toBe(1); game.move.select(MoveId.SHED_TAIL); diff --git a/test/moves/shell_side_arm.test.ts b/test/moves/shell-side-arm.test.ts similarity index 97% rename from test/moves/shell_side_arm.test.ts rename to test/moves/shell-side-arm.test.ts index 685cebce4cf..32f37fcc8ac 100644 --- a/test/moves/shell_side_arm.test.ts +++ b/test/moves/shell-side-arm.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { Move, ShellSideArmCategoryAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/shell_trap.test.ts b/test/moves/shell-trap.test.ts similarity index 96% rename from test/moves/shell_trap.test.ts rename to test/moves/shell-trap.test.ts index c484d1195aa..5ecad3116af 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell-trap.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#phases/berry-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; import { MovePhase } from "#phases/move-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -133,8 +133,8 @@ describe("Moves - Shell Trap", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SHELL_TRAP); diff --git a/test/moves/simple_beam.test.ts b/test/moves/simple-beam.test.ts similarity index 88% rename from test/moves/simple_beam.test.ts rename to test/moves/simple-beam.test.ts index 106977aea84..a5ad6c5af8f 100644 --- a/test/moves/simple_beam.test.ts +++ b/test/moves/simple-beam.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,6 +37,6 @@ describe("Moves - Simple Beam", () => { game.move.select(MoveId.SIMPLE_BEAM); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.SIMPLE); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.SIMPLE); }); }); diff --git a/test/moves/sketch.test.ts b/test/moves/sketch.test.ts index 10ad31c35eb..ed010b8a883 100644 --- a/test/moves/sketch.test.ts +++ b/test/moves/sketch.test.ts @@ -7,7 +7,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { RandomMoveAttr } from "#moves/move"; import { PokemonMove } from "#moves/pokemon-move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Sketch", () => { it("Sketch should not fail even if a previous Sketch failed to retrieve a valid move and ran out of PP", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // can't use normal moveset override because we need to check moveset changes playerPokemon.moveset = [new PokemonMove(MoveId.SKETCH), new PokemonMove(MoveId.SKETCH)]; @@ -60,8 +60,8 @@ describe("Moves - Sketch", () => { it("Sketch should retrieve the most recent valid move from its target history", async () => { game.override.enemyStatusEffect(StatusEffect.PARALYSIS); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); playerPokemon.moveset = [new PokemonMove(MoveId.SKETCH), new PokemonMove(MoveId.GROWL)]; game.move.select(MoveId.GROWL); @@ -88,7 +88,7 @@ describe("Moves - Sketch", () => { game.override.enemyMoveset([MoveId.METRONOME]); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.moveset = [new PokemonMove(MoveId.SKETCH)]; // Opponent uses Metronome -> False Swipe, then player uses Sketch, which should sketch Metronome diff --git a/test/moves/skill_swap.test.ts b/test/moves/skill-swap.test.ts similarity index 82% rename from test/moves/skill_swap.test.ts rename to test/moves/skill-swap.test.ts index d5ba509b0df..1b3c0255895 100644 --- a/test/moves/skill_swap.test.ts +++ b/test/moves/skill-swap.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -39,8 +39,8 @@ describe("Moves - Skill Swap", () => { game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.ADAPTABILITY); + expect(game.field.getPlayerPokemon().getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.field.getEnemyPokemon().getAbility().id).toBe(AbilityId.ADAPTABILITY); }); it("should activate post-summon abilities", async () => { @@ -51,6 +51,6 @@ describe("Moves - Skill Swap", () => { await game.phaseInterceptor.to("BerryPhase"); // player atk should be -1 after opponent gains intimidate and it activates - expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(-1); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)).toBe(-1); }); }); diff --git a/test/moves/sleep_talk.test.ts b/test/moves/sleep-talk.test.ts similarity index 84% rename from test/moves/sleep_talk.test.ts rename to test/moves/sleep-talk.test.ts index 972c54463e2..9e8db2e3615 100644 --- a/test/moves/sleep_talk.test.ts +++ b/test/moves/sleep-talk.test.ts @@ -4,7 +4,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -42,7 +42,7 @@ describe("Moves - Sleep Talk", () => { game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should fail if the user has no valid moves", async () => { @@ -51,7 +51,7 @@ describe("Moves - Sleep Talk", () => { game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should call a random valid move if the user is asleep", async () => { @@ -60,7 +60,7 @@ describe("Moves - Sleep Talk", () => { game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)); + expect(game.field.getPlayerPokemon().getStatStage(Stat.ATK)); }); it("should apply secondary effects of a move", async () => { @@ -70,6 +70,6 @@ describe("Moves - Sleep Talk", () => { game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.isFullHp()).toBeFalsy(); // Wood Hammer recoil effect should be applied + expect(game.field.getPlayerPokemon().isFullHp()).toBeFalsy(); // Wood Hammer recoil effect should be applied }); }); diff --git a/test/moves/solar_beam.test.ts b/test/moves/solar-beam.test.ts similarity index 92% rename from test/moves/solar_beam.test.ts rename to test/moves/solar-beam.test.ts index 32400abfc0f..6a413776972 100644 --- a/test/moves/solar_beam.test.ts +++ b/test/moves/solar-beam.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -38,8 +38,8 @@ describe("Moves - Solar Beam", () => { it("should deal damage in two turns if no weather is active", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SOLAR_BEAM); @@ -66,8 +66,8 @@ describe("Moves - Solar Beam", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SOLAR_BEAM); diff --git a/test/moves/sparkly_swirl.test.ts b/test/moves/sparkly-swirl.test.ts similarity index 96% rename from test/moves/sparkly_swirl.test.ts rename to test/moves/sparkly-swirl.test.ts index d58b6efe990..7cda68438e1 100644 --- a/test/moves/sparkly_swirl.test.ts +++ b/test/moves/sparkly-swirl.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Sparkly Swirl", () => { game.override.battleStyle("double").statusEffect(StatusEffect.BURN); await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer, partyPokemon] = game.scene.getPlayerParty(); - const leftOpp = game.scene.getEnemyPokemon()!; + const leftOpp = game.field.getEnemyPokemon(); vi.spyOn(leftPlayer, "resetStatus"); vi.spyOn(rightPlayer, "resetStatus"); diff --git a/test/moves/spectral_thief.test.ts b/test/moves/spectral-thief.test.ts similarity index 86% rename from test/moves/spectral_thief.test.ts rename to test/moves/spectral-thief.test.ts index acb3e22cf6c..45005ccf32d 100644 --- a/test/moves/spectral_thief.test.ts +++ b/test/moves/spectral-thief.test.ts @@ -5,7 +5,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Spectral Thief", () => { it("should steal max possible positive stat changes and ignore negative ones.", async () => { await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 6); enemy.setStatStage(Stat.DEF, -6); @@ -69,8 +69,8 @@ describe("Moves - Spectral Thief", () => { game.override.enemySpecies(SpeciesId.MAGIKARP).enemyLevel(50); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const moveToCheck = allMoves[MoveId.SPECTRAL_THIEF]; const dmgBefore = enemy.getAttackDamage({ source: player, move: moveToCheck }).damage; @@ -88,8 +88,8 @@ describe("Moves - Spectral Thief", () => { game.override.ability(AbilityId.CONTRARY); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 6); @@ -106,8 +106,8 @@ describe("Moves - Spectral Thief", () => { game.override.ability(AbilityId.SIMPLE); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 3); @@ -124,8 +124,8 @@ describe("Moves - Spectral Thief", () => { game.override.enemyAbility(AbilityId.CLEAR_BODY); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 3); @@ -142,8 +142,8 @@ describe("Moves - Spectral Thief", () => { game.override.enemyAbility(AbilityId.WHITE_SMOKE); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 3); @@ -160,8 +160,8 @@ describe("Moves - Spectral Thief", () => { game.override.enemyAbility(AbilityId.HYPER_CUTTER); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 3); @@ -178,8 +178,8 @@ describe("Moves - Spectral Thief", () => { game.override.enemyMoveset(MoveId.SUBSTITUTE); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 3); @@ -198,8 +198,8 @@ describe("Moves - Spectral Thief", () => { game.override.enemyMoveset(MoveId.PROTECT); await game.classicMode.startBattle(); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); enemy.setStatStage(Stat.ATK, 3); diff --git a/test/moves/speed_swap.test.ts b/test/moves/speed-swap.test.ts similarity index 89% rename from test/moves/speed_swap.test.ts rename to test/moves/speed-swap.test.ts index e0c06bfb0f7..1b8e1d24a61 100644 --- a/test/moves/speed_swap.test.ts +++ b/test/moves/speed-swap.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,8 +36,8 @@ describe("Moves - Speed Swap", () => { it("should swap the user's SPD and the target's SPD stats", async () => { await game.classicMode.startBattle([SpeciesId.INDEEDEE]); - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const playerSpd = player.getStat(Stat.SPD, false); const enemySpd = enemy.getStat(Stat.SPD, false); diff --git a/test/moves/spikes.test.ts b/test/moves/spikes.test.ts index 424aecb5c3c..0055945cef9 100644 --- a/test/moves/spikes.test.ts +++ b/test/moves/spikes.test.ts @@ -4,7 +4,7 @@ import { ArenaTagSide } from "#enums/arena-tag-side"; import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/spit_up.test.ts b/test/moves/spit-up.test.ts similarity index 91% rename from test/moves/spit_up.test.ts rename to test/moves/spit-up.test.ts index 03e0cee1e4b..8b110b0ea04 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit-up.test.ts @@ -9,7 +9,7 @@ import { Stat } from "#enums/stat"; import type { Move } from "#moves/move"; import { MovePhase } from "#phases/move-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -50,7 +50,7 @@ describe("Moves - Spit Up", () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); const stockpilingTag = pokemon.getTag(StockpilingTag)!; @@ -72,7 +72,7 @@ describe("Moves - Spit Up", () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); pokemon.addTag(BattlerTagType.STOCKPILING); @@ -95,7 +95,7 @@ describe("Moves - Spit Up", () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); pokemon.addTag(BattlerTagType.STOCKPILING); pokemon.addTag(BattlerTagType.STOCKPILING); @@ -117,7 +117,7 @@ describe("Moves - Spit Up", () => { it("fails without stacks", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); const stockpilingTag = pokemon.getTag(StockpilingTag)!; expect(stockpilingTag).toBeUndefined(); @@ -128,7 +128,7 @@ describe("Moves - Spit Up", () => { expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: MoveId.SPIT_UP, result: MoveResult.FAIL, - targets: [game.scene.getEnemyPokemon()!.getBattlerIndex()], + targets: [game.field.getEnemyPokemon().getBattlerIndex()], }); expect(spitUp.calculateBattlePower).not.toHaveBeenCalled(); @@ -138,7 +138,7 @@ describe("Moves - Spit Up", () => { it("decreases stats based on stored values (both boosts equal)", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); const stockpilingTag = pokemon.getTag(StockpilingTag)!; @@ -155,7 +155,7 @@ describe("Moves - Spit Up", () => { expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: MoveId.SPIT_UP, result: MoveResult.SUCCESS, - targets: [game.scene.getEnemyPokemon()!.getBattlerIndex()], + targets: [game.field.getEnemyPokemon().getBattlerIndex()], }); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); @@ -169,7 +169,7 @@ describe("Moves - Spit Up", () => { it("decreases stats based on stored values (different boosts)", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); const stockpilingTag = pokemon.getTag(StockpilingTag)!; @@ -187,7 +187,7 @@ describe("Moves - Spit Up", () => { expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: MoveId.SPIT_UP, result: MoveResult.SUCCESS, - targets: [game.scene.getEnemyPokemon()!.getBattlerIndex()], + targets: [game.field.getEnemyPokemon().getBattlerIndex()], }); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); diff --git a/test/moves/spite.test.ts b/test/moves/spite.test.ts new file mode 100644 index 00000000000..56c1be76198 --- /dev/null +++ b/test/moves/spite.test.ts @@ -0,0 +1,126 @@ +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Spite", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .ability(AbilityId.BALL_FETCH) + .battleStyle("single") + .criticalHits(false) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .startingLevel(100) + .enemyLevel(100); + }); + + it("should reduce the PP of the target's last used move by 4", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const karp = game.field.getEnemyPokemon(); + game.move.changeMoveset(karp, [MoveId.SPLASH, MoveId.TACKLE]); + + game.move.use(MoveId.SPITE); + await game.move.selectEnemyMove(MoveId.TACKLE); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toNextTurn(); + + expect(karp).toHaveUsedPP(MoveId.TACKLE, 1); + + game.move.use(MoveId.SPITE); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + expect(karp).toHaveUsedPP(MoveId.TACKLE, 4 + 1); + }); + + it("should fail if the target has not used a move", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const karp = game.field.getEnemyPokemon(); + game.move.changeMoveset(karp, [MoveId.SPLASH, MoveId.TACKLE]); + + game.move.use(MoveId.SPITE); + await game.move.selectEnemyMove(MoveId.TACKLE); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + const feebas = game.field.getPlayerPokemon(); + expect(feebas).toHaveUsedMove({ move: MoveId.SPITE, result: MoveResult.FAIL }); + }); + + it("should fail if the target's last used move is out of PP", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const karp = game.field.getEnemyPokemon(); + game.move.changeMoveset(karp, [MoveId.TACKLE]); + karp.moveset[0].ppUsed = 0; + + game.move.use(MoveId.SPITE); + await game.move.selectEnemyMove(MoveId.TACKLE); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + const feebas = game.field.getPlayerPokemon(); + expect(feebas).toHaveUsedMove({ move: MoveId.SPITE, result: MoveResult.FAIL }); + }); + + it("should fail if the target's last used move is not in their moveset", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const karp = game.field.getEnemyPokemon(); + game.move.changeMoveset(karp, [MoveId.TACKLE]); + // Fake magikarp having used Splash the turn prior + karp.pushMoveHistory({ move: MoveId.SPLASH, targets: [BattlerIndex.ENEMY], useMode: MoveUseMode.NORMAL }); + + game.move.use(MoveId.SPITE); + await game.move.selectEnemyMove(MoveId.TACKLE); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + const feebas = game.field.getPlayerPokemon(); + expect(feebas).toHaveUsedMove({ move: MoveId.SPITE, result: MoveResult.FAIL }); + }); + + it("should ignore virtual and Dancer-induced moves", async () => { + game.override.battleStyle("double").enemyAbility(AbilityId.DANCER); + game.move.forceMetronomeMove(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const [karp1, karp2] = game.scene.getEnemyField(); + game.move.changeMoveset(karp1, [MoveId.SPLASH, MoveId.METRONOME, MoveId.SWORDS_DANCE]); + game.move.changeMoveset(karp2, [MoveId.SWORDS_DANCE, MoveId.TACKLE]); + + game.move.use(MoveId.SPITE); + await game.move.selectEnemyMove(MoveId.METRONOME); + await game.move.selectEnemyMove(MoveId.SWORDS_DANCE); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); + await game.toEndOfTurn(); + + // Spite ignored virtual splash and swords dance, instead only docking from metronome + expect(karp1).toHaveUsedPP(MoveId.SPLASH, 0); + expect(karp1).toHaveUsedPP(MoveId.SWORDS_DANCE, 0); + expect(karp1).toHaveUsedPP(MoveId.METRONOME, 5); + }); +}); diff --git a/test/moves/spotlight.test.ts b/test/moves/spotlight.test.ts index 4feff5eb719..69510c1d852 100644 --- a/test/moves/spotlight.test.ts +++ b/test/moves/spotlight.test.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; diff --git a/test/moves/steamroller.test.ts b/test/moves/steamroller.test.ts index a9da98c1429..75b2b66560e 100644 --- a/test/moves/steamroller.test.ts +++ b/test/moves/steamroller.test.ts @@ -4,7 +4,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { DamageCalculationResult } from "#types/damage-result"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -32,12 +32,12 @@ describe("Moves - Steamroller", () => { game.override.enemySpecies(SpeciesId.DITTO).enemyMoveset(MoveId.MINIMIZE); await game.classicMode.startBattle([SpeciesId.IRON_BOULDER]); - const ditto = game.scene.getEnemyPokemon()!; + const ditto = game.field.getEnemyPokemon(); vi.spyOn(ditto, "getAttackDamage"); ditto.hp = 5000; const steamroller = allMoves[MoveId.STEAMROLLER]; vi.spyOn(steamroller, "calculateBattleAccuracy"); - const ironBoulder = game.scene.getPlayerPokemon()!; + const ironBoulder = game.field.getPlayerPokemon(); vi.spyOn(ironBoulder, "getAccuracyMultiplier"); // Turn 1 game.move.select(MoveId.STEAMROLLER); diff --git a/test/moves/stockpile.test.ts b/test/moves/stockpile.test.ts index efc1757738a..2da1285ace2 100644 --- a/test/moves/stockpile.test.ts +++ b/test/moves/stockpile.test.ts @@ -5,7 +5,7 @@ import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,7 +38,7 @@ describe("Moves - Stockpile", () => { it("gains a stockpile stack and raises user's DEF and SPDEF stat stages by 1 on each use, fails at max stacks (3)", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); // Unfortunately, Stockpile stacks are not directly queryable (i.e. there is no pokemon.getStockpileStacks()), // we just have to know that they're implemented as a BattlerTag. @@ -78,7 +78,7 @@ describe("Moves - Stockpile", () => { it("gains a stockpile stack even if user's DEF and SPDEF stat stages are at +6", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); user.setStatStage(Stat.DEF, 6); user.setStatStage(Stat.SPDEF, 6); diff --git a/test/moves/struggle.test.ts b/test/moves/struggle.test.ts index 2d624f6d338..cba049e7277 100644 --- a/test/moves/struggle.test.ts +++ b/test/moves/struggle.test.ts @@ -1,7 +1,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -35,7 +35,7 @@ describe("Moves - Struggle", () => { game.override.moveset([MoveId.STRUGGLE]).ability(AbilityId.ADAPTABILITY); await game.classicMode.startBattle([SpeciesId.RATTATA]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.STRUGGLE); const stabSpy = vi.spyOn(enemy, "calculateStabMultiplier"); @@ -49,7 +49,7 @@ describe("Moves - Struggle", () => { game.override.moveset([MoveId.STRUGGLE]); await game.classicMode.startBattle([SpeciesId.GASTLY]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.STRUGGLE); const moveEffectivenessSpy = vi.spyOn(enemy, "getMoveEffectiveness"); diff --git a/test/moves/substitute.test.ts b/test/moves/substitute.test.ts index 39418fb5b99..89018a8d592 100644 --- a/test/moves/substitute.test.ts +++ b/test/moves/substitute.test.ts @@ -15,7 +15,7 @@ import { StatusEffect } from "#enums/status-effect"; import { UiMode } from "#enums/ui-mode"; import { StealHeldItemChanceAttr } from "#moves/move"; import type { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -49,7 +49,7 @@ describe("Moves - Substitute", () => { it("should cause the user to take damage", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -63,7 +63,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.SKARMORY]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -86,7 +86,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -107,7 +107,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -122,7 +122,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -142,7 +142,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -160,7 +160,7 @@ describe("Moves - Substitute", () => { it("shouldn't block the user's own status moves", async () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -179,7 +179,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); vi.spyOn(leadPokemon, "getMoveEffectiveness"); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -197,7 +197,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); vi.spyOn(leadPokemon, "getMoveEffectiveness"); game.move.select(MoveId.SUBSTITUTE); @@ -233,8 +233,8 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -251,7 +251,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -268,7 +268,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -284,7 +284,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -301,7 +301,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -317,7 +317,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, enemyPokemon.id); const enemyNumItems = enemyPokemon.getHeldItems().length; @@ -334,8 +334,8 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -355,7 +355,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -372,7 +372,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -389,7 +389,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - const leadPokemon = game.scene.getPlayerPokemon()!; + const leadPokemon = game.field.getPlayerPokemon(); leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); @@ -400,7 +400,7 @@ describe("Moves - Substitute", () => { await game.phaseInterceptor.to("MovePhase", false); - const switchedPokemon = game.scene.getPlayerPokemon()!; + const switchedPokemon = game.field.getPlayerPokemon(); const subTag = switchedPokemon.getTag(SubstituteTag)!; expect(subTag).toBeDefined(); expect(subTag.hp).toBe(Math.floor((leadPokemon.getMaxHp() * 1) / 4)); @@ -411,7 +411,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SUBSTITUTE); @@ -428,8 +428,8 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); @@ -446,7 +446,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); @@ -462,8 +462,8 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); @@ -479,8 +479,8 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); @@ -497,7 +497,7 @@ describe("Moves - Substitute", () => { await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); diff --git a/test/moves/swallow.test.ts b/test/moves/swallow.test.ts index 176b00b030c..f896a4c9c77 100644 --- a/test/moves/swallow.test.ts +++ b/test/moves/swallow.test.ts @@ -7,7 +7,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { MovePhase } from "#phases/move-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -43,7 +43,7 @@ describe("Moves - Swallow", () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); pokemon["hp"] = 1; @@ -70,7 +70,7 @@ describe("Moves - Swallow", () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); pokemon["hp"] = 1; @@ -98,7 +98,7 @@ describe("Moves - Swallow", () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); pokemon["hp"] = 0.0001; @@ -125,7 +125,7 @@ describe("Moves - Swallow", () => { it("fails without stacks", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); const stockpilingTag = pokemon.getTag(StockpilingTag)!; expect(stockpilingTag).toBeUndefined(); @@ -144,7 +144,7 @@ describe("Moves - Swallow", () => { it("decreases stats based on stored values (both boosts equal)", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); const stockpilingTag = pokemon.getTag(StockpilingTag)!; @@ -173,7 +173,7 @@ describe("Moves - Swallow", () => { it("lower stat stages based on stored values (different boosts)", async () => { await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); pokemon.addTag(BattlerTagType.STOCKPILING); const stockpilingTag = pokemon.getTag(StockpilingTag)!; diff --git a/test/moves/synchronoise.test.ts b/test/moves/synchronoise.test.ts index fe4a316a32a..98178b66d00 100644 --- a/test/moves/synchronoise.test.ts +++ b/test/moves/synchronoise.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -34,8 +34,8 @@ describe("Moves - Synchronoise", () => { it("should consider the user's tera type if it is terastallized", async () => { await game.classicMode.startBattle([SpeciesId.BIDOOF]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); // force the player to be terastallized playerPokemon.teraType = PokemonType.WATER; diff --git a/test/moves/syrup_bomb.test.ts b/test/moves/syrup-bomb.test.ts similarity index 92% rename from test/moves/syrup_bomb.test.ts rename to test/moves/syrup-bomb.test.ts index f45070d81a5..75f76595730 100644 --- a/test/moves/syrup_bomb.test.ts +++ b/test/moves/syrup-bomb.test.ts @@ -4,7 +4,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,7 +40,7 @@ describe("Moves - SYRUP BOMB", () => { it("decreases the target Pokemon's speed stat once per turn for 3 turns", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const targetPokemon = game.scene.getEnemyPokemon()!; + const targetPokemon = game.field.getEnemyPokemon(); expect(targetPokemon.getStatStage(Stat.SPD)).toBe(0); game.move.select(MoveId.SYRUP_BOMB); @@ -65,7 +65,7 @@ describe("Moves - SYRUP BOMB", () => { game.override.enemyAbility(AbilityId.BULLETPROOF); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const targetPokemon = game.scene.getEnemyPokemon()!; + const targetPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.SYRUP_BOMB); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -87,6 +87,6 @@ describe("Moves - SYRUP BOMB", () => { game.doSwitchPokemon(1); await game.toNextTurn(); - expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.SPD)).toBe(-1); + expect(game.field.getEnemyPokemon().getStatStage(Stat.SPD)).toBe(-1); }); }); diff --git a/test/moves/tackle.test.ts b/test/moves/tackle.test.ts index 998afd23f9d..23abd650e55 100644 --- a/test/moves/tackle.test.ts +++ b/test/moves/tackle.test.ts @@ -3,7 +3,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { EnemyCommandPhase } from "#phases/enemy-command-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/tail_whip.test.ts b/test/moves/tail-whip.test.ts similarity index 92% rename from test/moves/tail_whip.test.ts rename to test/moves/tail-whip.test.ts index 272816a88a6..8d2dfbda096 100644 --- a/test/moves/tail_whip.test.ts +++ b/test/moves/tail-whip.test.ts @@ -4,7 +4,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { EnemyCommandPhase } from "#phases/enemy-command-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -39,7 +39,7 @@ describe("Moves - Tail whip", () => { const moveToUse = MoveId.TAIL_WHIP; await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.MIGHTYENA]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); game.move.select(moveToUse); diff --git a/test/moves/tailwind.test.ts b/test/moves/tailwind.test.ts index 1c8701de5bc..5c91a37f786 100644 --- a/test/moves/tailwind.test.ts +++ b/test/moves/tailwind.test.ts @@ -4,7 +4,7 @@ import { ArenaTagType } from "#enums/arena-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -81,8 +81,8 @@ describe("Moves - Tailwind", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const ally = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; + const ally = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); const allySpd = ally.getStat(Stat.SPD); const enemySpd = enemy.getStat(Stat.SPD); diff --git a/test/moves/tar_shot.test.ts b/test/moves/tar-shot.test.ts similarity index 94% rename from test/moves/tar_shot.test.ts rename to test/moves/tar-shot.test.ts index c2ae397e43a..d8da8c3437e 100644 --- a/test/moves/tar_shot.test.ts +++ b/test/moves/tar-shot.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Tar Shot", () => { it("lowers the target's Speed stat by one stage and doubles the effectiveness of Fire-type moves used on the target", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); @@ -57,7 +57,7 @@ describe("Moves - Tar Shot", () => { it("will not double the effectiveness of Fire-type moves used on a target that is already under the effect of Tar Shot (but may still lower its Speed)", async () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); @@ -86,7 +86,7 @@ describe("Moves - Tar Shot", () => { game.override.enemySpecies(SpeciesId.SPRIGATITO); await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); enemy.teraType = PokemonType.GRASS; enemy.isTerastallized = true; @@ -110,7 +110,7 @@ describe("Moves - Tar Shot", () => { game.override.enemySpecies(SpeciesId.SPRIGATITO); await game.classicMode.startBattle([SpeciesId.PIKACHU]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); vi.spyOn(enemy, "getMoveEffectiveness"); diff --git a/test/moves/taunt.test.ts b/test/moves/taunt.test.ts index ba76551708b..6ac158d3a8f 100644 --- a/test/moves/taunt.test.ts +++ b/test/moves/taunt.test.ts @@ -3,7 +3,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -33,7 +33,7 @@ describe("Moves - Taunt", () => { it("Pokemon should not be able to use Status Moves", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // First turn, Player Pokemon succeeds using Growl without Taunt game.move.select(MoveId.GROWL); diff --git a/test/moves/telekinesis.test.ts b/test/moves/telekinesis.test.ts index 92d7f8cc885..f14c42d1dcc 100644 --- a/test/moves/telekinesis.test.ts +++ b/test/moves/telekinesis.test.ts @@ -5,7 +5,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Telekinesis", () => { it("Telekinesis makes the affected vulnerable to most attacking moves regardless of accuracy", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyOpponent = game.scene.getEnemyPokemon()!; + const enemyOpponent = game.field.getEnemyPokemon(); game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); @@ -54,7 +54,7 @@ describe("Moves - Telekinesis", () => { it("Telekinesis makes the affected airborne and immune to most Ground-moves", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyOpponent = game.scene.getEnemyPokemon()!; + const enemyOpponent = game.field.getEnemyPokemon(); game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); @@ -72,7 +72,7 @@ describe("Moves - Telekinesis", () => { game.override.enemyMoveset(MoveId.TRANSFORM); await game.classicMode.startBattle([SpeciesId.DIGLETT]); - const enemyOpponent = game.scene.getEnemyPokemon()!; + const enemyOpponent = game.field.getEnemyPokemon(); game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); @@ -84,7 +84,7 @@ describe("Moves - Telekinesis", () => { it("Moves like Smack Down and 1000 Arrows remove all effects of Telekinesis from the target Pokemon", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemyOpponent = game.scene.getEnemyPokemon()!; + const enemyOpponent = game.field.getEnemyPokemon(); game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); @@ -102,8 +102,8 @@ describe("Moves - Telekinesis", () => { game.override.enemyMoveset([MoveId.SPLASH, MoveId.INGRAIN]); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyOpponent = game.scene.getEnemyPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); + const enemyOpponent = game.field.getEnemyPokemon(); game.move.select(MoveId.TELEKINESIS); await game.move.selectEnemyMove(MoveId.SPLASH); @@ -134,6 +134,6 @@ describe("Moves - Telekinesis", () => { game.doSelectPartyPokemon(1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.getTag(BattlerTagType.TELEKINESIS)).toBeUndefined(); + expect(game.field.getPlayerPokemon().getTag(BattlerTagType.TELEKINESIS)).toBeUndefined(); }); }); diff --git a/test/moves/tera_blast.test.ts b/test/moves/tera-blast.test.ts similarity index 89% rename from test/moves/tera_blast.test.ts rename to test/moves/tera-blast.test.ts index d6c16c31544..c23c990ec87 100644 --- a/test/moves/tera_blast.test.ts +++ b/test/moves/tera-blast.test.ts @@ -6,7 +6,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import type { Move, TeraMoveCategoryAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -49,10 +49,10 @@ describe("Moves - Tera Blast", () => { it("changes type to match user's tera type", async () => { game.override.enemySpecies(SpeciesId.FURRET); await game.classicMode.startBattle(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const spy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.teraType = PokemonType.FIGHTING; playerPokemon.isTerastallized = true; @@ -66,7 +66,7 @@ describe("Moves - Tera Blast", () => { it("increases power if user is Stellar tera type", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; @@ -80,11 +80,11 @@ describe("Moves - Tera Blast", () => { it("is super effective against terastallized targets if user is Stellar tera type", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); const spy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); enemyPokemon.isTerastallized = true; @@ -98,7 +98,7 @@ describe("Moves - Tera Blast", () => { it("uses the higher ATK for damage calculation", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.stats[Stat.ATK] = 100; playerPokemon.stats[Stat.SPATK] = 1; playerPokemon.isTerastallized = true; @@ -113,7 +113,7 @@ describe("Moves - Tera Blast", () => { it("uses the higher SPATK for damage calculation", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.stats[Stat.ATK] = 1; playerPokemon.stats[Stat.SPATK] = 100; @@ -128,7 +128,7 @@ describe("Moves - Tera Blast", () => { game.override.enemyMoveset([MoveId.CHARM]); await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.stats[Stat.ATK] = 51; playerPokemon.stats[Stat.SPATK] = 50; @@ -146,7 +146,7 @@ describe("Moves - Tera Blast", () => { .starterSpecies(SpeciesId.CUBONE); await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.stats[Stat.ATK] = 50; playerPokemon.stats[Stat.SPATK] = 51; @@ -164,7 +164,7 @@ describe("Moves - Tera Blast", () => { game.override.ability(AbilityId.HUGE_POWER); await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.stats[Stat.ATK] = 50; playerPokemon.stats[Stat.SPATK] = 51; @@ -179,7 +179,7 @@ describe("Moves - Tera Blast", () => { it("causes stat drops if user is Stellar tera type", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; @@ -199,14 +199,14 @@ describe("Moves - Tera Blast", () => { ])("should be $ty type if the user has $ab", async ({ ab_id, ty_id }) => { game.override.ability(ab_id).moveset([MoveId.TERA_BLAST]).enemyAbility(AbilityId.BALL_FETCH); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getMoveType(allMoves[MoveId.TERA_BLAST])).toBe(ty_id); }); it("should not be affected by normalize when the user is terastallized with tera normal", async () => { game.override.moveset([MoveId.TERA_BLAST]).ability(AbilityId.NORMALIZE); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // override the tera state for the pokemon playerPokemon.isTerastallized = true; playerPokemon.teraType = PokemonType.NORMAL; diff --git a/test/moves/tera_starstorm.test.ts b/test/moves/tera-starstorm.test.ts similarity index 97% rename from test/moves/tera_starstorm.test.ts rename to test/moves/tera-starstorm.test.ts index a63573b360d..869cf597dde 100644 --- a/test/moves/tera_starstorm.test.ts +++ b/test/moves/tera-starstorm.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Tera Starstorm", () => { game.override.battleStyle("single"); await game.classicMode.startBattle([SpeciesId.TERAPAGOS]); - const terapagos = game.scene.getPlayerPokemon()!; + const terapagos = game.field.getPlayerPokemon(); terapagos.isTerastallized = true; vi.spyOn(terapagos, "getMoveType"); diff --git a/test/moves/thousand_arrows.test.ts b/test/moves/thousand-arrows.test.ts similarity index 92% rename from test/moves/thousand_arrows.test.ts rename to test/moves/thousand-arrows.test.ts index 3c7bacfbb2b..47bdce8476c 100644 --- a/test/moves/thousand_arrows.test.ts +++ b/test/moves/thousand-arrows.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#phases/berry-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Thousand Arrows", () => { it("move should hit and ground Flying-type targets", async () => { await game.classicMode.startBattle([SpeciesId.ILLUMISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THOUSAND_ARROWS); @@ -55,7 +55,7 @@ describe("Moves - Thousand Arrows", () => { await game.classicMode.startBattle([SpeciesId.ILLUMISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THOUSAND_ARROWS); @@ -74,7 +74,7 @@ describe("Moves - Thousand Arrows", () => { await game.classicMode.startBattle([SpeciesId.ILLUMISE]); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); enemyPokemon.addTag(BattlerTagType.FLOATING, undefined, MoveId.MAGNET_RISE); diff --git a/test/moves/throat_chop.test.ts b/test/moves/throat-chop.test.ts similarity index 93% rename from test/moves/throat_chop.test.ts rename to test/moves/throat-chop.test.ts index 1a17cb1fba2..a4f090b2de1 100644 --- a/test/moves/throat_chop.test.ts +++ b/test/moves/throat-chop.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -34,7 +34,7 @@ describe("Moves - Throat Chop", () => { it("prevents the target from using sound-based moves for two turns", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.GROWL); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/moves/thunder_wave.test.ts b/test/moves/thunder-wave.test.ts similarity index 87% rename from test/moves/thunder_wave.test.ts rename to test/moves/thunder-wave.test.ts index 06a24e454fa..9c630852d48 100644 --- a/test/moves/thunder_wave.test.ts +++ b/test/moves/thunder-wave.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import type { EnemyPokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Thunder Wave", () => { game.override.enemySpecies(SpeciesId.MAGIKARP); await game.classicMode.startBattle(); - const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon: EnemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); @@ -49,7 +49,7 @@ describe("Moves - Thunder Wave", () => { game.override.enemySpecies(SpeciesId.DIGLETT); await game.classicMode.startBattle(); - const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon: EnemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); @@ -62,7 +62,7 @@ describe("Moves - Thunder Wave", () => { game.override.enemySpecies(SpeciesId.MAGIKARP).enemyStatusEffect(StatusEffect.BURN); await game.classicMode.startBattle(); - const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon: EnemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); @@ -75,7 +75,7 @@ describe("Moves - Thunder Wave", () => { game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.DIGLETT); await game.classicMode.startBattle(); - const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon: EnemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); @@ -88,7 +88,7 @@ describe("Moves - Thunder Wave", () => { game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.HAUNTER); await game.classicMode.startBattle(); - const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon: EnemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); diff --git a/test/moves/tidy_up.test.ts b/test/moves/tidy-up.test.ts similarity index 95% rename from test/moves/tidy_up.test.ts rename to test/moves/tidy-up.test.ts index c96718e2332..51399552a08 100644 --- a/test/moves/tidy_up.test.ts +++ b/test/moves/tidy-up.test.ts @@ -6,7 +6,7 @@ import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { MoveEndPhase } from "#phases/move-end-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -92,7 +92,7 @@ describe("Moves - Tidy Up", () => { game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(MoveEndPhase); - const pokemon = [game.scene.getPlayerPokemon()!, game.scene.getEnemyPokemon()!]; + const pokemon = [game.field.getPlayerPokemon(), game.field.getEnemyPokemon()]; pokemon.forEach(p => { expect(p).toBeDefined(); expect(p!.getTag(SubstituteTag)).toBeUndefined(); @@ -102,7 +102,7 @@ describe("Moves - Tidy Up", () => { it("user's stats are raised with no traps set", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(0); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); diff --git a/test/moves/torment.test.ts b/test/moves/torment.test.ts index 71a4f3cb504..cdefd8ef005 100644 --- a/test/moves/torment.test.ts +++ b/test/moves/torment.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#phases/turn-end-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Torment", () => { it("Pokemon should not be able to use the same move consecutively", async () => { await game.classicMode.startBattle([SpeciesId.CHANSEY]); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); // First turn, Player Pokemon uses Tackle successfully game.move.select(MoveId.TACKLE); diff --git a/test/moves/toxic_spikes.test.ts b/test/moves/toxic-spikes.test.ts similarity index 97% rename from test/moves/toxic_spikes.test.ts rename to test/moves/toxic-spikes.test.ts index 69f09ce966a..0a0bf8baefc 100644 --- a/test/moves/toxic_spikes.test.ts +++ b/test/moves/toxic-spikes.test.ts @@ -7,7 +7,7 @@ import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import type { SessionSaveData } from "#system/game-data"; import { GameData } from "#system/game-data"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { decrypt, encrypt } from "#utils/data"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -86,7 +86,7 @@ describe("Moves - Toxic Spikes", () => { it("should be removed if a grounded poison pokemon switches in", async () => { await game.classicMode.runToSummon([SpeciesId.MUK, SpeciesId.PIDGEY]); - const muk = game.scene.getPlayerPokemon()!; + const muk = game.field.getPlayerPokemon(); game.move.select(MoveId.TOXIC_SPIKES); await game.toNextTurn(); diff --git a/test/moves/toxic.test.ts b/test/moves/toxic.test.ts index 5aaa4e3e85d..8044d2f9a90 100644 --- a/test/moves/toxic.test.ts +++ b/test/moves/toxic.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - Toxic", () => { game.move.select(MoveId.TOXIC); await game.phaseInterceptor.to("BerryPhase", false); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.TOXIC); }); it("may miss if user is not Poison-type", async () => { @@ -47,7 +47,7 @@ describe("Moves - Toxic", () => { game.move.select(MoveId.TOXIC); await game.phaseInterceptor.to("BerryPhase", false); - expect(game.scene.getEnemyPokemon()!.status).toBeUndefined(); + expect(game.field.getEnemyPokemon().status).toBeUndefined(); }); it("should hit semi-invulnerable targets if user is Poison-type", async () => { @@ -59,7 +59,7 @@ describe("Moves - Toxic", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); - expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); + expect(game.field.getEnemyPokemon().status?.effect).toBe(StatusEffect.TOXIC); }); it("should miss semi-invulnerable targets if user is not Poison-type", async () => { @@ -71,7 +71,7 @@ describe("Moves - Toxic", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); - expect(game.scene.getEnemyPokemon()!.status).toBeUndefined(); + expect(game.field.getEnemyPokemon().status).toBeUndefined(); }); it("moves other than Toxic should not hit semi-invulnerable targets even if user is Poison-type", async () => { @@ -82,7 +82,7 @@ describe("Moves - Toxic", () => { await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const enemyPokemon = game.field.getEnemyPokemon(); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); }); }); diff --git a/test/moves/transform-imposter.test.ts b/test/moves/transform-imposter.test.ts index c12542e64e9..b1631130154 100644 --- a/test/moves/transform-imposter.test.ts +++ b/test/moves/transform-imposter.test.ts @@ -12,7 +12,7 @@ import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import type { EnemyPokemon } from "#field/pokemon"; import { Pokemon } from "#field/pokemon"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstance, vi } from "vitest"; diff --git a/test/moves/trick_or_treat.test.ts b/test/moves/trick-or-treat.test.ts similarity index 82% rename from test/moves/trick_or_treat.test.ts rename to test/moves/trick-or-treat.test.ts index 4e563c97ddc..3e32c877b9e 100644 --- a/test/moves/trick_or_treat.test.ts +++ b/test/moves/trick-or-treat.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -35,13 +35,13 @@ describe("Moves - Trick Or Treat", () => { it("will replace added type from Forest's Curse", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemyPokemon = game.scene.getEnemyPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); game.move.select(MoveId.FORESTS_CURSE); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon!.summonData.addedType).toBe(PokemonType.GRASS); + expect(enemyPokemon.summonData.addedType).toBe(PokemonType.GRASS); game.move.select(MoveId.TRICK_OR_TREAT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon?.summonData.addedType).toBe(PokemonType.GHOST); + expect(enemyPokemon.summonData.addedType).toBe(PokemonType.GHOST); }); }); diff --git a/test/moves/triple_arrows.test.ts b/test/moves/triple-arrows.test.ts similarity index 97% rename from test/moves/triple_arrows.test.ts rename to test/moves/triple-arrows.test.ts index a60c7106a21..2f7c50f8a44 100644 --- a/test/moves/triple_arrows.test.ts +++ b/test/moves/triple-arrows.test.ts @@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import type { FlinchAttr, Move, StatStageChangeAttr } from "#moves/move"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/u_turn.test.ts b/test/moves/u-turn.test.ts similarity index 81% rename from test/moves/u_turn.test.ts rename to test/moves/u-turn.test.ts index cf8b91511ca..25c333e58e1 100644 --- a/test/moves/u_turn.test.ts +++ b/test/moves/u-turn.test.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -37,7 +37,7 @@ describe("Moves - U-turn", () => { const playerHp = 1; game.override.ability(AbilityId.REGENERATOR); await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); - game.scene.getPlayerPokemon()!.hp = playerHp; + game.field.getPlayerPokemon().hp = playerHp; // act game.move.select(MoveId.U_TURN); @@ -49,7 +49,7 @@ describe("Moves - U-turn", () => { Math.floor(game.scene.getPlayerParty()[1].getMaxHp() * 0.33 + playerHp), ); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.SHUCKLE); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.SHUCKLE); }); it("triggers rough skin on the u-turn user before a new pokemon is switched in", async () => { @@ -63,9 +63,9 @@ describe("Moves - U-turn", () => { await game.phaseInterceptor.to("SwitchPhase", false); // assert - const playerPkm = game.scene.getPlayerPokemon()!; + const playerPkm = game.field.getPlayerPokemon(); expect(playerPkm.hp).not.toEqual(playerPkm.getMaxHp()); - expect(game.scene.getEnemyPokemon()!.waveData.abilityRevealed).toBe(true); // proxy for asserting ability activated + expect(game.field.getEnemyPokemon().waveData.abilityRevealed).toBe(true); // proxy for asserting ability activated expect(playerPkm.species.speciesId).toEqual(SpeciesId.RAICHU); expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); }); @@ -74,24 +74,24 @@ describe("Moves - U-turn", () => { // arrange game.override.enemyAbility(AbilityId.POISON_POINT); await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); - vi.spyOn(game.scene.getEnemyPokemon()!, "randBattleSeedInt").mockReturnValue(0); + vi.spyOn(game.field.getEnemyPokemon(), "randBattleSeedInt").mockReturnValue(0); // act game.move.select(MoveId.U_TURN); await game.phaseInterceptor.to("SwitchPhase", false); // assert - const playerPkm = game.scene.getPlayerPokemon()!; + const playerPkm = game.field.getPlayerPokemon(); expect(playerPkm.status?.effect).toEqual(StatusEffect.POISON); expect(playerPkm.species.speciesId).toEqual(SpeciesId.RAICHU); - expect(game.scene.getEnemyPokemon()!.waveData.abilityRevealed).toBe(true); // proxy for asserting ability activated + expect(game.field.getEnemyPokemon().waveData.abilityRevealed).toBe(true); // proxy for asserting ability activated expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); }); it("still forces a switch if u-turn KO's the opponent", async () => { game.override.startingLevel(1000); // Ensure that U-Turn KO's the opponent await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); // KO the opponent with U-Turn game.move.select(MoveId.U_TURN); @@ -101,6 +101,6 @@ describe("Moves - U-turn", () => { // Check that U-Turn forced a switch expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.SHUCKLE); + expect(game.field.getPlayerPokemon().species.speciesId).toBe(SpeciesId.SHUCKLE); }); }); diff --git a/test/moves/upper_hand.test.ts b/test/moves/upper-hand.test.ts similarity index 88% rename from test/moves/upper_hand.test.ts rename to test/moves/upper-hand.test.ts index f03a84397f2..b2e8dca2afc 100644 --- a/test/moves/upper_hand.test.ts +++ b/test/moves/upper-hand.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,8 +38,8 @@ describe("Moves - Upper Hand", () => { it("should flinch the opponent before they use a priority attack", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const feebas = game.scene.getPlayerPokemon()!; - const magikarp = game.scene.getEnemyPokemon()!; + const feebas = game.field.getPlayerPokemon(); + const magikarp = game.field.getEnemyPokemon(); game.move.select(MoveId.UPPER_HAND); await game.phaseInterceptor.to("BerryPhase"); @@ -57,7 +57,7 @@ describe("Moves - Upper Hand", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const feebas = game.scene.getPlayerPokemon()!; + const feebas = game.field.getPlayerPokemon(); game.move.select(MoveId.UPPER_HAND); await game.phaseInterceptor.to("BerryPhase"); @@ -70,8 +70,8 @@ describe("Moves - Upper Hand", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const feebas = game.scene.getPlayerPokemon()!; - const magikarp = game.scene.getEnemyPokemon()!; + const feebas = game.field.getPlayerPokemon(); + const magikarp = game.field.getEnemyPokemon(); game.move.select(MoveId.UPPER_HAND); await game.phaseInterceptor.to("BerryPhase"); @@ -86,7 +86,7 @@ describe("Moves - Upper Hand", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const feebas = game.scene.getPlayerPokemon()!; + const feebas = game.field.getPlayerPokemon(); game.move.select(MoveId.UPPER_HAND); diff --git a/test/moves/whirlwind.test.ts b/test/moves/whirlwind.test.ts index 9def19c4668..bbb2afe621a 100644 --- a/test/moves/whirlwind.test.ts +++ b/test/moves/whirlwind.test.ts @@ -11,7 +11,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { TrainerType } from "#enums/trainer-type"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -48,7 +48,7 @@ describe("Moves - Whirlwind", () => { // Must have a pokemon in the back so that the move misses instead of fails. await game.classicMode.startBattle([SpeciesId.STARAPTOR, SpeciesId.MAGIKARP]); - const staraptor = game.scene.getPlayerPokemon()!; + const staraptor = game.field.getPlayerPokemon(); game.move.select(move); await game.move.selectEnemyMove(MoveId.WHIRLWIND); @@ -56,7 +56,7 @@ describe("Moves - Whirlwind", () => { await game.phaseInterceptor.to("BerryPhase", false); expect(staraptor.findTag(t => t.tagType === BattlerTagType.FLYING)).toBeDefined(); - expect(game.scene.getEnemyPokemon()!.getLastXMoves(1)[0].result).toBe(MoveResult.MISS); + expect(game.field.getEnemyPokemon().getLastXMoves(1)[0].result).toBe(MoveResult.MISS); }); it("should force switches randomly", async () => { @@ -206,9 +206,9 @@ describe("Moves - Whirlwind", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.TOTODILE]); // expect the enemy to have at least 4 pokemon, necessary for this check to even work - expect(game.scene.getEnemyParty().length, "enemy must have exactly 4 pokemon").toBe(4); + expect(game.scene.getEnemyParty().length, "enemy must have exactly 4 pokemon").toBeGreaterThanOrEqual(4); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); console.log(user.getMoveset(false)); @@ -219,7 +219,7 @@ describe("Moves - Whirlwind", () => { await game.toNextTurn(); // Get the enemy pokemon id so we can check if is the same after switch. - const enemy_id = game.scene.getEnemyPokemon()!.id; + const enemy_id = game.field.getEnemyPokemon().id; // Hit the enemy that fainted with whirlwind. game.move.select(MoveId.WHIRLWIND, 0, BattlerIndex.ENEMY); @@ -231,7 +231,7 @@ describe("Moves - Whirlwind", () => { await game.toNextTurn(); // Expect the enemy pokemon to not have switched out. - expect(game.scene.getEnemyPokemon()!.id).toBe(enemy_id); + expect(game.field.getEnemyPokemon().id).toBe(enemy_id); }); it("should force a wild pokemon to flee", async () => { @@ -242,7 +242,7 @@ describe("Moves - Whirlwind", () => { .ability(AbilityId.BALL_FETCH); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const user = game.scene.getPlayerPokemon()!; + const user = game.field.getPlayerPokemon(); game.move.select(MoveId.WHIRLWIND); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/wide-guard.test.ts b/test/moves/wide-guard.test.ts new file mode 100644 index 00000000000..b45b7327265 --- /dev/null +++ b/test/moves/wide-guard.test.ts @@ -0,0 +1,110 @@ +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Wide Guard", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .battleStyle("double") + .moveset([MoveId.WIDE_GUARD, MoveId.SPLASH, MoveId.SURF, MoveId.SPIKY_SHIELD]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyMoveset([MoveId.SWIFT, MoveId.GROWL, MoveId.TACKLE]) + .enemyAbility(AbilityId.INSOMNIA) + .startingLevel(100) + .enemyLevel(100); + }); + + it("should protect the user and allies from multi-target attack and status moves", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + const [charizard, blastoise] = game.scene.getPlayerField(); + + game.move.select(MoveId.WIDE_GUARD, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.SWIFT); + await game.move.forceEnemyMove(MoveId.GROWL); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.hp).toBe(charizard.getMaxHp()); + expect(blastoise.hp).toBe(blastoise.getMaxHp()); + expect(charizard.getStatStage(Stat.ATK)).toBe(0); + expect(blastoise.getStatStage(Stat.ATK)).toBe(0); + }); + + it("should not protect the user and allies from single-target moves", async () => { + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const [charizard, blastoise] = game.scene.getPlayerField(); + game.move.select(MoveId.WIDE_GUARD, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.forceEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.hp).toBeLessThan(charizard.getMaxHp()); + expect(blastoise.hp).toBeLessThan(blastoise.getMaxHp()); + }); + + it("should protect the user from its ally's multi-target move", async () => { + game.override.enemyMoveset(MoveId.SPLASH); + + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); + + const charizard = game.scene.getPlayerPokemon()!; + const [snorlax1, snorlax2] = game.scene.getEnemyField(); + + game.move.select(MoveId.WIDE_GUARD, BattlerIndex.PLAYER); + game.move.select(MoveId.SURF, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(charizard.hp).toBe(charizard.getMaxHp()); + expect(snorlax1.hp).toBeLessThan(snorlax1.getMaxHp()); + expect(snorlax2.hp).toBeLessThan(snorlax2.getMaxHp()); + }); + + it("should increment (but not respect) other protection moves' fail counters", async () => { + game.override.battleStyle("single"); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); + + const charizard = game.scene.getPlayerPokemon()!; + // force protect to fail on anything other than a guaranteed success + vi.spyOn(charizard, "randBattleSeedInt").mockReturnValue(1); + + game.move.select(MoveId.WIDE_GUARD); + await game.toNextTurn(); + + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + // ignored fail chance + game.move.select(MoveId.WIDE_GUARD); + await game.toNextTurn(); + + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + + game.move.select(MoveId.SPIKY_SHIELD); + await game.toNextTurn(); + + // ignored fail chance + expect(charizard.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); +}); diff --git a/test/moves/wide_guard.test.ts b/test/moves/wide_guard.test.ts deleted file mode 100644 index 7de1faea900..00000000000 --- a/test/moves/wide_guard.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { Stat } from "#enums/stat"; -import { BerryPhase } from "#phases/berry-phase"; -import { GameManager } from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; - -describe("Moves - Wide Guard", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - - game.override - .battleStyle("double") - .moveset([MoveId.WIDE_GUARD, MoveId.SPLASH, MoveId.SURF]) - .enemySpecies(SpeciesId.SNORLAX) - .enemyMoveset(MoveId.SWIFT) - .enemyAbility(AbilityId.INSOMNIA) - .startingLevel(100) - .enemyLevel(100); - }); - - test("should protect the user and allies from multi-target attack moves", async () => { - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.WIDE_GUARD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - leadPokemon.forEach(p => expect(p.hp).toBe(p.getMaxHp())); - }); - - test("should protect the user and allies from multi-target status moves", async () => { - game.override.enemyMoveset([MoveId.GROWL]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.WIDE_GUARD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - leadPokemon.forEach(p => expect(p.getStatStage(Stat.ATK)).toBe(0)); - }); - - test("should not protect the user and allies from single-target moves", async () => { - game.override.enemyMoveset([MoveId.TACKLE]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - - game.move.select(MoveId.WIDE_GUARD); - game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - expect(leadPokemon.some(p => p.hp < p.getMaxHp())).toBeTruthy(); - }); - - test("should protect the user from its ally's multi-target move", async () => { - game.override.enemyMoveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - - const leadPokemon = game.scene.getPlayerField(); - const enemyPokemon = game.scene.getEnemyField(); - - game.move.select(MoveId.WIDE_GUARD); - game.move.select(MoveId.SURF, 1); - - await game.phaseInterceptor.to(BerryPhase, false); - - expect(leadPokemon[0].hp).toBe(leadPokemon[0].getMaxHp()); - enemyPokemon.forEach(p => expect(p.hp).toBeLessThan(p.getMaxHp())); - }); -}); diff --git a/test/moves/will_o_wisp.test.ts b/test/moves/will-o-wisp.test.ts similarity index 92% rename from test/moves/will_o_wisp.test.ts rename to test/moves/will-o-wisp.test.ts index 6f878e1198c..864413b0ce7 100644 --- a/test/moves/will_o_wisp.test.ts +++ b/test/moves/will-o-wisp.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -36,7 +36,7 @@ describe("Moves - Will-O-Wisp", () => { it("should burn the opponent", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy = game.scene.getEnemyPokemon()!; + const enemy = game.field.getEnemyPokemon(); game.move.select(MoveId.WILL_O_WISP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/moves/wish.test.ts b/test/moves/wish.test.ts new file mode 100644 index 00000000000..147c598106b --- /dev/null +++ b/test/moves/wish.test.ts @@ -0,0 +1,183 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { PositionalTagType } from "#enums/positional-tag-type"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; +import { toDmgValue } from "#utils/common"; +import i18next from "i18next"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Move - Wish", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .ability(AbilityId.BALL_FETCH) + .battleStyle("single") + .criticalHits(false) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .startingLevel(100) + .enemyLevel(100); + }); + + /** + * Expect that wish is active with the specified number of attacks. + * @param numAttacks - The number of wish instances that should be queued; default `1` + */ + function expectWishActive(numAttacks = 1) { + const wishes = game.scene.arena.positionalTagManager["tags"].filter(t => t.tagType === PositionalTagType.WISH); + expect(wishes).toHaveLength(numAttacks); + } + + it("should heal the Pokemon in the current slot for 50% of the user's maximum HP", async () => { + await game.classicMode.startBattle([SpeciesId.ALOMOMOLA, SpeciesId.BLISSEY]); + + const [alomomola, blissey] = game.scene.getPlayerParty(); + alomomola.hp = 1; + blissey.hp = 1; + + game.move.use(MoveId.WISH); + await game.toNextTurn(); + + expectWishActive(); + + game.doSwitchPokemon(1); + await game.toEndOfTurn(); + + expectWishActive(0); + expect(game.textInterceptor.logs).toContain( + i18next.t("arenaTag:wishTagOnAdd", { + pokemonNameWithAffix: getPokemonNameWithAffix(alomomola), + }), + ); + expect(alomomola.hp).toBe(1); + expect(blissey.hp).toBe(toDmgValue(alomomola.getMaxHp() / 2) + 1); + }); + + it("should work if the user has full HP, but not if it already has an active Wish", async () => { + await game.classicMode.startBattle([SpeciesId.ALOMOMOLA, SpeciesId.BLISSEY]); + + const alomomola = game.field.getPlayerPokemon(); + alomomola.hp = 1; + + game.move.use(MoveId.WISH); + await game.toNextTurn(); + + expectWishActive(); + + game.move.use(MoveId.WISH); + await game.toEndOfTurn(); + + expect(alomomola.hp).toBe(toDmgValue(alomomola.getMaxHp() / 2) + 1); + expect(alomomola.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should function independently of Future Sight", async () => { + await game.classicMode.startBattle([SpeciesId.ALOMOMOLA, SpeciesId.BLISSEY]); + + const [alomomola, blissey] = game.scene.getPlayerParty(); + alomomola.hp = 1; + blissey.hp = 1; + + game.move.use(MoveId.WISH); + await game.move.forceEnemyMove(MoveId.FUTURE_SIGHT); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toNextTurn(); + + expectWishActive(1); + }); + + it("should work in double battles and trigger in order of creation", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.ALOMOMOLA, SpeciesId.BLISSEY]); + + const [alomomola, blissey, karp1, karp2] = game.scene.getField(); + alomomola.hp = 1; + blissey.hp = 1; + + vi.spyOn(karp1, "getNameToRender").mockReturnValue("Karp 1"); + vi.spyOn(karp2, "getNameToRender").mockReturnValue("Karp 2"); + + const oldOrder = game.field.getSpeedOrder(); + + game.move.use(MoveId.WISH, BattlerIndex.PLAYER); + game.move.use(MoveId.WISH, BattlerIndex.PLAYER_2); + await game.move.forceEnemyMove(MoveId.WISH); + await game.move.forceEnemyMove(MoveId.WISH); + // Ensure that the wishes are used deterministically in speed order (for speed ties) + await game.setTurnOrder(oldOrder.map(p => p.getBattlerIndex())); + await game.toNextTurn(); + + expectWishActive(4); + + // Lower speed to change turn order + alomomola.setStatStage(Stat.SPD, 6); + blissey.setStatStage(Stat.SPD, -6); + + const newOrder = game.field.getSpeedOrder(); + expect(newOrder).not.toEqual(oldOrder); + + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.phaseInterceptor.to("PositionalTagPhase"); + + // all wishes have activated and added healing phases + expectWishActive(0); + + const healPhases = game.scene.phaseManager.phaseQueue.filter(p => p.is("PokemonHealPhase")); + expect(healPhases).toHaveLength(4); + expect.soft(healPhases.map(php => php.getPokemon())).toEqual(oldOrder); + + await game.toEndOfTurn(); + + expect(alomomola.hp).toBe(toDmgValue(alomomola.getMaxHp() / 2) + 1); + expect(blissey.hp).toBe(toDmgValue(blissey.getMaxHp() / 2) + 1); + }); + + it("should vanish and not play message if slot is empty", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.ALOMOMOLA, SpeciesId.BLISSEY]); + + const [alomomola, blissey] = game.scene.getPlayerParty(); + alomomola.hp = 1; + blissey.hp = 1; + + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.use(MoveId.WISH, BattlerIndex.PLAYER_2); + await game.toNextTurn(); + + expectWishActive(); + + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.use(MoveId.MEMENTO, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); + await game.toEndOfTurn(); + + // Wish went away without doing anything + expectWishActive(0); + expect(game.textInterceptor.logs).not.toContain( + i18next.t("arenaTag:wishTagOnAdd", { + pokemonNameWithAffix: getPokemonNameWithAffix(blissey), + }), + ); + expect(alomomola.hp).toBe(1); + }); +}); diff --git a/test/mystery-encounter/encounter-test-utils.ts b/test/mystery-encounter/encounter-test-utils.ts index 6b6a570d318..784e8ae4950 100644 --- a/test/mystery-encounter/encounter-test-utils.ts +++ b/test/mystery-encounter/encounter-test-utils.ts @@ -13,7 +13,7 @@ import { MysteryEncounterRewardsPhase, } from "#phases/mystery-encounter-phases"; import { VictoryPhase } from "#phases/victory-phase"; -import type { GameManager } from "#test/testUtils/gameManager"; +import type { GameManager } from "#test/test-utils/game-manager"; import type { MessageUiHandler } from "#ui/message-ui-handler"; import type { MysteryEncounterUiHandler } from "#ui/mystery-encounter-ui-handler"; import type { OptionSelectUiHandler } from "#ui/option-select-ui-handler"; diff --git a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts index a2832052611..93cf4537c53 100644 --- a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts +++ b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts @@ -16,8 +16,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts index 969ac812907..562482dd520 100644 --- a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts +++ b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts @@ -17,7 +17,7 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts b/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts index 97326e89a83..d903568785a 100644 --- a/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts +++ b/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts @@ -14,8 +14,8 @@ import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts index 5af89ebc02c..25116a89ec5 100644 --- a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts +++ b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts @@ -17,8 +17,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -174,7 +174,7 @@ describe("Berries Abound - Mystery Encounter", () => { }); it("should start battle if fastest pokemon is slower than boss below wave 50", async () => { - game.override.startingWave(41); + game.override.startingWave(42); const encounterTextSpy = vi.spyOn(EncounterDialogueUtils, "showEncounterText"); await game.runToMysteryEncounter(MysteryEncounterType.BERRIES_ABOUND, defaultParty); diff --git a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts index 80f4c00c2a6..bed9d48d063 100644 --- a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts +++ b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts @@ -20,8 +20,8 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -253,7 +253,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should start battle against the Bug-Type Superfan with wave 70 party template", async () => { - game.override.startingWave(61); + game.override.startingWave(63); await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); @@ -268,7 +268,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should start battle against the Bug-Type Superfan with wave 100 party template", async () => { - game.override.startingWave(81); + game.override.startingWave(83); await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); @@ -284,7 +284,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should start battle against the Bug-Type Superfan with wave 120 party template", async () => { - game.override.startingWave(111); + game.override.startingWave(113); await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); @@ -302,7 +302,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should start battle against the Bug-Type Superfan with wave 140 party template", async () => { - game.override.startingWave(131); + game.override.startingWave(133); await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); @@ -320,7 +320,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should start battle against the Bug-Type Superfan with wave 160 party template", async () => { - game.override.startingWave(151); + game.override.startingWave(153); await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); @@ -338,7 +338,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should start battle against the Bug-Type Superfan with wave 180 party template", async () => { - game.override.startingWave(171); + game.override.startingWave(173); await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); diff --git a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index af99834d082..b573701d568 100644 --- a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -31,8 +31,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import type { OptionSelectUiHandler } from "#ui/option-select-ui-handler"; import type { PartyUiHandler } from "#ui/party-ui-handler"; import { getPokemonSpecies } from "#utils/pokemon-utils"; diff --git a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts index 8ef499fe7f4..97d0ce31367 100644 --- a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts +++ b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts @@ -20,7 +20,7 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index 0fb6d2d09b8..16c726f1de6 100644 --- a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -26,7 +26,7 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/delibirdy"; diff --git a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts index 807526d2683..3d84d70b47e 100644 --- a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts +++ b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts @@ -11,7 +11,7 @@ import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { CIVILIZATION_ENCOUNTER_BIOMES } from "#mystery-encounters/mystery-encounters"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/field-trip-encounter.test.ts b/test/mystery-encounter/encounters/field-trip-encounter.test.ts index 4390c80d255..8502137cc6e 100644 --- a/test/mystery-encounter/encounters/field-trip-encounter.test.ts +++ b/test/mystery-encounter/encounters/field-trip-encounter.test.ts @@ -11,7 +11,7 @@ import { FieldTripEncounter } from "#mystery-encounters/field-trip-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index 1fb1cbfdbc8..a48422c459f 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -25,8 +25,8 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -268,7 +268,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); - const leadPokemonItems = scene.getPlayerParty()?.[0].getHeldItems() as PokemonHeldItemModifier[]; + const leadPokemonItems = scene.getPlayerParty()[0].getHeldItems() as PokemonHeldItemModifier[]; const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier); expect(item).toBeDefined; }); diff --git a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts index 588c126852f..8149212f00f 100644 --- a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts +++ b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts @@ -18,8 +18,8 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts index 43102cbc80d..3025b08b8b6 100644 --- a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -21,8 +21,8 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -144,9 +144,9 @@ describe("Fun And Games! - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); - expect(scene.getEnemyPokemon()?.species.speciesId).toBe(SpeciesId.WOBBUFFET); - expect(scene.getEnemyPokemon()?.ivs).toEqual([0, 0, 0, 0, 0, 0]); - expect(scene.getEnemyPokemon()?.nature).toBe(Nature.MILD); + expect(game.field.getEnemyPokemon().species.speciesId).toBe(SpeciesId.WOBBUFFET); + expect(game.field.getEnemyPokemon().ivs).toEqual([0, 0, 0, 0, 0, 0]); + expect(game.field.getEnemyPokemon().nature).toBe(Nature.MILD); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); @@ -206,7 +206,7 @@ describe("Fun And Games! - Mystery Encounter", () => { }); // Skip minigame - const wobbuffet = scene.getEnemyPokemon()!; + const wobbuffet = game.field.getEnemyPokemon(); wobbuffet.hp = Math.floor(0.2 * wobbuffet.getMaxHp()); scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); @@ -236,7 +236,7 @@ describe("Fun And Games! - Mystery Encounter", () => { }); // Skip minigame - const wobbuffet = scene.getEnemyPokemon()!; + const wobbuffet = game.field.getEnemyPokemon(); wobbuffet.hp = Math.floor(0.1 * wobbuffet.getMaxHp()); scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); @@ -266,7 +266,7 @@ describe("Fun And Games! - Mystery Encounter", () => { }); // Skip minigame - const wobbuffet = scene.getEnemyPokemon()!; + const wobbuffet = game.field.getEnemyPokemon(); wobbuffet.hp = 1; scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); diff --git a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index 2a959df76f2..867a33f6ab6 100644 --- a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -15,7 +15,7 @@ import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { CIVILIZATION_ENCOUNTER_BIOMES } from "#mystery-encounters/mystery-encounters"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import * as Utils from "#utils/common"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -93,7 +93,7 @@ describe("Global Trade System - Mystery Encounter", () => { describe("Option 1 - Check Trade Offers", () => { it("should have the correct properties", () => { const option = GlobalTradeSystemEncounter.options[0]; - expect(option.optionMode).toBe(MysteryEncounterOptionMode.DEFAULT); + expect(option.optionMode).toBe(MysteryEncounterOptionMode.DISABLED_OR_DEFAULT); expect(option.dialogue).toBeDefined(); expect(option.dialogue).toStrictEqual({ buttonLabel: `${namespace}:option.1.label`, @@ -154,7 +154,7 @@ describe("Global Trade System - Mystery Encounter", () => { describe("Option 2 - Wonder Trade", () => { it("should have the correct properties", () => { const option = GlobalTradeSystemEncounter.options[1]; - expect(option.optionMode).toBe(MysteryEncounterOptionMode.DEFAULT); + expect(option.optionMode).toBe(MysteryEncounterOptionMode.DISABLED_OR_DEFAULT); expect(option.dialogue).toBeDefined(); expect(option.dialogue).toStrictEqual({ buttonLabel: `${namespace}:option.2.label`, diff --git a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts index 2186fe43e23..d29f8fe6a82 100644 --- a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -13,8 +13,8 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index ee952f3809e..5412f269122 100644 --- a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -18,8 +18,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { TrainerConfig } from "#trainers/trainer-config"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/trainer-party-template"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; diff --git a/test/mystery-encounter/encounters/part-timer-encounter.test.ts b/test/mystery-encounter/encounters/part-timer-encounter.test.ts index 1bbda8b77e0..63eea8bbca2 100644 --- a/test/mystery-encounter/encounters/part-timer-encounter.test.ts +++ b/test/mystery-encounter/encounters/part-timer-encounter.test.ts @@ -15,7 +15,7 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/partTimer"; diff --git a/test/mystery-encounter/encounters/safari-zone.test.ts b/test/mystery-encounter/encounters/safari-zone.test.ts index 252198139df..ec43dcfb69b 100644 --- a/test/mystery-encounter/encounters/safari-zone.test.ts +++ b/test/mystery-encounter/encounters/safari-zone.test.ts @@ -14,8 +14,8 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/safariZone"; diff --git a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts index 6ecf3162607..ff4f73cfbde 100644 --- a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts +++ b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts @@ -16,8 +16,8 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -79,14 +79,6 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { expect(TeleportingHijinksEncounter.options.length).toBe(3); }); - it("should run in waves that are X1", async () => { - game.override.startingWave(11).mysteryEncounterTier(MysteryEncounterTier.COMMON); - - await game.runToMysteryEncounter(); - - expect(scene.currentBattle?.mysteryEncounter?.encounterType).toBe(MysteryEncounterType.TELEPORTING_HIJINKS); - }); - it("should run in waves that are X2", async () => { game.override.startingWave(32).mysteryEncounterTier(MysteryEncounterTier.COMMON); @@ -103,8 +95,16 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { expect(scene.currentBattle?.mysteryEncounter?.encounterType).toBe(MysteryEncounterType.TELEPORTING_HIJINKS); }); - it("should NOT run in waves that are not X1, X2, or X3", async () => { - game.override.startingWave(54); + it("should run in waves that are X4", async () => { + game.override.startingWave(54).mysteryEncounterTier(MysteryEncounterTier.COMMON); + + await game.runToMysteryEncounter(); + + expect(scene.currentBattle?.mysteryEncounter?.encounterType).toBe(MysteryEncounterType.TELEPORTING_HIJINKS); + }); + + it("should NOT run in waves that are not X2, X3, or X4", async () => { + game.override.startingWave(67); await game.runToMysteryEncounter(); diff --git a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts index 471a26aa532..4556f7a7f45 100644 --- a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -19,8 +19,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/theExpertPokemonBreeder"; diff --git a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index 81329c5552f..611a103dab2 100644 --- a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -17,8 +17,8 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/thePokemonSalesman"; diff --git a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index 9a78cd99f93..a314a14485f 100644 --- a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -24,8 +24,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts index 0541826e569..ae2f9fd79ff 100644 --- a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -21,8 +21,8 @@ import { PartyHealPhase } from "#phases/party-heal-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { VictoryPhase } from "#phases/victory-phase"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts index 48b6ce79488..133fbfb10ba 100644 --- a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -27,8 +27,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import * as Utils from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; diff --git a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index a9ebfda496a..24d7960049e 100644 --- a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -24,8 +24,8 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index f68818bbfe4..e9fcc9797d1 100644 --- a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -16,8 +16,8 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/mystery-encounter-utils.test.ts b/test/mystery-encounter/mystery-encounter-utils.test.ts index 745b11b7e73..adcc3111319 100644 --- a/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -18,8 +18,8 @@ import { } from "#mystery-encounters/encounter-pokemon-utils"; import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import { MessagePhase } from "#phases/message-phase"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/mystery-encounter/mystery-encounter.test.ts b/test/mystery-encounter/mystery-encounter.test.ts index c8ac7078788..ec27f7c6a48 100644 --- a/test/mystery-encounter/mystery-encounter.test.ts +++ b/test/mystery-encounter/mystery-encounter.test.ts @@ -2,7 +2,7 @@ import type { BattleScene } from "#app/battle-scene"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,7 +24,7 @@ describe("Mystery Encounters", () => { beforeEach(() => { game = new GameManager(phaserGame); scene = game.scene; - game.override.startingWave(11).mysteryEncounterChance(100); + game.override.startingWave(12).mysteryEncounterChance(100); }); it("Spawns a mystery encounter", async () => { @@ -37,12 +37,20 @@ describe("Mystery Encounters", () => { expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(MysteryEncounterPhase.name); }); + it("Encounters should not run on X1 waves", async () => { + game.override.startingWave(11); + + await game.runToMysteryEncounter(); + + expect(scene.currentBattle.mysteryEncounter).toBeUndefined(); + }); + it("Encounters should not run below wave 10", async () => { game.override.startingWave(9); await game.runToMysteryEncounter(); - expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.MYSTERIOUS_CHALLENGERS); + expect(scene.currentBattle.mysteryEncounter).toBeUndefined(); }); it("Encounters should not run above wave 180", async () => { diff --git a/test/phases/capture-phase.test.ts b/test/phases/capture-phase.test.ts new file mode 100644 index 00000000000..45a915ebb55 --- /dev/null +++ b/test/phases/capture-phase.test.ts @@ -0,0 +1,37 @@ +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, it } from "vitest"; + +describe("Capture Phase", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .ability(AbilityId.BALL_FETCH) + .battleStyle("single") + .criticalHits(false) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .startingLevel(100) + .enemyLevel(100); + }); + + // TODO: write test and enable once the phase's logic has been refactored + it.todo("should reset the captured Pokemon's temporary data"); +}); diff --git a/test/phases/check-interlude-phase.test.ts b/test/phases/check-interlude-phase.test.ts new file mode 100644 index 00000000000..d5413d1db35 --- /dev/null +++ b/test/phases/check-interlude-phase.test.ts @@ -0,0 +1,63 @@ +import { AbilityId } from "#enums/ability-id"; +import { BerryType } from "#enums/berry-type"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { WeatherType } from "#enums/weather-type"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Check Biome End Phase", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) + .startingLevel(100) + .battleStyle("single"); + }); + + it("should not trigger end of turn effects when defeating the final pokemon of a biome in classic", async () => { + game.override + .startingWave(10) + .weather(WeatherType.SANDSTORM) + .startingHeldItems([{ name: "BERRY", type: BerryType.SITRUS }]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const player = game.field.getPlayerPokemon(); + + player.hp = 1; + + game.move.use(MoveId.EXTREME_SPEED); + await game.toEndOfTurn(); + + expect(player.hp).toBe(1); + }); + + it("should not prevent end of turn effects when transitioning waves within a biome", async () => { + game.override.weather(WeatherType.SANDSTORM); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const player = game.field.getPlayerPokemon(); + + game.move.use(MoveId.EXTREME_SPEED); + await game.toEndOfTurn(); + + expect(player.hp).toBeLessThan(player.getMaxHp()); + }); +}); diff --git a/test/phases/form-change-phase.test.ts b/test/phases/form-change-phase.test.ts index 4d3af280043..3caf824b252 100644 --- a/test/phases/form-change-phase.test.ts +++ b/test/phases/form-change-phase.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/phases/frenzy-move-reset.test.ts b/test/phases/frenzy-move-reset.test.ts index c922a121526..feedd1b5865 100644 --- a/test/phases/frenzy-move-reset.test.ts +++ b/test/phases/frenzy-move-reset.test.ts @@ -4,7 +4,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -52,7 +52,7 @@ describe("Frenzy Move Reset", () => { it("should cancel frenzy move if move fails turn 2", async () => { await game.classicMode.startBattle(); - const playerPokemon = game.scene.getPlayerPokemon()!; + const playerPokemon = game.field.getPlayerPokemon(); game.move.select(MoveId.THRASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/phases/game-over-phase.test.ts b/test/phases/game-over-phase.test.ts index d679b812fc0..201eebc5264 100644 --- a/test/phases/game-over-phase.test.ts +++ b/test/phases/game-over-phase.test.ts @@ -4,7 +4,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Unlockables } from "#enums/unlockables"; import { achvs } from "#system/achv"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/phases/learn-move-phase.test.ts b/test/phases/learn-move-phase.test.ts index b7e7175a46c..3181f9238dd 100644 --- a/test/phases/learn-move-phase.test.ts +++ b/test/phases/learn-move-phase.test.ts @@ -3,7 +3,7 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import { LearnMovePhase } from "#phases/learn-move-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -29,7 +29,7 @@ describe("Learn Move Phase", () => { it("If Pokemon has less than 4 moves, its newest move will be added to the lowest empty index", async () => { game.override.moveset([MoveId.SPLASH]); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const pokemon = game.scene.getPlayerPokemon()!; + const pokemon = game.field.getPlayerPokemon(); const newMovePos = pokemon?.getMoveset().length; game.move.select(MoveId.SPLASH); await game.doKillOpponents(); @@ -43,7 +43,7 @@ describe("Learn Move Phase", () => { it("If a pokemon has 4 move slots filled, the chosen move will be deleted and replaced", async () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const bulbasaur = game.scene.getPlayerPokemon()!; + const bulbasaur = game.field.getPlayerPokemon(); const prevMoveset = [MoveId.SPLASH, MoveId.ABSORB, MoveId.ACID, MoveId.VINE_WHIP]; const moveSlotNum = 3; @@ -74,7 +74,7 @@ describe("Learn Move Phase", () => { it("selecting the newly deleted move will reject it and keep old moveset", async () => { await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const bulbasaur = game.scene.getPlayerPokemon()!; + const bulbasaur = game.field.getPlayerPokemon(); const prevMoveset = [MoveId.SPLASH, MoveId.ABSORB, MoveId.ACID, MoveId.VINE_WHIP]; game.move.changeMoveset(bulbasaur, [MoveId.SPLASH, MoveId.ABSORB, MoveId.ACID, MoveId.VINE_WHIP]); diff --git a/test/phases/mystery-encounter-phase.test.ts b/test/phases/mystery-encounter-phase.test.ts index 3c41028e4b7..2b6105c7034 100644 --- a/test/phases/mystery-encounter-phase.test.ts +++ b/test/phases/mystery-encounter-phase.test.ts @@ -4,7 +4,7 @@ import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import { MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { MessageUiHandler } from "#ui/message-ui-handler"; import type { MysteryEncounterUiHandler } from "#ui/mystery-encounter-ui-handler"; import i18next from "i18next"; @@ -27,7 +27,7 @@ describe("Mystery Encounter Phases", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.startingWave(11).mysteryEncounterChance(100).seed("test"); // Seed guarantees wild encounter to be replaced by ME + game.override.startingWave(12).mysteryEncounterChance(100).seed("test"); // Seed guarantees wild encounter to be replaced by ME }); describe("MysteryEncounterPhase", () => { diff --git a/test/phases/phases.test.ts b/test/phases/phases.test.ts index daa63fe2adc..27ee4114701 100644 --- a/test/phases/phases.test.ts +++ b/test/phases/phases.test.ts @@ -3,7 +3,7 @@ import { UiMode } from "#enums/ui-mode"; import { LoginPhase } from "#phases/login-phase"; import { TitlePhase } from "#phases/title-phase"; import { UnavailablePhase } from "#phases/unavailable-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/phases/select-modifier-phase.test.ts b/test/phases/select-modifier-phase.test.ts index 565fbe8e439..ae4cebb1866 100644 --- a/test/phases/select-modifier-phase.test.ts +++ b/test/phases/select-modifier-phase.test.ts @@ -10,8 +10,8 @@ import { PlayerPokemon } from "#field/pokemon"; import type { CustomModifierSettings } from "#modifiers/modifier-type"; import { ModifierTypeOption } from "#modifiers/modifier-type"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; -import { GameManager } from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { shiftCharCodes } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; diff --git a/test/plugins/api/pokerogue-account-api.test.ts b/test/plugins/api/pokerogue-account-api.test.ts index 578b6ba041a..b830289c773 100644 --- a/test/plugins/api/pokerogue-account-api.test.ts +++ b/test/plugins/api/pokerogue-account-api.test.ts @@ -1,8 +1,8 @@ import { PokerogueAccountApi } from "#api/pokerogue-account-api"; import { SESSION_ID_COOKIE_NAME } from "#app/constants"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import type { AccountInfoResponse } from "#types/PokerogueAccountApi"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; +import type { AccountInfoResponse } from "#types/api/pokerogue-account-api"; import * as CookieUtils from "#utils/cookies"; import * as cookies from "#utils/cookies"; import { HttpResponse, http } from "msw"; diff --git a/test/plugins/api/pokerogue-admin-api.test.ts b/test/plugins/api/pokerogue-admin-api.test.ts index e36f45801b6..a40fa23698f 100644 --- a/test/plugins/api/pokerogue-admin-api.test.ts +++ b/test/plugins/api/pokerogue-admin-api.test.ts @@ -1,6 +1,6 @@ import { PokerogueAdminApi } from "#api/pokerogue-admin-api"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; import type { LinkAccountToDiscordIdRequest, LinkAccountToGoogledIdRequest, @@ -8,7 +8,7 @@ import type { SearchAccountResponse, UnlinkAccountFromDiscordIdRequest, UnlinkAccountFromGoogledIdRequest, -} from "#types/PokerogueAdminApi"; +} from "#types/api/pokerogue-admin-api"; import { HttpResponse, http } from "msw"; import type { SetupServerApi } from "msw/node"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/plugins/api/pokerogue-api.test.ts b/test/plugins/api/pokerogue-api.test.ts index b9ebbe0f685..afd7b3dd608 100644 --- a/test/plugins/api/pokerogue-api.test.ts +++ b/test/plugins/api/pokerogue-api.test.ts @@ -1,7 +1,7 @@ import { pokerogueApi } from "#api/pokerogue-api"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import type { TitleStatsResponse } from "#types/PokerogueApi"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; +import type { TitleStatsResponse } from "#types/api/pokerogue-api-types"; import { HttpResponse, http } from "msw"; import type { SetupServerApi } from "msw/node"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/plugins/api/pokerogue-daily-api.test.ts b/test/plugins/api/pokerogue-daily-api.test.ts index 6399c80781e..ef5dfddada5 100644 --- a/test/plugins/api/pokerogue-daily-api.test.ts +++ b/test/plugins/api/pokerogue-daily-api.test.ts @@ -1,7 +1,7 @@ import { PokerogueDailyApi } from "#api/pokerogue-daily-api"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#types/PokerogueDailyApi"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; +import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#types/api/pokerogue-daily-api"; import { type RankingEntry, ScoreboardCategory } from "#ui/daily-run-scoreboard"; import { HttpResponse, http } from "msw"; import type { SetupServerApi } from "msw/node"; diff --git a/test/plugins/api/pokerogue-savedata-api.test.ts b/test/plugins/api/pokerogue-savedata-api.test.ts index d465759bdfc..5dbaf9ff542 100644 --- a/test/plugins/api/pokerogue-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-savedata-api.test.ts @@ -1,7 +1,7 @@ import { PokerogueSavedataApi } from "#api/pokerogue-savedata-api"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import type { UpdateAllSavedataRequest } from "#types/PokerogueSavedataApi"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; +import type { UpdateAllSavedataRequest } from "#types/api/pokerogue-save-data-api"; import { HttpResponse, http } from "msw"; import type { SetupServerApi } from "msw/node"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/plugins/api/pokerogue-session-savedata-api.test.ts b/test/plugins/api/pokerogue-session-savedata-api.test.ts index e95697ab72e..d7ee2703405 100644 --- a/test/plugins/api/pokerogue-session-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-session-savedata-api.test.ts @@ -1,7 +1,7 @@ import { PokerogueSessionSavedataApi } from "#api/pokerogue-session-savedata-api"; import type { SessionSaveData } from "#system/game-data"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; import type { ClearSessionSavedataRequest, ClearSessionSavedataResponse, @@ -9,7 +9,7 @@ import type { GetSessionSavedataRequest, NewClearSessionSavedataRequest, UpdateSessionSavedataRequest, -} from "#types/PokerogueSessionSavedataApi"; +} from "#types/api/pokerogue-session-save-data-api"; import { HttpResponse, http } from "msw"; import type { SetupServerApi } from "msw/node"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/plugins/api/pokerogue-system-savedata-api.test.ts b/test/plugins/api/pokerogue-system-savedata-api.test.ts index 0bec6dae16b..d6e4fe18eed 100644 --- a/test/plugins/api/pokerogue-system-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-system-savedata-api.test.ts @@ -1,13 +1,13 @@ import { PokerogueSystemSavedataApi } from "#api/pokerogue-system-savedata-api"; import type { SystemSaveData } from "#system/game-data"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; import type { GetSystemSavedataRequest, UpdateSystemSavedataRequest, VerifySystemSavedataRequest, VerifySystemSavedataResponse, -} from "#types/PokerogueSystemSavedataApi"; +} from "#types/api/pokerogue-system-save-data-api"; import { HttpResponse, http } from "msw"; import type { SetupServerApi } from "msw/node"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/reload.test.ts b/test/reload.test.ts index a1cdfcb392a..018a5e334ef 100644 --- a/test/reload.test.ts +++ b/test/reload.test.ts @@ -5,8 +5,8 @@ import { GameModes } from "#enums/game-modes"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import { GameManager } from "#test/testUtils/gameManager"; -import type { MockClock } from "#test/testUtils/mocks/mockClock"; +import { GameManager } from "#test/test-utils/game-manager"; +import type { MockClock } from "#test/test-utils/mocks/mock-clock"; import type { OptionSelectUiHandler } from "#ui/option-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/settingMenu/helpers/inGameManip.ts b/test/setting-menu/helpers/in-game-manip.ts similarity index 76% rename from test/settingMenu/helpers/inGameManip.ts rename to test/setting-menu/helpers/in-game-manip.ts index c19c6745300..2f4350bab5c 100644 --- a/test/settingMenu/helpers/inGameManip.ts +++ b/test/setting-menu/helpers/in-game-manip.ts @@ -1,5 +1,6 @@ -import { getIconForLatestInput, getSettingNameWithKeycode } from "#inputs/configHandler"; +import { getIconForLatestInput, getSettingNameWithKeycode } from "#inputs/config-handler"; import { SettingKeyboard } from "#system/settings-keyboard"; +import { toPascalSnakeCase } from "#utils/strings"; import { expect } from "vitest"; export class InGameManip { @@ -56,22 +57,11 @@ export class InGameManip { return this; } - normalizeSettingNameString(input) { - // Convert the input string to lower case - const lowerCasedInput = input.toLowerCase(); - - // Replace underscores with spaces, capitalize the first letter of each word, and join them back with underscores - const words = lowerCasedInput.split("_").map(word => word.charAt(0).toUpperCase() + word.slice(1)); - const result = words.join("_"); - - return result; - } - weShouldTriggerTheButton(settingName) { if (!settingName.includes("Button_")) { settingName = "Button_" + settingName; } - this.settingName = SettingKeyboard[this.normalizeSettingNameString(settingName)]; + this.settingName = SettingKeyboard[toPascalSnakeCase(settingName)]; expect(getSettingNameWithKeycode(this.config, this.keycode)).toEqual(this.settingName); return this; } diff --git a/test/settingMenu/helpers/menuManip.ts b/test/setting-menu/helpers/menu-manip.ts similarity index 98% rename from test/settingMenu/helpers/menuManip.ts rename to test/setting-menu/helpers/menu-manip.ts index 37c0f823559..276fef2f973 100644 --- a/test/settingMenu/helpers/menuManip.ts +++ b/test/setting-menu/helpers/menu-manip.ts @@ -9,7 +9,7 @@ import { getKeyWithKeycode, getKeyWithSettingName, getSettingNameWithKeycode, -} from "#inputs/configHandler"; +} from "#inputs/config-handler"; import { SettingKeyboard } from "#system/settings-keyboard"; import { expect } from "vitest"; @@ -29,6 +29,7 @@ export class MenuManip { this.specialCaseIcon = null; } + // TODO: Review this convertNameToButtonString(input) { // Check if the input starts with "Alt_Button" if (input.startsWith("Alt_Button")) { diff --git a/test/settingMenu/rebinding_setting.test.ts b/test/setting-menu/rebinding-setting.test.ts similarity index 99% rename from test/settingMenu/rebinding_setting.test.ts rename to test/setting-menu/rebinding-setting.test.ts index b738861c1ee..6c065a0dd3b 100644 --- a/test/settingMenu/rebinding_setting.test.ts +++ b/test/setting-menu/rebinding-setting.test.ts @@ -1,11 +1,11 @@ import type { InterfaceConfig } from "#app/inputs-controller"; import { Button } from "#enums/buttons"; import { Device } from "#enums/devices"; -import cfg_keyboard_qwerty from "#inputs/cfg_keyboard_qwerty"; -import { getKeyWithKeycode, getKeyWithSettingName } from "#inputs/configHandler"; +import cfg_keyboard_qwerty from "#inputs/cfg-keyboard-qwerty"; +import { getKeyWithKeycode, getKeyWithSettingName } from "#inputs/config-handler"; import { SettingKeyboard } from "#system/settings-keyboard"; -import { InGameManip } from "#test/settingMenu/helpers/inGameManip"; -import { MenuManip } from "#test/settingMenu/helpers/menuManip"; +import { InGameManip } from "#test/setting-menu/helpers/in-game-manip"; +import { MenuManip } from "#test/setting-menu/helpers/menu-manip"; import { deepCopy } from "#utils/data"; import { beforeEach, describe, expect, it } from "vitest"; diff --git a/test/sprites/pokemonSprite.test.ts b/test/sprites/pokemon-sprite.test.ts similarity index 99% rename from test/sprites/pokemonSprite.test.ts rename to test/sprites/pokemon-sprite.test.ts index 019dc51a8e2..bf945636a71 100644 --- a/test/sprites/pokemonSprite.test.ts +++ b/test/sprites/pokemon-sprite.test.ts @@ -1,4 +1,4 @@ -import { getAppRootDir } from "#test/sprites/spritesUtils"; +import { getAppRootDir } from "#test/sprites/sprites-utils"; import fs from "fs"; import path from "path"; import { beforeAll, describe, expect, it } from "vitest"; diff --git a/test/sprites/spritesUtils.ts b/test/sprites/sprites-utils.ts similarity index 100% rename from test/sprites/spritesUtils.ts rename to test/sprites/sprites-utils.ts diff --git a/test/system/game_data.test.ts b/test/system/game-data.test.ts similarity index 97% rename from test/system/game_data.test.ts rename to test/system/game-data.test.ts index 5daed0b2f1b..18775f310b7 100644 --- a/test/system/game_data.test.ts +++ b/test/system/game-data.test.ts @@ -4,7 +4,7 @@ import * as bypassLoginModule from "#app/global-vars/bypass-login"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import type { SessionSaveData } from "#system/game-data"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/testUtils/errorInterceptor.ts b/test/test-utils/error-interceptor.ts similarity index 100% rename from test/testUtils/errorInterceptor.ts rename to test/test-utils/error-interceptor.ts diff --git a/test/testUtils/fakeMobile.html b/test/test-utils/fakeMobile.html similarity index 100% rename from test/testUtils/fakeMobile.html rename to test/test-utils/fakeMobile.html diff --git a/test/testUtils/gameManagerUtils.ts b/test/test-utils/game-manager-utils.ts similarity index 91% rename from test/testUtils/gameManagerUtils.ts rename to test/test-utils/game-manager-utils.ts index db758cfe64d..89e352cdbdc 100644 --- a/test/testUtils/gameManagerUtils.ts +++ b/test/test-utils/game-manager-utils.ts @@ -3,7 +3,6 @@ import type { BattleScene } from "#app/battle-scene"; import { getGameMode } from "#app/game-mode"; import { getDailyRunStarters } from "#data/daily-run"; import { Gender } from "#data/gender"; -import { getPokemonSpeciesForm } from "#data/pokemon-species"; import { BattleType } from "#enums/battle-type"; import { GameModes } from "#enums/game-modes"; import type { MoveId } from "#enums/move-id"; @@ -11,7 +10,7 @@ import type { SpeciesId } from "#enums/species-id"; import { PlayerPokemon } from "#field/pokemon"; import type { StarterMoveset } from "#system/game-data"; import type { Starter } from "#ui/starter-select-ui-handler"; -import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; /** Function to convert Blob to string */ export function blobToString(blob) { @@ -87,17 +86,6 @@ function getTestRunStarters(seed: string, species?: SpeciesId[]): Starter[] { return starters; } -export function waitUntil(truth): Promise { - return new Promise(resolve => { - const interval = setInterval(() => { - if (truth()) { - clearInterval(interval); - resolve(true); - } - }, 1000); - }); -} - /** * Useful for populating party, wave index, etc. without having to spin up and run through an entire EncounterPhase */ diff --git a/test/testUtils/gameManager.ts b/test/test-utils/game-manager.ts similarity index 87% rename from test/testUtils/gameManager.ts rename to test/test-utils/game-manager.ts index b6d0da49902..f952557bb69 100644 --- a/test/testUtils/gameManager.ts +++ b/test/test-utils/game-manager.ts @@ -30,22 +30,22 @@ import { TitlePhase } from "#phases/title-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; import { TurnStartPhase } from "#phases/turn-start-phase"; -import { ErrorInterceptor } from "#test/testUtils/errorInterceptor"; -import { generateStarter, waitUntil } from "#test/testUtils/gameManagerUtils"; -import { GameWrapper } from "#test/testUtils/gameWrapper"; -import { ChallengeModeHelper } from "#test/testUtils/helpers/challengeModeHelper"; -import { ClassicModeHelper } from "#test/testUtils/helpers/classicModeHelper"; -import { DailyModeHelper } from "#test/testUtils/helpers/dailyModeHelper"; -import { FieldHelper } from "#test/testUtils/helpers/field-helper"; -import { ModifierHelper } from "#test/testUtils/helpers/modifiersHelper"; -import { MoveHelper } from "#test/testUtils/helpers/moveHelper"; -import { OverridesHelper } from "#test/testUtils/helpers/overridesHelper"; -import { ReloadHelper } from "#test/testUtils/helpers/reloadHelper"; -import { SettingsHelper } from "#test/testUtils/helpers/settingsHelper"; -import type { InputsHandler } from "#test/testUtils/inputsHandler"; -import { MockFetch } from "#test/testUtils/mocks/mockFetch"; -import { PhaseInterceptor } from "#test/testUtils/phaseInterceptor"; -import { TextInterceptor } from "#test/testUtils/TextInterceptor"; +import { ErrorInterceptor } from "#test/test-utils/error-interceptor"; +import { generateStarter } from "#test/test-utils/game-manager-utils"; +import { GameWrapper } from "#test/test-utils/game-wrapper"; +import { ChallengeModeHelper } from "#test/test-utils/helpers/challenge-mode-helper"; +import { ClassicModeHelper } from "#test/test-utils/helpers/classic-mode-helper"; +import { DailyModeHelper } from "#test/test-utils/helpers/daily-mode-helper"; +import { FieldHelper } from "#test/test-utils/helpers/field-helper"; +import { ModifierHelper } from "#test/test-utils/helpers/modifiers-helper"; +import { MoveHelper } from "#test/test-utils/helpers/move-helper"; +import { OverridesHelper } from "#test/test-utils/helpers/overrides-helper"; +import { ReloadHelper } from "#test/test-utils/helpers/reload-helper"; +import { SettingsHelper } from "#test/test-utils/helpers/settings-helper"; +import type { InputsHandler } from "#test/test-utils/inputs-handler"; +import { MockFetch } from "#test/test-utils/mocks/mock-fetch"; +import { PhaseInterceptor } from "#test/test-utils/phase-interceptor"; +import { TextInterceptor } from "#test/test-utils/text-interceptor"; import type { BallUiHandler } from "#ui/ball-ui-handler"; import type { BattleMessageUiHandler } from "#ui/battle-message-ui-handler"; import type { CommandUiHandler } from "#ui/command-ui-handler"; @@ -85,33 +85,22 @@ export class GameManager { constructor(phaserGame: Phaser.Game, bypassLogin = true) { localStorage.clear(); ErrorInterceptor.getInstance().clear(); - BattleScene.prototype.randBattleSeedInt = (range, min = 0) => min + range - 1; // This simulates a max roll + // Simulate max rolls on RNG functions + // TODO: Create helpers for disabling/enabling battle RNG + BattleScene.prototype.randBattleSeedInt = (range, min = 0) => min + range - 1; this.gameWrapper = new GameWrapper(phaserGame, bypassLogin); - let firstTimeScene = false; + // TODO: Figure out a way to optimize and re-use the same game manager for each test + // Re-use an existing `globalScene` if present, or else create a new scene from scratch. if (globalScene) { this.scene = globalScene; + this.phaseInterceptor = new PhaseInterceptor(this.scene); + this.resetScene(); } else { this.scene = new BattleScene(); + this.phaseInterceptor = new PhaseInterceptor(this.scene); this.gameWrapper.setScene(this.scene); - firstTimeScene = true; - } - - this.phaseInterceptor = new PhaseInterceptor(this.scene); - - if (!firstTimeScene) { - this.scene.reset(false, true); - (this.scene.ui.handlers[UiMode.STARTER_SELECT] as StarterSelectUiHandler).clearStarterPreferences(); - this.scene.phaseManager.clearAllPhases(); - - // Must be run after phase interceptor has been initialized. - - this.scene.phaseManager.pushNew("LoginPhase"); - this.scene.phaseManager.pushNew("TitlePhase"); - this.scene.phaseManager.shiftPhase(); - - this.gameWrapper.scene = this.scene; } this.textInterceptor = new TextInterceptor(this.scene); @@ -124,12 +113,31 @@ export class GameManager { this.reload = new ReloadHelper(this); this.modifiers = new ModifierHelper(this); this.field = new FieldHelper(this); - this.override.sanitizeOverrides(); + this.initDefaultOverrides(); + + // TODO: remove `any` assertion + global.fetch = vi.fn(MockFetch) as any; + } + + /** Reset a prior `BattleScene` instance to the proper initial state. */ + private resetScene(): void { + this.scene.reset(false, true); + (this.scene.ui.handlers[UiMode.STARTER_SELECT] as StarterSelectUiHandler).clearStarterPreferences(); + + this.gameWrapper.scene = this.scene; + + this.scene.phaseManager.toTitleScreen(true); + this.scene.phaseManager.shiftPhase(); + } + + /** + * Initialize various default overrides for starting tests, typically to alleviate randomness. + */ + // TODO: This should not be here + private initDefaultOverrides(): void { // Disables Mystery Encounters on all tests (can be overridden at test level) this.override.mysteryEncounterChance(0); - - global.fetch = vi.fn(MockFetch) as any; } /** @@ -145,15 +153,13 @@ export class GameManager { * @param mode - The mode to wait for. * @returns A promise that resolves when the mode is set. */ - waitMode(mode: UiMode): Promise { - return new Promise(async resolve => { - await waitUntil(() => this.scene.ui?.getMode() === mode); - return resolve(); - }); + // TODO: This is unused + async waitMode(mode: UiMode): Promise { + await vi.waitUntil(() => this.scene.ui?.getMode() === mode); } /** - * Ends the current phase. + * End the currently running phase immediately. */ endPhase() { this.scene.phaseManager.getCurrentPhase()?.end(); @@ -287,11 +293,14 @@ export class GameManager { .getPokemon() .getMoveset() [movePosition].getMove(); - if (!move.isMultiTarget()) { - handler.setCursor(targetIndex !== undefined ? targetIndex : BattlerIndex.ENEMY); - } - if (move.isMultiTarget() && targetIndex !== undefined) { - expect.fail(`targetIndex was passed to selectMove() but move ("${move.name}") is not targetted`); + + // Multi target attacks do not select a target + if (move.isMultiTarget()) { + if (targetIndex !== undefined) { + expect.fail(`targetIndex was passed to selectMove() but move ("${move.name}") is not targeted`); + } + } else { + handler.setCursor(targetIndex ?? BattlerIndex.ENEMY); } handler.processInput(Button.ACTION); }, diff --git a/test/testUtils/gameWrapper.ts b/test/test-utils/game-wrapper.ts similarity index 92% rename from test/testUtils/gameWrapper.ts rename to test/test-utils/game-wrapper.ts index b9665ffe071..1a906bf8492 100644 --- a/test/testUtils/gameWrapper.ts +++ b/test/test-utils/game-wrapper.ts @@ -6,14 +6,14 @@ import * as bypassLoginModule from "#app/global-vars/bypass-login"; import { MoveAnim } from "#data/battle-anims"; import { Pokemon } from "#field/pokemon"; import { version } from "#package.json"; -import { blobToString } from "#test/testUtils/gameManagerUtils"; -import { MockClock } from "#test/testUtils/mocks/mockClock"; -import { MockFetch } from "#test/testUtils/mocks/mockFetch"; -import { MockGameObjectCreator } from "#test/testUtils/mocks/mockGameObjectCreator"; -import { MockLoader } from "#test/testUtils/mocks/mockLoader"; -import { MockContainer } from "#test/testUtils/mocks/mocksContainer/mockContainer"; -import { MockTextureManager } from "#test/testUtils/mocks/mockTextureManager"; -import { MockTimedEventManager } from "#test/testUtils/mocks/mockTimedEventManager"; +import { blobToString } from "#test/test-utils/game-manager-utils"; +import { MockClock } from "#test/test-utils/mocks/mock-clock"; +import { MockFetch } from "#test/test-utils/mocks/mock-fetch"; +import { MockGameObjectCreator } from "#test/test-utils/mocks/mock-game-object-creator"; +import { MockLoader } from "#test/test-utils/mocks/mock-loader"; +import { MockTextureManager } from "#test/test-utils/mocks/mock-texture-manager"; +import { MockTimedEventManager } from "#test/test-utils/mocks/mock-timed-event-manager"; +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; import { PokedexMonContainer } from "#ui/pokedex-mon-container"; import { sessionIdKey } from "#utils/common"; import { setCookie } from "#utils/cookies"; diff --git a/test/testUtils/helpers/challengeModeHelper.ts b/test/test-utils/helpers/challenge-mode-helper.ts similarity index 95% rename from test/testUtils/helpers/challengeModeHelper.ts rename to test/test-utils/helpers/challenge-mode-helper.ts index 31b7c062d99..3952685a560 100644 --- a/test/testUtils/helpers/challengeModeHelper.ts +++ b/test/test-utils/helpers/challenge-mode-helper.ts @@ -8,8 +8,8 @@ import { CommandPhase } from "#phases/command-phase"; import { EncounterPhase } from "#phases/encounter-phase"; import { SelectStarterPhase } from "#phases/select-starter-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { generateStarter } from "#test/testUtils/gameManagerUtils"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { generateStarter } from "#test/test-utils/game-manager-utils"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { copyChallenge } from "data/challenge"; /** diff --git a/test/testUtils/helpers/classicModeHelper.ts b/test/test-utils/helpers/classic-mode-helper.ts similarity index 96% rename from test/testUtils/helpers/classicModeHelper.ts rename to test/test-utils/helpers/classic-mode-helper.ts index 55b25623b5a..5d73dc07615 100644 --- a/test/testUtils/helpers/classicModeHelper.ts +++ b/test/test-utils/helpers/classic-mode-helper.ts @@ -9,8 +9,8 @@ import { CommandPhase } from "#phases/command-phase"; import { EncounterPhase } from "#phases/encounter-phase"; import { SelectStarterPhase } from "#phases/select-starter-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { generateStarter } from "#test/testUtils/gameManagerUtils"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { generateStarter } from "#test/test-utils/game-manager-utils"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; /** * Helper to handle classic-mode specific operations. diff --git a/test/testUtils/helpers/dailyModeHelper.ts b/test/test-utils/helpers/daily-mode-helper.ts similarity index 96% rename from test/testUtils/helpers/dailyModeHelper.ts rename to test/test-utils/helpers/daily-mode-helper.ts index 214b6e4c5a4..7aa1e699118 100644 --- a/test/testUtils/helpers/dailyModeHelper.ts +++ b/test/test-utils/helpers/daily-mode-helper.ts @@ -6,7 +6,7 @@ import { CommandPhase } from "#phases/command-phase"; import { EncounterPhase } from "#phases/encounter-phase"; import { TitlePhase } from "#phases/title-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import type { SaveSlotSelectUiHandler } from "#ui/save-slot-select-ui-handler"; /** diff --git a/test/testUtils/helpers/field-helper.ts b/test/test-utils/helpers/field-helper.ts similarity index 89% rename from test/testUtils/helpers/field-helper.ts rename to test/test-utils/helpers/field-helper.ts index ca106804b85..2d8fd8ee701 100644 --- a/test/testUtils/helpers/field-helper.ts +++ b/test/test-utils/helpers/field-helper.ts @@ -5,11 +5,10 @@ import type { globalScene } from "#app/global-scene"; import type { Ability } from "#abilities/ability"; import { allAbilities } from "#data/data-lists"; import type { AbilityId } from "#enums/ability-id"; -import type { BattlerIndex } from "#enums/battler-index"; import type { PokemonType } from "#enums/pokemon-type"; import { Stat } from "#enums/stat"; import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { expect, type MockInstance, vi } from "vitest"; /** Helper to manage pokemon */ @@ -45,18 +44,21 @@ export class FieldHelper extends GameManagerHelper { } /** - * @returns The {@linkcode BattlerIndex | indexes} of Pokemon on the field in order of decreasing Speed. + * Helper function to return all on-field {@linkcode Pokemon} in speed order (fastest first). + * @returns An array containing all {@linkcode Pokemon} on the field in order of descending Speed. * Speed ties are returned in increasing order of index. * * @remarks * This does not account for Trick Room as it does not modify the _speed_ of Pokemon on the field, * only their turn order. */ - public getSpeedOrder(): BattlerIndex[] { + public getSpeedOrder(): Pokemon[] { return this.game.scene .getField(true) - .sort((pA, pB) => pB.getEffectiveStat(Stat.SPD) - pA.getEffectiveStat(Stat.SPD)) - .map(p => p.getBattlerIndex()); + .sort( + (pA, pB) => + pB.getEffectiveStat(Stat.SPD) - pA.getEffectiveStat(Stat.SPD) || pA.getBattlerIndex() - pB.getBattlerIndex(), + ); } /** diff --git a/test/testUtils/helpers/gameManagerHelper.ts b/test/test-utils/helpers/game-manager-helper.ts similarity index 75% rename from test/testUtils/helpers/gameManagerHelper.ts rename to test/test-utils/helpers/game-manager-helper.ts index 6db3819a5cb..eace4d9f5db 100644 --- a/test/testUtils/helpers/gameManagerHelper.ts +++ b/test/test-utils/helpers/game-manager-helper.ts @@ -1,4 +1,4 @@ -import type { GameManager } from "#test/testUtils/gameManager"; +import type { GameManager } from "#test/test-utils/game-manager"; /** * Base class for defining all game helpers. diff --git a/test/testUtils/helpers/modifiersHelper.ts b/test/test-utils/helpers/modifiers-helper.ts similarity index 96% rename from test/testUtils/helpers/modifiersHelper.ts rename to test/test-utils/helpers/modifiers-helper.ts index ff6e78c8a2f..bfda35427fa 100644 --- a/test/testUtils/helpers/modifiersHelper.ts +++ b/test/test-utils/helpers/modifiers-helper.ts @@ -1,6 +1,6 @@ import type { ModifierTypeKeys } from "#modifiers/modifier-type"; import { itemPoolChecks } from "#modifiers/modifier-type"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { expect } from "vitest"; export class ModifierHelper extends GameManagerHelper { diff --git a/test/testUtils/helpers/moveHelper.ts b/test/test-utils/helpers/move-helper.ts similarity index 82% rename from test/testUtils/helpers/moveHelper.ts rename to test/test-utils/helpers/move-helper.ts index 98a1c1664b4..6a01e4110da 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/test-utils/helpers/move-helper.ts @@ -11,8 +11,9 @@ import { PokemonMove } from "#moves/pokemon-move"; import type { CommandPhase } from "#phases/command-phase"; import type { EnemyCommandPhase } from "#phases/enemy-command-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; -import { coerceArray, toReadableString } from "#utils/common"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; +import { coerceArray } from "#utils/common"; +import { toTitleCase } from "#utils/strings"; import type { MockInstance } from "vitest"; import { expect, vi } from "vitest"; @@ -66,12 +67,12 @@ export class MoveHelper extends GameManagerHelper { const movePosition = this.getMovePosition(pkmIndex, move); if (movePosition === -1) { expect.fail( - `MoveHelper.select called with move '${toReadableString(MoveId[move])}' not in moveset!` + - `\nBattler Index: ${toReadableString(BattlerIndex[pkmIndex])}` + + `MoveHelper.select called with move '${toTitleCase(MoveId[move])}' not in moveset!` + + `\nBattler Index: ${toTitleCase(BattlerIndex[pkmIndex])}` + `\nMoveset: [${this.game.scene .getPlayerParty() [pkmIndex].getMoveset() - .map(pm => toReadableString(MoveId[pm.moveId])) + .map(pm => toTitleCase(MoveId[pm.moveId])) .join(", ")}]`, ); } @@ -110,12 +111,12 @@ export class MoveHelper extends GameManagerHelper { const movePosition = this.getMovePosition(pkmIndex, move); if (movePosition === -1) { expect.fail( - `MoveHelper.selectWithTera called with move '${toReadableString(MoveId[move])}' not in moveset!` + - `\nBattler Index: ${toReadableString(BattlerIndex[pkmIndex])}` + + `MoveHelper.selectWithTera called with move '${toTitleCase(MoveId[move])}' not in moveset!` + + `\nBattler Index: ${toTitleCase(BattlerIndex[pkmIndex])}` + `\nMoveset: [${this.game.scene .getPlayerParty() [pkmIndex].getMoveset() - .map(pm => toReadableString(MoveId[pm.moveId])) + .map(pm => toTitleCase(MoveId[pm.moveId])) .join(", ")}]`, ); } @@ -142,7 +143,7 @@ export class MoveHelper extends GameManagerHelper { } } - /** Helper function to get the index of the selected move in the selected part member's moveset. */ + /** Helper function to get the index of the selected move in the selected party member's moveset. */ private getMovePosition(pokemonIndex: BattlerIndex.PLAYER | BattlerIndex.PLAYER_2, move: MoveId): number { const playerPokemon = this.game.scene.getPlayerField()[pokemonIndex]; const moveset = playerPokemon.getMoveset(); @@ -152,17 +153,18 @@ export class MoveHelper extends GameManagerHelper { } /** - * Modifies a player pokemon's moveset to contain only the selected move and then + * Modifies a player pokemon's moveset to contain only the selected move, and then * selects it to be used during the next {@linkcode CommandPhase}. * - * Warning: Will disable the player moveset override if it is enabled! + * **Warning**: Will disable the player moveset override if it is enabled, as well as any mid-battle moveset changes! * - * Note: If you need to check for changes in the player's moveset as part of the test, it may be - * best to use {@linkcode changeMoveset} and {@linkcode select} instead. - * @param moveId - the move to use - * @param pkmIndex - The {@linkcode BattlerIndex} of the player Pokemon using the move. Relevant for double battles only and defaults to {@linkcode BattlerIndex.PLAYER} if not specified. - * @param targetIndex - The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves; should be omitted for multi-target moves. - * @param useTera - If `true`, the Pokemon will attempt to Terastallize even without a Tera Orb; default `false`. + * @param moveId - The {@linkcode MoveId} to use + * @param pkmIndex - The {@linkcode BattlerIndex} of the player Pokemon using the move. Relevant for double battles only and defaults to {@linkcode BattlerIndex.PLAYER} if not specified + * @param targetIndex - The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves; should be omitted for multi-target moves + * @param useTera - If `true`, the Pokemon will attempt to Terastallize even without a Tera Orb; default `false` + * @remarks + * If you need to check for changes in the player's moveset as part of the test, it may be + * better to use {@linkcode changeMoveset} and {@linkcode select} instead. */ public use( moveId: MoveId, @@ -175,8 +177,11 @@ export class MoveHelper extends GameManagerHelper { console.warn("Warning: `MoveHelper.use` overwriting player pokemon moveset and disabling moveset override!"); } + // Clear out both the normal and temporary movesets before setting the move. const pokemon = this.game.scene.getPlayerField()[pkmIndex]; - pokemon.moveset = [new PokemonMove(moveId)]; + pokemon.moveset.splice(0); + pokemon.summonData.moveset?.splice(0); + pokemon.setMove(0, moveId); if (useTera) { this.selectWithTera(moveId, pkmIndex, targetIndex); @@ -209,15 +214,30 @@ export class MoveHelper extends GameManagerHelper { /** * Changes a pokemon's moveset to the given move(s). - * Used when the normal moveset override can't be used (such as when it's necessary to check or update properties of the moveset). + * + * Useful when normal moveset overrides can't be used (such as when it's necessary to check or update properties of the moveset). + * + * **Note**: Will disable the moveset override matching the pokemon's party. * @param pokemon - The {@linkcode Pokemon} being modified * @param moveset - The {@linkcode MoveId} (single or array) to change the Pokemon's moveset to. */ public changeMoveset(pokemon: Pokemon, moveset: MoveId | MoveId[]): void { + if (pokemon.isPlayer()) { + if (coerceArray(Overrides.MOVESET_OVERRIDE).length > 0) { + vi.spyOn(Overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([]); + console.warn("Player moveset override disabled due to use of `game.move.changeMoveset`!"); + } + } else { + if (coerceArray(Overrides.OPP_MOVESET_OVERRIDE).length > 0) { + vi.spyOn(Overrides, "OPP_MOVESET_OVERRIDE", "get").mockReturnValue([]); + console.warn("Enemy moveset override disabled due to use of `game.move.changeMoveset`!"); + } + } moveset = coerceArray(moveset); + expect(moveset.length, "Cannot assign more than 4 moves to a moveset!").toBeLessThanOrEqual(4); pokemon.moveset = []; - moveset.forEach(move => { - pokemon.moveset.push(new PokemonMove(move)); + moveset.forEach((move, i) => { + pokemon.setMove(i, move); }); const movesetStr = moveset.map(moveId => MoveId[moveId]).join(", "); console.log(`Pokemon ${pokemon.species.name}'s moveset manually set to ${movesetStr} (=[${moveset.join(", ")}])!`); @@ -309,10 +329,16 @@ export class MoveHelper extends GameManagerHelper { } /** - * Force the move used by Metronome to be a specific move. - * @param move - The move to force metronome to use - * @param once - If `true`, uses {@linkcode MockInstance#mockReturnValueOnce} when mocking, else uses {@linkcode MockInstance#mockReturnValue}. + * Force the next move(s) used by Metronome to be a specific move. \ + * Triggers during the next upcoming {@linkcode MoveEffectPhase} that Metronome is used. + * @param move - The move to force Metronome to call + * @param once - If `true`, mocks the return value exactly once; default `false` * @returns The spy that for Metronome that was mocked (Usually unneeded). + * @example + * ```ts + * game.move.use(MoveId.METRONOME); + * game.move.forceMetronomeMove(MoveId.FUTURE_SIGHT); // Can be in any order + * ``` */ public forceMetronomeMove(move: MoveId, once = false): MockInstance { const spy = vi.spyOn(allMoves[MoveId.METRONOME].getAttrs("RandomMoveAttr")[0], "getMoveOverride"); diff --git a/test/testUtils/helpers/overridesHelper.ts b/test/test-utils/helpers/overrides-helper.ts similarity index 97% rename from test/testUtils/helpers/overridesHelper.ts rename to test/test-utils/helpers/overrides-helper.ts index 13e3dcc2f09..d67ceedf891 100644 --- a/test/testUtils/helpers/overridesHelper.ts +++ b/test/test-utils/helpers/overrides-helper.ts @@ -3,7 +3,7 @@ import type { NewArenaEvent } from "#events/battle-scene"; /** biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ import type { BattleStyle, RandomTrainerOverride } from "#app/overrides"; -import Overrides, { defaultOverrides } from "#app/overrides"; +import Overrides from "#app/overrides"; import { AbilityId } from "#enums/ability-id"; import type { BattleType } from "#enums/battle-type"; import { BiomeId } from "#enums/biome-id"; @@ -17,9 +17,9 @@ import type { Unlockables } from "#enums/unlockables"; import { WeatherType } from "#enums/weather-type"; import type { ModifierOverride } from "#modifiers/modifier-type"; import type { Variant } from "#sprites/variant"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { coerceArray, shiftCharCodes } from "#utils/common"; -import { expect, vi } from "vitest"; +import { vi } from "vitest"; /** * Helper to handle overrides in tests @@ -667,14 +667,4 @@ export class OverridesHelper extends GameManagerHelper { private log(...params: any[]) { console.log("Overrides:", ...params); } - - public sanitizeOverrides(): void { - for (const key of Object.keys(defaultOverrides)) { - if (Overrides[key] !== defaultOverrides[key]) { - vi.spyOn(Overrides, key as any, "get").mockReturnValue(defaultOverrides[key]); - } - } - expect(Overrides).toEqual(defaultOverrides); - this.log("Sanitizing all overrides!"); - } } diff --git a/test/testUtils/helpers/reloadHelper.ts b/test/test-utils/helpers/reload-helper.ts similarity index 95% rename from test/testUtils/helpers/reloadHelper.ts rename to test/test-utils/helpers/reload-helper.ts index bc8adae6f28..a8ed0e21307 100644 --- a/test/testUtils/helpers/reloadHelper.ts +++ b/test/test-utils/helpers/reload-helper.ts @@ -4,8 +4,8 @@ import { CommandPhase } from "#phases/command-phase"; import { TitlePhase } from "#phases/title-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; import type { SessionSaveData } from "#system/game-data"; -import type { GameManager } from "#test/testUtils/gameManager"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import type { GameManager } from "#test/test-utils/game-manager"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { vi } from "vitest"; /** diff --git a/test/testUtils/helpers/settingsHelper.ts b/test/test-utils/helpers/settings-helper.ts similarity index 94% rename from test/testUtils/helpers/settingsHelper.ts rename to test/test-utils/helpers/settings-helper.ts index 76db93c7de5..a26aa2de33c 100644 --- a/test/testUtils/helpers/settingsHelper.ts +++ b/test/test-utils/helpers/settings-helper.ts @@ -1,7 +1,7 @@ import { BattleStyle } from "#enums/battle-style"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { PlayerGender } from "#enums/player-gender"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; /** * Helper to handle settings for tests diff --git a/test/testUtils/inputsHandler.ts b/test/test-utils/inputs-handler.ts similarity index 93% rename from test/testUtils/inputsHandler.ts rename to test/test-utils/inputs-handler.ts index 6a0db37c9b6..b8b3224c31d 100644 --- a/test/testUtils/inputsHandler.ts +++ b/test/test-utils/inputs-handler.ts @@ -1,8 +1,8 @@ import type { BattleScene } from "#app/battle-scene"; import type { InputsController } from "#app/inputs-controller"; import { TouchControl } from "#app/touch-controls"; -import pad_xbox360 from "#inputs/pad_xbox360"; -import { holdOn } from "#test/testUtils/gameManagerUtils"; +import pad_xbox360 from "#inputs/pad-xbox360"; +import { holdOn } from "#test/test-utils/game-manager-utils"; import fs from "node:fs"; import { JSDOM } from "jsdom"; import Phaser from "phaser"; @@ -98,7 +98,7 @@ class Fakepad extends Phaser.Input.Gamepad.Gamepad { class FakeMobile { constructor() { - const fakeMobilePage = fs.readFileSync("././test/testUtils/fakeMobile.html", { encoding: "utf8", flag: "r" }); + const fakeMobilePage = fs.readFileSync("././test/test-utils/fakeMobile.html", { encoding: "utf8", flag: "r" }); const dom = new JSDOM(fakeMobilePage); Object.defineProperty(window, "document", { value: dom.window.document, diff --git a/test/testUtils/listenersManager.ts b/test/test-utils/listeners-manager.ts similarity index 100% rename from test/testUtils/listenersManager.ts rename to test/test-utils/listeners-manager.ts diff --git a/test/test-utils/matchers/to-equal-array-unsorted.ts b/test/test-utils/matchers/to-equal-array-unsorted.ts new file mode 100644 index 00000000000..846ea9e7779 --- /dev/null +++ b/test/test-utils/matchers/to-equal-array-unsorted.ts @@ -0,0 +1,47 @@ +import { getOnelineDiffStr } from "#test/test-utils/string-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if an array contains exactly the given items, disregarding order. + * @param received - The received value. Should be an array of elements + * @param expected - The array to check equality with + * @returns Whether the matcher passed + */ +export function toEqualArrayUnsorted( + this: MatcherState, + received: unknown, + expected: unknown[], +): SyncExpectationResult { + if (!Array.isArray(received)) { + return { + pass: false, + message: () => `Expected an array, but got ${this.utils.stringify(received)}!`, + }; + } + + if (received.length !== expected.length) { + return { + pass: false, + message: () => `Expected to receive array of length ${received.length}, but got ${expected.length} instead!`, + actual: received, + expected, + }; + } + + const actualSorted = received.slice().sort(); + const expectedSorted = expected.slice().sort(); + const pass = this.equals(actualSorted, expectedSorted, [...this.customTesters, this.utils.iterableEquality]); + + const actualStr = getOnelineDiffStr.call(this, actualSorted); + const expectedStr = getOnelineDiffStr.call(this, expectedSorted); + + return { + pass, + message: () => + pass + ? `Expected ${actualStr} to NOT exactly equal ${expectedStr} without order, but it did!` + : `Expected ${actualStr} to exactly equal ${expectedStr} without order, but it didn't!`, + expected: expectedSorted, + actual: actualSorted, + }; +} diff --git a/test/test-utils/matchers/to-have-ability-applied.ts b/test/test-utils/matchers/to-have-ability-applied.ts new file mode 100644 index 00000000000..a3921e6371c --- /dev/null +++ b/test/test-utils/matchers/to-have-ability-applied.ts @@ -0,0 +1,43 @@ +/* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ +import type { Pokemon } from "#field/pokemon"; +/* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ + +import { getPokemonNameWithAffix } from "#app/messages"; +import { AbilityId } from "#enums/ability-id"; +import { getEnumStr } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a {@linkcode Pokemon} has applied a specific {@linkcode AbilityId}. + * @param received - The object to check. Should be a {@linkcode Pokemon} + * @param expectedAbility - The {@linkcode AbilityId} to check for + * @returns Whether the matcher passed + */ +export function toHaveAbilityApplied( + this: MatcherState, + received: unknown, + expectedAbilityId: AbilityId, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to recieve a Pokemon, but got ${receivedStr(received)}!`, + }; + } + + const pass = received.waveData.abilitiesApplied.has(expectedAbilityId); + + const pkmName = getPokemonNameWithAffix(received); + const expectedAbilityStr = getEnumStr(AbilityId, expectedAbilityId); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have applied ${expectedAbilityStr}, but it did!` + : `Expected ${pkmName} to have applied ${expectedAbilityStr}, but it didn't!`, + expected: expectedAbilityId, + actual: received.waveData.abilitiesApplied, + }; +} diff --git a/test/test-utils/matchers/to-have-battler-tag.ts b/test/test-utils/matchers/to-have-battler-tag.ts new file mode 100644 index 00000000000..af405d7da39 --- /dev/null +++ b/test/test-utils/matchers/to-have-battler-tag.ts @@ -0,0 +1,43 @@ +/* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ +import type { Pokemon } from "#field/pokemon"; +/* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ + +import { getPokemonNameWithAffix } from "#app/messages"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { getEnumStr } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a {@linkcode Pokemon} has a specific {@linkcode BattlerTagType}. + * @param received - The object to check. Should be a {@linkcode Pokemon} + * @param expectedBattlerTagType - The {@linkcode BattlerTagType} to check for + * @returns Whether the matcher passed + */ +export function toHaveBattlerTag( + this: MatcherState, + received: unknown, + expectedBattlerTagType: BattlerTagType, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: this.isNot, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const pass = !!received.getTag(expectedBattlerTagType); + const pkmName = getPokemonNameWithAffix(received); + // "BattlerTagType.SEEDED (=1)" + const expectedTagStr = getEnumStr(BattlerTagType, expectedBattlerTagType, { prefix: "BattlerTagType." }); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have ${expectedTagStr}, but it did!` + : `Expected ${pkmName} to have ${expectedTagStr}, but it didn't!`, + expected: expectedBattlerTagType, + actual: received.summonData.tags.map(t => t.tagType), + }; +} diff --git a/test/test-utils/matchers/to-have-effective-stat.ts b/test/test-utils/matchers/to-have-effective-stat.ts new file mode 100644 index 00000000000..bc10a646c02 --- /dev/null +++ b/test/test-utils/matchers/to-have-effective-stat.ts @@ -0,0 +1,66 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +import type { EffectiveStat } from "#enums/stat"; +import type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { getStatName } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +export interface ToHaveEffectiveStatMatcherOptions { + /** + * The target {@linkcode Pokemon} + * @see {@linkcode Pokemon.getEffectiveStat} + */ + enemy?: Pokemon; + /** + * The {@linkcode Move} being used + * @see {@linkcode Pokemon.getEffectiveStat} + */ + move?: Move; + /** + * Whether a critical hit occurred or not + * @see {@linkcode Pokemon.getEffectiveStat} + * @defaultValue `false` + */ + isCritical?: boolean; +} + +/** + * Matcher that checks if a {@linkcode Pokemon}'s effective stat equals a certain value. + * @param received - The object to check. Should be a {@linkcode Pokemon} + * @param stat - The {@linkcode EffectiveStat} to check + * @param expectedValue - The expected value of the {@linkcode stat} + * @param options - The {@linkcode ToHaveEffectiveStatMatcherOptions} + * @returns Whether the matcher passed + */ +export function toHaveEffectiveStat( + this: MatcherState, + received: unknown, + stat: EffectiveStat, + expectedValue: number, + { enemy, move, isCritical = false }: ToHaveEffectiveStatMatcherOptions = {}, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + // TODO: Change once getEffectiveStat is refactored to take an object literal + const actualValue = received.getEffectiveStat(stat, enemy, move, undefined, undefined, undefined, isCritical); + const pass = actualValue === expectedValue; + + const pkmName = getPokemonNameWithAffix(received); + const statName = getStatName(stat); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have ${expectedValue} ${statName}, but it did!` + : `Expected ${pkmName} to have ${expectedValue} ${statName}, but got ${actualValue} instead!`, + expected: expectedValue, + actual: actualValue, + }; +} diff --git a/test/test-utils/matchers/to-have-fainted.ts b/test/test-utils/matchers/to-have-fainted.ts new file mode 100644 index 00000000000..73ca96a31b5 --- /dev/null +++ b/test/test-utils/matchers/to-have-fainted.ts @@ -0,0 +1,35 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +// biome-ignore lint/correctness/noUnusedImports: TSDoc +import type { Pokemon } from "#field/pokemon"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a {@linkcode Pokemon} has fainted. + * @param received - The object to check. Should be a {@linkcode Pokemon} + * @returns Whether the matcher passed + */ +export function toHaveFainted(this: MatcherState, received: unknown): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const pass = received.isFainted(); + + const hp = received.hp; + const maxHp = received.getMaxHp(); + const pkmName = getPokemonNameWithAffix(received); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have fainted, but it did!` + : `Expected ${pkmName} to have fainted, but it didn't! (${hp}/${maxHp} HP)`, + expected: 0, + actual: hp, + }; +} diff --git a/test/test-utils/matchers/to-have-full-hp.ts b/test/test-utils/matchers/to-have-full-hp.ts new file mode 100644 index 00000000000..3d7c8f9458d --- /dev/null +++ b/test/test-utils/matchers/to-have-full-hp.ts @@ -0,0 +1,35 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +// biome-ignore lint/correctness/noUnusedImports: TSDoc +import type { Pokemon } from "#field/pokemon"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a {@linkcode Pokemon} is at full hp. + * @param received - The object to check. Should be a {@linkcode Pokemon}. + * @returns Whether the matcher passed + */ +export function toHaveFullHp(this: MatcherState, received: unknown): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const pass = received.isFullHp(); + + const hp = received.hp; + const maxHp = received.getMaxHp(); + const pkmName = getPokemonNameWithAffix(received); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have full hp, but it did!` + : `Expected ${pkmName} to have full hp, but it didn't! (${hp}/${maxHp} HP)`, + expected: maxHp, + actual: hp, + }; +} diff --git a/test/test-utils/matchers/to-have-hp.ts b/test/test-utils/matchers/to-have-hp.ts new file mode 100644 index 00000000000..20d171b23ce --- /dev/null +++ b/test/test-utils/matchers/to-have-hp.ts @@ -0,0 +1,35 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +// biome-ignore lint/correctness/noUnusedImports: TSDoc +import type { Pokemon } from "#field/pokemon"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a Pokemon has a specific amount of HP. + * @param received - The object to check. Should be a {@linkcode Pokemon}. + * @param expectedHp - The expected amount of HP the {@linkcode Pokemon} has + * @returns Whether the matcher passed + */ +export function toHaveHp(this: MatcherState, received: unknown, expectedHp: number): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const actualHp = received.hp; + const pass = actualHp === expectedHp; + + const pkmName = getPokemonNameWithAffix(received); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have ${expectedHp} HP, but it did!` + : `Expected ${pkmName} to have ${expectedHp} HP, but got ${actualHp} HP instead!`, + expected: expectedHp, + actual: actualHp, + }; +} diff --git a/test/test-utils/matchers/to-have-stat-stage.ts b/test/test-utils/matchers/to-have-stat-stage.ts new file mode 100644 index 00000000000..feecd650bef --- /dev/null +++ b/test/test-utils/matchers/to-have-stat-stage.ts @@ -0,0 +1,53 @@ +/** biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports */ +import type { Pokemon } from "#field/pokemon"; +/** biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports */ + +import { getPokemonNameWithAffix } from "#app/messages"; +import type { BattleStat } from "#enums/stat"; +import { getStatName } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a Pokemon has a specific {@linkcode BattleStat | Stat} stage. + * @param received - The object to check. Should be a {@linkcode Pokemon}. + * @param stat - The {@linkcode BattleStat | Stat} to check + * @param expectedStage - The expected numerical value of {@linkcode stat}; should be within the range `[-6, 6]` + * @returns Whether the matcher passed + */ +export function toHaveStatStage( + this: MatcherState, + received: unknown, + stat: BattleStat, + expectedStage: number, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + if (expectedStage < -6 || expectedStage > 6) { + return { + pass: false, + message: () => `Expected ${expectedStage} to be within the range [-6, 6]!`, + }; + } + + const actualStage = received.getStatStage(stat); + const pass = actualStage === expectedStage; + + const pkmName = getPokemonNameWithAffix(received); + const statName = getStatName(stat); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName}'s ${statName} stat stage to NOT be ${expectedStage}, but it was!` + : `Expected ${pkmName}'s ${statName} stat stage to be ${expectedStage}, but got ${actualStage} instead!`, + expected: expectedStage, + actual: actualStage, + }; +} diff --git a/test/test-utils/matchers/to-have-status-effect.ts b/test/test-utils/matchers/to-have-status-effect.ts new file mode 100644 index 00000000000..a46800632f3 --- /dev/null +++ b/test/test-utils/matchers/to-have-status-effect.ts @@ -0,0 +1,83 @@ +/* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ +import type { Status } from "#data/status-effect"; +import type { Pokemon } from "#field/pokemon"; +/* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ + +import { getPokemonNameWithAffix } from "#app/messages"; +import { StatusEffect } from "#enums/status-effect"; +import { getEnumStr, getOnelineDiffStr } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +export type expectedStatusType = + | StatusEffect + | { effect: StatusEffect.TOXIC; toxicTurnCount: number } + | { effect: StatusEffect.SLEEP; sleepTurnsRemaining: number }; + +/** + * Matcher that checks if a Pokemon's {@linkcode StatusEffect} is as expected + * @param received - The actual value received. Should be a {@linkcode Pokemon} + * @param expectedStatus - The {@linkcode StatusEffect} the Pokemon is expected to have, + * or a partially filled {@linkcode Status} containing the desired properties + * @returns Whether the matcher passed + */ +export function toHaveStatusEffect( + this: MatcherState, + received: unknown, + expectedStatus: expectedStatusType, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const pkmName = getPokemonNameWithAffix(received); + const actualEffect = received.status?.effect ?? StatusEffect.NONE; + + // Check exclusively effect equality first, coercing non-matching status effects to numbers. + if (actualEffect !== (expectedStatus as Exclude)?.effect) { + // This is actually 100% safe as `expectedStatus?.effect` will evaluate to `undefined` if a StatusEffect was passed, + // which will never match actualEffect by definition + expectedStatus = (expectedStatus as Exclude).effect; + } + + if (typeof expectedStatus === "number") { + const pass = this.equals(actualEffect, expectedStatus, [...this.customTesters, this.utils.iterableEquality]); + + const actualStr = getEnumStr(StatusEffect, actualEffect, { prefix: "StatusEffect." }); + const expectedStr = getEnumStr(StatusEffect, expectedStatus, { prefix: "StatusEffect." }); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have ${expectedStr}, but it did!` + : `Expected ${pkmName} to have status effect ${expectedStr}, but got ${actualStr} instead!`, + expected: expectedStatus, + actual: actualEffect, + }; + } + + // Check for equality of all fields (for toxic turn count/etc) + const actualStatus = received.status; + const pass = this.equals(received, expectedStatus, [ + ...this.customTesters, + this.utils.subsetEquality, + this.utils.iterableEquality, + ]); + + const expectedStr = getOnelineDiffStr.call(this, expectedStatus); + const actualStr = getOnelineDiffStr.call(this, actualStatus); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName}'s status to NOT match ${expectedStr}, but it did!` + : `Expected ${pkmName}'s status to match ${expectedStr}, but got ${actualStr} instead!`, + expected: expectedStatus, + actual: actualStatus, + }; +} diff --git a/test/test-utils/matchers/to-have-taken-damage.ts b/test/test-utils/matchers/to-have-taken-damage.ts new file mode 100644 index 00000000000..77c60ae836a --- /dev/null +++ b/test/test-utils/matchers/to-have-taken-damage.ts @@ -0,0 +1,46 @@ +/** biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports */ +import type { Pokemon } from "#field/pokemon"; +/** biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports */ + +import { getPokemonNameWithAffix } from "#app/messages"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import { toDmgValue } from "#utils/common"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if a Pokemon has taken a specific amount of damage. + * Unless specified, will run the expected damage value through {@linkcode toDmgValue} + * to round it down and make it a minimum of 1. + * @param received - The object to check. Should be a {@linkcode Pokemon}. + * @param expectedDamageTaken - The expected amount of damage the {@linkcode Pokemon} has taken + * @param roundDown - Whether to round down {@linkcode expectedDamageTaken} with {@linkcode toDmgValue}; default `true` + * @returns Whether the matcher passed + */ +export function toHaveTakenDamage( + this: MatcherState, + received: unknown, + expectedDamageTaken: number, + roundDown = true, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const expectedDmgValue = roundDown ? toDmgValue(expectedDamageTaken) : expectedDamageTaken; + const actualDmgValue = received.getInverseHp(); + const pass = actualDmgValue === expectedDmgValue; + const pkmName = getPokemonNameWithAffix(received); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have taken ${expectedDmgValue} damage, but it did!` + : `Expected ${pkmName} to have taken ${expectedDmgValue} damage, but got ${actualDmgValue} instead!`, + expected: expectedDmgValue, + actual: actualDmgValue, + }; +} diff --git a/test/test-utils/matchers/to-have-terrain.ts b/test/test-utils/matchers/to-have-terrain.ts new file mode 100644 index 00000000000..292c32abafc --- /dev/null +++ b/test/test-utils/matchers/to-have-terrain.ts @@ -0,0 +1,62 @@ +/** biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports */ +import type { GameManager } from "#test/test-utils/game-manager"; +/** biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports */ + +import { TerrainType } from "#app/data/terrain"; +import { getEnumStr } from "#test/test-utils/string-utils"; +import { isGameManagerInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if the {@linkcode TerrainType} is as expected + * @param received - The object to check. Should be an instance of {@linkcode GameManager}. + * @param expectedTerrainType - The expected {@linkcode TerrainType}, or {@linkcode TerrainType.NONE} if no terrain should be active + * @returns Whether the matcher passed + */ +export function toHaveTerrain( + this: MatcherState, + received: unknown, + expectedTerrainType: TerrainType, +): SyncExpectationResult { + if (!isGameManagerInstance(received)) { + return { + pass: false, + message: () => `Expected GameManager, but got ${receivedStr(received)}!`, + }; + } + + if (!received.scene?.arena) { + return { + pass: false, + message: () => `Expected GameManager.${received.scene ? "scene" : "scene.arena"} to be defined!`, + }; + } + + const actual = received.scene.arena.getTerrainType(); + const pass = actual === expectedTerrainType; + const actualStr = toTerrainStr(actual); + const expectedStr = toTerrainStr(expectedTerrainType); + + return { + pass, + message: () => + pass + ? `Expected Arena to NOT have ${expectedStr} active, but it did!` + : `Expected Arena to have ${expectedStr} active, but got ${actualStr} instead!`, + expected: expectedTerrainType, + actual, + }; +} + +/** + * Get a human readable string of the current {@linkcode TerrainType}. + * @param terrainType - The {@linkcode TerrainType} to transform + * @returns A human readable string + */ +function toTerrainStr(terrainType: TerrainType) { + if (terrainType === TerrainType.NONE) { + return "no terrain"; + } + // "Electric Terrain (=2)" + return getEnumStr(TerrainType, terrainType, { casing: "Title", suffix: " Terrain" }); +} diff --git a/test/test-utils/matchers/to-have-types.ts b/test/test-utils/matchers/to-have-types.ts new file mode 100644 index 00000000000..3f16f740583 --- /dev/null +++ b/test/test-utils/matchers/to-have-types.ts @@ -0,0 +1,61 @@ +import { getPokemonNameWithAffix } from "#app/messages"; +import { PokemonType } from "#enums/pokemon-type"; +import type { Pokemon } from "#field/pokemon"; +import { stringifyEnumArray } from "#test/test-utils/string-utils"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; +import { isPokemonInstance, receivedStr } from "../test-utils"; + +export interface toHaveTypesOptions { + /** + * Whether to enforce exact matches (`true`) or superset matches (`false`). + * @defaultValue `true` + */ + exact?: boolean; + /** + * Optional arguments to pass to {@linkcode Pokemon.getTypes}. + */ + args?: Parameters<(typeof Pokemon.prototype)["getTypes"]>; +} + +/** + * Matcher that checks if an array contains exactly the given items, disregarding order. + * @param received - The object to check. Should be an array of one or more {@linkcode PokemonType}s. + * @param options - The {@linkcode toHaveTypesOptions | options} for this matcher + * @returns The result of the matching + */ +export function toHaveTypes( + this: MatcherState, + received: unknown, + expected: [PokemonType, ...PokemonType[]], + options: toHaveTypesOptions = {}, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to recieve a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const actualTypes = received.getTypes(...(options.args ?? [])).sort(); + const expectedTypes = expected.slice().sort(); + + // Exact matches do not care about subset equality + const matchers = options.exact + ? [...this.customTesters, this.utils.iterableEquality] + : [...this.customTesters, this.utils.subsetEquality, this.utils.iterableEquality]; + const pass = this.equals(actualTypes, expectedTypes, matchers); + + const actualStr = stringifyEnumArray(PokemonType, actualTypes); + const expectedStr = stringifyEnumArray(PokemonType, expectedTypes); + const pkmName = getPokemonNameWithAffix(received); + + return { + pass, + message: () => + pass + ? `Expected ${pkmName} to NOT have types ${expectedStr}, but it did!` + : `Expected ${pkmName} to have types ${expectedStr}, but got ${actualStr} instead!`, + expected: expectedTypes, + actual: actualTypes, + }; +} diff --git a/test/test-utils/matchers/to-have-used-move.ts b/test/test-utils/matchers/to-have-used-move.ts new file mode 100644 index 00000000000..ef90e4dbad9 --- /dev/null +++ b/test/test-utils/matchers/to-have-used-move.ts @@ -0,0 +1,70 @@ +/** biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports */ +import type { Pokemon } from "#field/pokemon"; +/** biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports */ + +import { getPokemonNameWithAffix } from "#app/messages"; +import type { MoveId } from "#enums/move-id"; +import { getOnelineDiffStr, getOrdinal } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import type { TurnMove } from "#types/turn-move"; +import type { AtLeastOne } from "#types/type-helpers"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher to check the contents of a {@linkcode Pokemon}'s move history. + * @param received - The actual value received. Should be a {@linkcode Pokemon} + * @param expectedValue - The {@linkcode MoveId} the Pokemon is expected to have used, + * or a partially filled {@linkcode TurnMove} containing the desired properties to check + * @param index - The index of the move history entry to check, in order from most recent to least recent. + * Default `0` (last used move) + * @returns Whether the matcher passed + */ +export function toHaveUsedMove( + this: MatcherState, + received: unknown, + expectedResult: MoveId | AtLeastOne, + index = 0, +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const move: TurnMove | undefined = received.getLastXMoves(-1)[index]; + const pkmName = getPokemonNameWithAffix(received); + + if (move === undefined) { + return { + pass: false, + message: () => `Expected ${pkmName} to have used ${index + 1} moves, but it didn't!`, + actual: received.getLastXMoves(-1), + }; + } + + // Coerce to a `TurnMove` + if (typeof expectedResult === "number") { + expectedResult = { move: expectedResult }; + } + + const moveIndexStr = index === 0 ? "last move" : `${getOrdinal(index)} most recent move`; + + const pass = this.equals(move, expectedResult, [ + ...this.customTesters, + this.utils.subsetEquality, + this.utils.iterableEquality, + ]); + + const expectedStr = getOnelineDiffStr.call(this, expectedResult); + return { + pass, + message: () => + pass + ? `Expected ${pkmName}'s ${moveIndexStr} to NOT match ${expectedStr}, but it did!` + : // Replace newlines with spaces to preserve one-line ness + `Expected ${pkmName}'s ${moveIndexStr} to match ${expectedStr}, but it didn't!`, + expected: expectedResult, + actual: move, + }; +} diff --git a/test/test-utils/matchers/to-have-used-pp.ts b/test/test-utils/matchers/to-have-used-pp.ts new file mode 100644 index 00000000000..3b606a535bc --- /dev/null +++ b/test/test-utils/matchers/to-have-used-pp.ts @@ -0,0 +1,77 @@ +// biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports +import type { Pokemon } from "#field/pokemon"; +// biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports + +import { getPokemonNameWithAffix } from "#app/messages"; +import Overrides from "#app/overrides"; +import { MoveId } from "#enums/move-id"; +import { getEnumStr } from "#test/test-utils/string-utils"; +import { isPokemonInstance, receivedStr } from "#test/test-utils/test-utils"; +import { coerceArray } from "#utils/common"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher to check the amount of PP consumed by a {@linkcode Pokemon}. + * @param received - The actual value received. Should be a {@linkcode Pokemon} + * @param expectedValue - The {@linkcode MoveId} that should have consumed PP + * @param ppUsed - The numerical amount of PP that should have been consumed, + * or `all` to indicate the move should be _out_ of PP + * @returns Whether the matcher passed + * @remarks + * If the same move appears in the Pokemon's moveset multiple times, this will fail the test! + */ +export function toHaveUsedPP( + this: MatcherState, + received: unknown, + expectedMove: MoveId, + ppUsed: number | "all", +): SyncExpectationResult { + if (!isPokemonInstance(received)) { + return { + pass: false, + message: () => `Expected to receive a Pokémon, but got ${receivedStr(received)}!`, + }; + } + + const override = received.isPlayer() ? Overrides.MOVESET_OVERRIDE : Overrides.OPP_MOVESET_OVERRIDE; + if (coerceArray(override).length > 0) { + return { + pass: false, + message: () => + `Cannot test for PP consumption with ${received.isPlayer() ? "player" : "enemy"} moveset overrides active!`, + }; + } + + const pkmName = getPokemonNameWithAffix(received); + const moveStr = getEnumStr(MoveId, expectedMove); + + const movesetMoves = received.getMoveset().filter(pm => pm.moveId === expectedMove); + if (movesetMoves.length !== 1) { + return { + pass: false, + message: () => + `Expected MoveId.${moveStr} to appear in ${pkmName}'s moveset exactly once, but got ${movesetMoves.length} times!`, + expected: expectedMove, + actual: received.getMoveset(), + }; + } + + const move = movesetMoves[0]; // will be the only move in the array + + let ppStr: string = ppUsed.toString(); + if (typeof ppUsed === "string") { + ppStr = "all its"; + ppUsed = move.getMovePp(); + } + const pass = move.ppUsed === ppUsed; + + return { + pass, + message: () => + pass + ? `Expected ${pkmName}'s ${moveStr} to NOT have used ${ppStr} PP, but it did!` + : `Expected ${pkmName}'s ${moveStr} to have used ${ppStr} PP, but got ${move.ppUsed} instead!`, + expected: ppUsed, + actual: move.ppUsed, + }; +} diff --git a/test/test-utils/matchers/to-have-weather.ts b/test/test-utils/matchers/to-have-weather.ts new file mode 100644 index 00000000000..49433b2137b --- /dev/null +++ b/test/test-utils/matchers/to-have-weather.ts @@ -0,0 +1,62 @@ +/** biome-ignore-start lint/correctness/noUnusedImports: TSDoc imports */ +import type { GameManager } from "#test/test-utils/game-manager"; +/** biome-ignore-end lint/correctness/noUnusedImports: TSDoc imports */ + +import { WeatherType } from "#enums/weather-type"; +import { isGameManagerInstance, receivedStr } from "#test/test-utils/test-utils"; +import { toTitleCase } from "#utils/strings"; +import type { MatcherState, SyncExpectationResult } from "@vitest/expect"; + +/** + * Matcher that checks if the {@linkcode WeatherType} is as expected + * @param received - The object to check. Expects an instance of {@linkcode GameManager}. + * @param expectedWeatherType - The expected {@linkcode WeatherType} + * @returns Whether the matcher passed + */ +export function toHaveWeather( + this: MatcherState, + received: unknown, + expectedWeatherType: WeatherType, +): SyncExpectationResult { + if (!isGameManagerInstance(received)) { + return { + pass: false, + message: () => `Expected GameManager, but got ${receivedStr(received)}!`, + }; + } + + if (!received.scene?.arena) { + return { + pass: false, + message: () => `Expected GameManager.${received.scene ? "scene" : "scene.arena"} to be defined!`, + }; + } + + const actual = received.scene.arena.getWeatherType(); + const pass = actual === expectedWeatherType; + const actualStr = toWeatherStr(actual); + const expectedStr = toWeatherStr(expectedWeatherType); + + return { + pass, + message: () => + pass + ? `Expected Arena to NOT have ${expectedStr} weather active, but it did!` + : `Expected Arena to have ${expectedStr} weather active, but got ${actualStr} instead!`, + expected: expectedWeatherType, + actual, + }; +} + +/** + * Get a human readable representation of the current {@linkcode WeatherType}. + * @param weatherType - The {@linkcode WeatherType} to transform + * @returns A human readable string + */ +function toWeatherStr(weatherType: WeatherType) { + if (weatherType === WeatherType.NONE) { + return "no weather"; + } + + return toTitleCase(WeatherType[weatherType]); +} diff --git a/test/testUtils/mocks/mockClock.ts b/test/test-utils/mocks/mock-clock.ts similarity index 100% rename from test/testUtils/mocks/mockClock.ts rename to test/test-utils/mocks/mock-clock.ts diff --git a/test/testUtils/mocks/mockConsoleLog.ts b/test/test-utils/mocks/mock-console-log.ts similarity index 100% rename from test/testUtils/mocks/mockConsoleLog.ts rename to test/test-utils/mocks/mock-console-log.ts diff --git a/test/testUtils/mocks/mockContextCanvas.ts b/test/test-utils/mocks/mock-context-canvas.ts similarity index 100% rename from test/testUtils/mocks/mockContextCanvas.ts rename to test/test-utils/mocks/mock-context-canvas.ts diff --git a/test/testUtils/mocks/mockFetch.ts b/test/test-utils/mocks/mock-fetch.ts similarity index 100% rename from test/testUtils/mocks/mockFetch.ts rename to test/test-utils/mocks/mock-fetch.ts diff --git a/test/testUtils/mocks/mockGameObjectCreator.ts b/test/test-utils/mocks/mock-game-object-creator.ts similarity index 72% rename from test/testUtils/mocks/mockGameObjectCreator.ts rename to test/test-utils/mocks/mock-game-object-creator.ts index cfb1051ec2f..3d97f40edab 100644 --- a/test/testUtils/mocks/mockGameObjectCreator.ts +++ b/test/test-utils/mocks/mock-game-object-creator.ts @@ -1,5 +1,5 @@ -import { MockGraphics } from "#test/testUtils/mocks/mocksContainer/mockGraphics"; -import type { MockTextureManager } from "#test/testUtils/mocks/mockTextureManager"; +import type { MockTextureManager } from "#test/test-utils/mocks/mock-texture-manager"; +import { MockGraphics } from "#test/test-utils/mocks/mocks-container/mock-graphics"; export class MockGameObjectCreator { private readonly textureManager: MockTextureManager; diff --git a/test/testUtils/mocks/mockGameObject.ts b/test/test-utils/mocks/mock-game-object.ts similarity index 100% rename from test/testUtils/mocks/mockGameObject.ts rename to test/test-utils/mocks/mock-game-object.ts diff --git a/test/testUtils/mocks/mockLoader.ts b/test/test-utils/mocks/mock-loader.ts similarity index 100% rename from test/testUtils/mocks/mockLoader.ts rename to test/test-utils/mocks/mock-loader.ts diff --git a/test/testUtils/mocks/mockLocalStorage.ts b/test/test-utils/mocks/mock-local-storage.ts similarity index 100% rename from test/testUtils/mocks/mockLocalStorage.ts rename to test/test-utils/mocks/mock-local-storage.ts diff --git a/test/testUtils/mocks/mockTextureManager.ts b/test/test-utils/mocks/mock-texture-manager.ts similarity index 75% rename from test/testUtils/mocks/mockTextureManager.ts rename to test/test-utils/mocks/mock-texture-manager.ts index b61a804bf55..54002ad3cbb 100644 --- a/test/testUtils/mocks/mockTextureManager.ts +++ b/test/test-utils/mocks/mock-texture-manager.ts @@ -1,15 +1,15 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; -import { MockBBCodeText } from "#test/testUtils/mocks/mocksContainer/mock-bbcode-text"; -import { MockInputText } from "#test/testUtils/mocks/mocksContainer/mock-input-text"; -import { MockContainer } from "#test/testUtils/mocks/mocksContainer/mockContainer"; -import { MockImage } from "#test/testUtils/mocks/mocksContainer/mockImage"; -import { MockNineslice } from "#test/testUtils/mocks/mocksContainer/mockNineslice"; -import { MockPolygon } from "#test/testUtils/mocks/mocksContainer/mockPolygon"; -import { MockRectangle } from "#test/testUtils/mocks/mocksContainer/mockRectangle"; -import { MockSprite } from "#test/testUtils/mocks/mocksContainer/mockSprite"; -import { MockText } from "#test/testUtils/mocks/mocksContainer/mockText"; -import { MockTexture } from "#test/testUtils/mocks/mocksContainer/mockTexture"; -import { MockVideoGameObject } from "#test/testUtils/mocks/mockVideoGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import { MockVideoGameObject } from "#test/test-utils/mocks/mock-video-game-object"; +import { MockBBCodeText } from "#test/test-utils/mocks/mocks-container/mock-bbcode-text"; +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; +import { MockImage } from "#test/test-utils/mocks/mocks-container/mock-image"; +import { MockInputText } from "#test/test-utils/mocks/mocks-container/mock-input-text"; +import { MockNineslice } from "#test/test-utils/mocks/mocks-container/mock-nineslice"; +import { MockPolygon } from "#test/test-utils/mocks/mocks-container/mock-polygon"; +import { MockRectangle } from "#test/test-utils/mocks/mocks-container/mock-rectangle"; +import { MockSprite } from "#test/test-utils/mocks/mocks-container/mock-sprite"; +import { MockText } from "#test/test-utils/mocks/mocks-container/mock-text"; +import { MockTexture } from "#test/test-utils/mocks/mocks-container/mock-texture"; /** * Stub class for Phaser.Textures.TextureManager diff --git a/test/testUtils/mocks/mockTimedEventManager.ts b/test/test-utils/mocks/mock-timed-event-manager.ts similarity index 100% rename from test/testUtils/mocks/mockTimedEventManager.ts rename to test/test-utils/mocks/mock-timed-event-manager.ts diff --git a/test/testUtils/mocks/mockVideoGameObject.ts b/test/test-utils/mocks/mock-video-game-object.ts similarity index 86% rename from test/testUtils/mocks/mockVideoGameObject.ts rename to test/test-utils/mocks/mock-video-game-object.ts index 40413f6f622..742e3a7d435 100644 --- a/test/testUtils/mocks/mockVideoGameObject.ts +++ b/test/test-utils/mocks/mock-video-game-object.ts @@ -1,4 +1,4 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; /** Mocks video-related stuff */ export class MockVideoGameObject implements MockGameObject { diff --git a/test/testUtils/mocks/mocksContainer/mock-bbcode-text.ts b/test/test-utils/mocks/mocks-container/mock-bbcode-text.ts similarity index 68% rename from test/testUtils/mocks/mocksContainer/mock-bbcode-text.ts rename to test/test-utils/mocks/mocks-container/mock-bbcode-text.ts index 8df0e01a43e..90b6a54a517 100644 --- a/test/testUtils/mocks/mocksContainer/mock-bbcode-text.ts +++ b/test/test-utils/mocks/mocks-container/mock-bbcode-text.ts @@ -1,4 +1,4 @@ -import { MockText } from "#test/testUtils/mocks/mocksContainer/mockText"; +import { MockText } from "#test/test-utils/mocks/mocks-container/mock-text"; export class MockBBCodeText extends MockText { setMaxLines(_lines: number) {} diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/test-utils/mocks/mocks-container/mock-container.ts similarity index 97% rename from test/testUtils/mocks/mocksContainer/mockContainer.ts rename to test/test-utils/mocks/mocks-container/mock-container.ts index df9aaab5888..dd19dc3259c 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/test-utils/mocks/mocks-container/mock-container.ts @@ -1,5 +1,5 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; -import type { MockTextureManager } from "#test/testUtils/mocks/mockTextureManager"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import type { MockTextureManager } from "#test/test-utils/mocks/mock-texture-manager"; import { coerceArray } from "#utils/common"; export class MockContainer implements MockGameObject { diff --git a/test/testUtils/mocks/mocksContainer/mockGraphics.ts b/test/test-utils/mocks/mocks-container/mock-graphics.ts similarity index 96% rename from test/testUtils/mocks/mocksContainer/mockGraphics.ts rename to test/test-utils/mocks/mocks-container/mock-graphics.ts index 6558cdf9fb1..1e1dfd38124 100644 --- a/test/testUtils/mocks/mocksContainer/mockGraphics.ts +++ b/test/test-utils/mocks/mocks-container/mock-graphics.ts @@ -1,4 +1,4 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; export class MockGraphics implements MockGameObject { private scene; diff --git a/test/testUtils/mocks/mocksContainer/mockImage.ts b/test/test-utils/mocks/mocks-container/mock-image.ts similarity index 75% rename from test/testUtils/mocks/mocksContainer/mockImage.ts rename to test/test-utils/mocks/mocks-container/mock-image.ts index 830a22a369c..812e17657ed 100644 --- a/test/testUtils/mocks/mocksContainer/mockImage.ts +++ b/test/test-utils/mocks/mocks-container/mock-image.ts @@ -1,4 +1,4 @@ -import { MockContainer } from "#test/testUtils/mocks/mocksContainer/mockContainer"; +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; export class MockImage extends MockContainer { // biome-ignore lint/correctness/noUnusedPrivateClassMembers: this is intentional (?) diff --git a/test/testUtils/mocks/mocksContainer/mock-input-text.ts b/test/test-utils/mocks/mocks-container/mock-input-text.ts similarity index 87% rename from test/testUtils/mocks/mocksContainer/mock-input-text.ts rename to test/test-utils/mocks/mocks-container/mock-input-text.ts index 6826278aa1e..bc5e26fddc5 100644 --- a/test/testUtils/mocks/mocksContainer/mock-input-text.ts +++ b/test/test-utils/mocks/mocks-container/mock-input-text.ts @@ -1,4 +1,4 @@ -import { MockText } from "#test/testUtils/mocks/mocksContainer/mockText"; +import { MockText } from "#test/test-utils/mocks/mocks-container/mock-text"; export class MockInputText extends MockText { public inputType: string; diff --git a/test/testUtils/mocks/mocksContainer/mockNineslice.ts b/test/test-utils/mocks/mocks-container/mock-nineslice.ts similarity index 85% rename from test/testUtils/mocks/mocksContainer/mockNineslice.ts rename to test/test-utils/mocks/mocks-container/mock-nineslice.ts index 11983075cf7..6678a5fca65 100644 --- a/test/testUtils/mocks/mocksContainer/mockNineslice.ts +++ b/test/test-utils/mocks/mocks-container/mock-nineslice.ts @@ -1,4 +1,4 @@ -import { MockContainer } from "#test/testUtils/mocks/mocksContainer/mockContainer"; +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; export class MockNineslice extends MockContainer { private texture; diff --git a/test/testUtils/mocks/mocksContainer/mockPolygon.ts b/test/test-utils/mocks/mocks-container/mock-polygon.ts similarity index 64% rename from test/testUtils/mocks/mocksContainer/mockPolygon.ts rename to test/test-utils/mocks/mocks-container/mock-polygon.ts index 2426231193a..7fc13fd7a00 100644 --- a/test/testUtils/mocks/mocksContainer/mockPolygon.ts +++ b/test/test-utils/mocks/mocks-container/mock-polygon.ts @@ -1,4 +1,4 @@ -import { MockContainer } from "#test/testUtils/mocks/mocksContainer/mockContainer"; +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; export class MockPolygon extends MockContainer { constructor(textureManager, x, y, _content, _fillColor, _fillAlpha) { diff --git a/test/testUtils/mocks/mocksContainer/mockRectangle.ts b/test/test-utils/mocks/mocks-container/mock-rectangle.ts similarity index 96% rename from test/testUtils/mocks/mocksContainer/mockRectangle.ts rename to test/test-utils/mocks/mocks-container/mock-rectangle.ts index 1e38cd3af44..96c49dec692 100644 --- a/test/testUtils/mocks/mocksContainer/mockRectangle.ts +++ b/test/test-utils/mocks/mocks-container/mock-rectangle.ts @@ -1,4 +1,4 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; import { coerceArray } from "#utils/common"; export class MockRectangle implements MockGameObject { diff --git a/test/testUtils/mocks/mocksContainer/mockSprite.ts b/test/test-utils/mocks/mocks-container/mock-sprite.ts similarity index 94% rename from test/testUtils/mocks/mocksContainer/mockSprite.ts rename to test/test-utils/mocks/mocks-container/mock-sprite.ts index bea1db21629..d5e11f5c4f9 100644 --- a/test/testUtils/mocks/mocksContainer/mockSprite.ts +++ b/test/test-utils/mocks/mocks-container/mock-sprite.ts @@ -1,4 +1,4 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; import { coerceArray } from "#utils/common"; import Phaser from "phaser"; @@ -154,6 +154,17 @@ export class MockSprite implements MockGameObject { return this; } + setFlipY(flip: boolean): this { + // Sets the vertical flip state of this Game Object. + this.phaserSprite.setFlipY(flip); + return this; + } + + setFlipX(flip: boolean): this { + this.phaserSprite.setFlipX(flip); + return this; + } + setCrop(x: number, y: number, width: number, height: number): this { // Sets the crop size of this Game Object. this.phaserSprite.setCrop(x, y, width, height); diff --git a/test/testUtils/mocks/mocksContainer/mockText.ts b/test/test-utils/mocks/mocks-container/mock-text.ts similarity index 99% rename from test/testUtils/mocks/mocksContainer/mockText.ts rename to test/test-utils/mocks/mocks-container/mock-text.ts index 58ae3650411..ad2fce80972 100644 --- a/test/testUtils/mocks/mocksContainer/mockText.ts +++ b/test/test-utils/mocks/mocks-container/mock-text.ts @@ -1,4 +1,4 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; import { UI } from "#ui/ui"; export class MockText implements MockGameObject { diff --git a/test/testUtils/mocks/mocksContainer/mockTexture.ts b/test/test-utils/mocks/mocks-container/mock-texture.ts similarity index 86% rename from test/testUtils/mocks/mocksContainer/mockTexture.ts rename to test/test-utils/mocks/mocks-container/mock-texture.ts index af25941094b..3e6b8137676 100644 --- a/test/testUtils/mocks/mocksContainer/mockTexture.ts +++ b/test/test-utils/mocks/mocks-container/mock-texture.ts @@ -1,5 +1,5 @@ -import type { MockGameObject } from "#test/testUtils/mocks/mockGameObject"; -import type { MockTextureManager } from "#test/testUtils/mocks/mockTextureManager"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import type { MockTextureManager } from "#test/test-utils/mocks/mock-texture-manager"; /** * Stub for Phaser.Textures.Texture object diff --git a/test/testUtils/phaseInterceptor.ts b/test/test-utils/phase-interceptor.ts similarity index 98% rename from test/testUtils/phaseInterceptor.ts rename to test/test-utils/phase-interceptor.ts index cdf151c01af..50de7e9f047 100644 --- a/test/testUtils/phaseInterceptor.ts +++ b/test/test-utils/phase-interceptor.ts @@ -37,6 +37,7 @@ import { NextEncounterPhase } from "#phases/next-encounter-phase"; import { PartyExpPhase } from "#phases/party-exp-phase"; import { PartyHealPhase } from "#phases/party-heal-phase"; import { PokemonTransformPhase } from "#phases/pokemon-transform-phase"; +import { PositionalTagPhase } from "#phases/positional-tag-phase"; import { PostGameOverPhase } from "#phases/post-game-over-phase"; import { PostSummonPhase } from "#phases/post-summon-phase"; import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; @@ -61,7 +62,7 @@ import { TurnStartPhase } from "#phases/turn-start-phase"; import { UnavailablePhase } from "#phases/unavailable-phase"; import { UnlockPhase } from "#phases/unlock-phase"; import { VictoryPhase } from "#phases/victory-phase"; -import { ErrorInterceptor } from "#test/testUtils/errorInterceptor"; +import { ErrorInterceptor } from "#test/test-utils/error-interceptor"; import type { PhaseClass, PhaseString } from "#types/phase-types"; import { UI } from "#ui/ui"; @@ -142,6 +143,7 @@ export class PhaseInterceptor { [LevelCapPhase, this.startPhase], [AttemptRunPhase, this.startPhase], [SelectBiomePhase, this.startPhase], + [PositionalTagPhase, this.startPhase], [PokemonTransformPhase, this.startPhase], [MysteryEncounterPhase, this.startPhase], [MysteryEncounterOptionSelectedPhase, this.startPhase], diff --git a/test/testUtils/saves/data_new.prsv b/test/test-utils/saves/data_new.prsv similarity index 100% rename from test/testUtils/saves/data_new.prsv rename to test/test-utils/saves/data_new.prsv diff --git a/test/testUtils/saves/data_pokedex_tests.prsv b/test/test-utils/saves/data_pokedex_tests.prsv similarity index 100% rename from test/testUtils/saves/data_pokedex_tests.prsv rename to test/test-utils/saves/data_pokedex_tests.prsv diff --git a/test/testUtils/saves/data_pokedex_tests_v2.prsv b/test/test-utils/saves/data_pokedex_tests_v2.prsv similarity index 100% rename from test/testUtils/saves/data_pokedex_tests_v2.prsv rename to test/test-utils/saves/data_pokedex_tests_v2.prsv diff --git a/test/testUtils/saves/everything.prsv b/test/test-utils/saves/everything.prsv similarity index 100% rename from test/testUtils/saves/everything.prsv rename to test/test-utils/saves/everything.prsv diff --git a/test/test-utils/string-utils.ts b/test/test-utils/string-utils.ts new file mode 100644 index 00000000000..bd3dd7c2fa9 --- /dev/null +++ b/test/test-utils/string-utils.ts @@ -0,0 +1,183 @@ +import { getStatKey, type Stat } from "#enums/stat"; +import type { EnumOrObject, NormalEnum, TSNumericEnum } from "#types/enum-types"; +import type { ObjectValues } from "#types/type-helpers"; +import { enumValueToKey } from "#utils/enums"; +import { toTitleCase } from "#utils/strings"; +import type { MatcherState } from "@vitest/expect"; +import i18next from "i18next"; + +type Casing = "Preserve" | "Title"; + +interface getEnumStrOptions { + /** + * A string denoting the casing method to use. + * @defaultValue "Preserve" + */ + casing?: Casing; + /** + * If present, will be prepended to the beginning of the enum string. + */ + prefix?: string; + /** + * If present, will be added to the end of the enum string. + */ + suffix?: string; +} + +/** + * Return the name of an enum member or const object value, alongside its corresponding value. + * @param obj - The {@linkcode EnumOrObject} to source reverse mappings from + * @param enums - One of {@linkcode obj}'s values + * @param casing - A string denoting the casing method to use; default `Preserve` + * @param prefix - An optional string to be prepended to the enum's string representation + * @param suffix - An optional string to be appended to the enum's string representation + * @returns The stringified representation of `val` as dictated by the options. + * @example + * ```ts + * enum fakeEnum { + * ONE: 1, + * TWO: 2, + * THREE: 3, + * } + * getEnumStr(fakeEnum, fakeEnum.ONE); // Output: "ONE (=1)" + * getEnumStr(fakeEnum, fakeEnum.TWO, {casing: "Title", prefix: "fakeEnum.", suffix: "!!!"}); // Output: "fakeEnum.TWO!!! (=2)" + * ``` + */ +export function getEnumStr( + obj: E, + val: ObjectValues, + { casing = "Preserve", prefix = "", suffix = "" }: getEnumStrOptions = {}, +): string { + let casingFunc: ((s: string) => string) | undefined; + switch (casing) { + case "Preserve": + break; + case "Title": + casingFunc = toTitleCase; + break; + } + + let stringPart = + obj[val] !== undefined + ? // TS reverse mapped enum + (obj[val] as string) + : // Normal enum/`const object` + (enumValueToKey(obj as NormalEnum, val) as string); + + if (casingFunc) { + stringPart = casingFunc(stringPart); + } + + return `${prefix}${stringPart}${suffix} (=${val})`; +} + +/** + * Convert an array of enums or `const object`s into a readable string version. + * @param obj - The {@linkcode EnumOrObject} to source reverse mappings from + * @param enums - An array of {@linkcode obj}'s values + * @returns The stringified representation of `enums`. + * @example + * ```ts + * enum fakeEnum { + * ONE: 1, + * TWO: 2, + * THREE: 3, + * } + * console.log(stringifyEnumArray(fakeEnum, [fakeEnum.ONE, fakeEnum.TWO, fakeEnum.THREE])); // Output: "[ONE, TWO, THREE] (=[1, 2, 3])" + * ``` + */ +export function stringifyEnumArray(obj: E, enums: E[keyof E][]): string { + if (obj.length === 0) { + return "[]"; + } + + const vals = enums.slice(); + /** An array of string names */ + let names: string[]; + + if (obj[enums[0]] !== undefined) { + // Reverse mapping exists - `obj` is a `TSNumericEnum` and its reverse mapped counterparts are strings + names = enums.map(e => (obj as TSNumericEnum)[e] as string); + } else { + // No reverse mapping exists means `obj` is a `NormalEnum`. + // NB: This (while ugly) should be more ergonomic than doing a repeated lookup for large `const object`s + // as the `enums` array should be significantly shorter than the corresponding enum type. + names = []; + for (const [k, v] of Object.entries(obj as NormalEnum)) { + if (names.length === enums.length) { + // No more names to get + break; + } + // Find all matches for the given enum, assigning their keys to the names array + findIndices(enums, v).forEach(matchIndex => { + names[matchIndex] = k; + }); + } + } + return `[${names.join(", ")}] (=[${vals.join(", ")}])`; +} + +/** + * Return the indices of all occurrences of a value in an array. + * @param arr - The array to search + * @param searchElement - The value to locate in the array + * @param fromIndex - The array index at which to begin the search. If fromIndex is omitted, the + * search starts at index 0 + */ +function findIndices(arr: T[], searchElement: T, fromIndex = 0): number[] { + const indices: number[] = []; + const arrSliced = arr.slice(fromIndex); + for (const [index, value] of arrSliced.entries()) { + if (value === searchElement) { + indices.push(index); + } + } + return indices; +} + +/** + * Convert a number into an English ordinal + * @param num - The number to convert into an ordinal + * @returns The ordinal representation of {@linkcode num}. + * @example + * ```ts + * console.log(getOrdinal(1)); // Output: "1st" + * console.log(getOrdinal(12)); // Output: "12th" + * console.log(getOrdinal(24)); // Output: "24th" + * ``` + */ +export function getOrdinal(num: number): string { + const tens = num % 10; + const hundreds = num % 100; + if (tens === 1 && hundreds !== 11) { + return num + "st"; + } + if (tens === 2 && hundreds !== 12) { + return num + "nd"; + } + if (tens === 3 && hundreds !== 13) { + return num + "rd"; + } + return num + "th"; +} + +/** + * Get the localized name of a {@linkcode Stat}. + * @param s - The {@linkcode Stat} to check + * @returns - The proper name for s, retrieved from the translations. + */ +export function getStatName(s: Stat): string { + return i18next.t(getStatKey(s)); +} + +/** + * Convert an object into a oneline diff to be shown in an error message. + * @param obj - The object to return the oneline diff of + * @returns The updated diff + */ +export function getOnelineDiffStr(this: MatcherState, obj: unknown): string { + return this.utils + .stringify(obj, undefined, { maxLength: 35, indent: 0, printBasicPrototype: false }) + .replace(/\n/g, " ") // Replace newlines with spaces + .replace(/,(\s*)}$/g, "$1}"); +} diff --git a/test/testUtils/testFileInitialization.ts b/test/test-utils/test-file-initialization.ts similarity index 56% rename from test/testUtils/testFileInitialization.ts rename to test/test-utils/test-file-initialization.ts index 98b49159d98..631d3f9146b 100644 --- a/test/testUtils/testFileInitialization.ts +++ b/test/test-utils/test-file-initialization.ts @@ -1,38 +1,46 @@ -import { initAbilities } from "#abilities/ability"; -import { initLoggedInUser } from "#app/account"; import { SESSION_ID_COOKIE_NAME } from "#app/constants"; -import { initBiomes } from "#balance/biomes"; -import { initEggMoves } from "#balance/egg-moves"; -import { initPokemonPrevolutions, initPokemonStarters } from "#balance/pokemon-evolutions"; -import { initPokemonForms } from "#data/pokemon-forms"; -import { initSpecies } from "#data/pokemon-species"; -import { initModifierPools } from "#modifiers/init-modifier-pools"; -import { initModifierTypes } from "#modifiers/modifier-type"; -import { initMoves } from "#moves/move"; -import { initMysteryEncounters } from "#mystery-encounters/mystery-encounters"; +import { initializeGame } from "#app/init/init"; import { initI18n } from "#plugins/i18n"; -import { initAchievements } from "#system/achv"; -import { initVouchers } from "#system/voucher"; -import { blobToString } from "#test/testUtils/gameManagerUtils"; -import { manageListeners } from "#test/testUtils/listenersManager"; -import { MockConsoleLog } from "#test/testUtils/mocks/mockConsoleLog"; -import { mockContext } from "#test/testUtils/mocks/mockContextCanvas"; -import { mockLocalStorage } from "#test/testUtils/mocks/mockLocalStorage"; -import { MockImage } from "#test/testUtils/mocks/mocksContainer/mockImage"; -import { initStatsKeys } from "#ui/game-stats-ui-handler"; +import { blobToString } from "#test/test-utils/game-manager-utils"; +import { manageListeners } from "#test/test-utils/listeners-manager"; +import { MockConsoleLog } from "#test/test-utils/mocks/mock-console-log"; +import { mockContext } from "#test/test-utils/mocks/mock-context-canvas"; +import { mockLocalStorage } from "#test/test-utils/mocks/mock-local-storage"; +import { MockImage } from "#test/test-utils/mocks/mocks-container/mock-image"; import { setCookie } from "#utils/cookies"; import Phaser from "phaser"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import InputText from "phaser3-rex-plugins/plugins/inputtext"; let wasInitialized = false; -/** - * An initialization function that is run at the beginning of every test file (via `beforeAll()`). - */ -export function initTestFile() { - // Set the timezone to UTC for tests. - process.env.TZ = "UTC"; +/** + * Run initialization code upon starting a new file, both per-suite and per-instance oncess. + */ +export function initTests(): void { + setupStubs(); + if (!wasInitialized) { + initTestFile(); + wasInitialized = true; + } + + manageListeners(); +} + +/** + * Initialize various values at the beginning of each testing instance. + */ +function initTestFile(): void { + initI18n(); + initializeGame(); +} + +/** + * Setup various stubs for testing. + * @todo Move this into a dedicated stub file instead of running it once per test instance + * @todo Investigate why this resets on new test suite start + */ +function setupStubs(): void { Object.defineProperty(window, "localStorage", { value: mockLocalStorage(), }); @@ -68,9 +76,9 @@ export function initTestFile() { /** * Sets this object's position relative to another object with a given offset - * @param guideObject {@linkcode Phaser.GameObjects.GameObject} to base the position off of - * @param x The relative x position - * @param y The relative y position + * @param guideObject - The {@linkcode Phaser.GameObjects.GameObject} to base the position off of + * @param x - The relative x position + * @param y - The relative y position */ const setPositionRelative = function (guideObject: any, x: number, y: number): any { const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); @@ -85,30 +93,6 @@ export function initTestFile() { Phaser.GameObjects.Text.prototype.setPositionRelative = setPositionRelative; Phaser.GameObjects.Rectangle.prototype.setPositionRelative = setPositionRelative; HTMLCanvasElement.prototype.getContext = () => mockContext; - - // Initialize all of these things if and only if they have not been initialized yet - if (!wasInitialized) { - wasInitialized = true; - initI18n(); - initModifierTypes(); - initModifierPools(); - initVouchers(); - initAchievements(); - initStatsKeys(); - initPokemonPrevolutions(); - initBiomes(); - initEggMoves(); - initPokemonForms(); - initSpecies(); - initMoves(); - initAbilities(); - initLoggedInUser(); - initMysteryEncounters(); - // init the pokemon starters for the pokedex - initPokemonStarters(); - } - - manageListeners(); } /** diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts new file mode 100644 index 00000000000..b9e73c3e9da --- /dev/null +++ b/test/test-utils/test-utils.ts @@ -0,0 +1,84 @@ +import { Pokemon } from "#field/pokemon"; +import type { GameManager } from "#test/test-utils/game-manager"; +import i18next, { type ParseKeys } from "i18next"; +import { vi } from "vitest"; + +/** + * Sets up the i18next mock. + * Includes a i18next.t mocked implementation only returning the raw key (`(key) => key`) + * + * @returns A spy/mock of i18next + */ +export function mockI18next() { + return vi.spyOn(i18next, "t").mockImplementation((key: ParseKeys) => key); +} + +/** + * Creates an array of range `start - end` + * + * @param start start number e.g. 1 + * @param end end number e.g. 10 + * @returns an array of numbers + */ +export function arrayOfRange(start: number, end: number) { + return Array.from({ length: end - start }, (_v, k) => k + start); +} + +/** + * Utility to get the API base URL from the environment variable (or the default/fallback). + * @returns the API base URL + */ +export function getApiBaseUrl() { + return import.meta.env.VITE_SERVER_URL ?? "http://localhost:8001"; +} + +type TypeOfResult = "undefined" | "object" | "boolean" | "number" | "bigint" | "string" | "symbol" | "function"; + +/** + * Helper to determine the actual type of the received object as human readable string + * @param received - The received object + * @returns A human readable string of the received object (type) + */ +export function receivedStr(received: unknown, expectedType: TypeOfResult = "object"): string { + if (received === null) { + return "null"; + } + if (received === undefined) { + return "undefined"; + } + if (typeof received !== expectedType) { + return typeof received; + } + if (expectedType === "object") { + return received.constructor.name; + } + + return "unknown"; +} + +/** + * Helper to check if the received object is an {@linkcode object} + * @param received - The object to check + * @returns Whether the object is an {@linkcode object}. + */ +function isObject(received: unknown): received is object { + return received !== null && typeof received === "object"; +} + +/** + * Helper function to check if a given object is a {@linkcode Pokemon}. + * @param received - The object to check + * @return Whether `received` is a {@linkcode Pokemon} instance. + */ +export function isPokemonInstance(received: unknown): received is Pokemon { + return isObject(received) && received instanceof Pokemon; +} + +/** + * Checks if an object is a {@linkcode GameManager} instance + * @param received - The object to check + * @returns Whether the object is a {@linkcode GameManager} instance. + */ +export function isGameManagerInstance(received: unknown): received is GameManager { + return isObject(received) && (received as GameManager).constructor.name === "GameManager"; +} diff --git a/test/testUtils/TextInterceptor.ts b/test/test-utils/text-interceptor.ts similarity index 100% rename from test/testUtils/TextInterceptor.ts rename to test/test-utils/text-interceptor.ts diff --git a/test/testUtils/testUtils.ts b/test/testUtils/testUtils.ts deleted file mode 100644 index 40e4bbe8775..00000000000 --- a/test/testUtils/testUtils.ts +++ /dev/null @@ -1,31 +0,0 @@ -import i18next, { type ParseKeys } from "i18next"; -import { vi } from "vitest"; - -/** - * Sets up the i18next mock. - * Includes a i18next.t mocked implementation only returning the raw key (`(key) => key`) - * - * @returns A spy/mock of i18next - */ -export function mockI18next() { - return vi.spyOn(i18next, "t").mockImplementation((key: ParseKeys) => key); -} - -/** - * Creates an array of range `start - end` - * - * @param start start number e.g. 1 - * @param end end number e.g. 10 - * @returns an array of numbers - */ -export function arrayOfRange(start: number, end: number) { - return Array.from({ length: end - start }, (_v, k) => k + start); -} - -/** - * Utility to get the API base URL from the environment variable (or the default/fallback). - * @returns the API base URL - */ -export function getApiBaseUrl() { - return import.meta.env.VITE_SERVER_URL ?? "http://localhost:8001"; -} diff --git a/test/types/enum-types.test-d.ts b/test/types/enum-types.test-d.ts index 396c479e85a..3d03098c2ad 100644 --- a/test/types/enum-types.test-d.ts +++ b/test/types/enum-types.test-d.ts @@ -1,5 +1,6 @@ -import type { EnumOrObject, EnumValues, NormalEnum, TSNumericEnum } from "#app/@types/enum-types"; import type { enumValueToKey, getEnumKeys, getEnumValues } from "#app/utils/enums"; +import type { EnumOrObject, NormalEnum, TSNumericEnum } from "#types/enum-types"; +import type { ObjectValues } from "#types/type-helpers"; import { describe, expectTypeOf, it } from "vitest"; enum testEnumNum { @@ -16,21 +17,33 @@ const testObjNum = { testON1: 1, testON2: 2 } as const; const testObjString = { testOS1: "apple", testOS2: "banana" } as const; -describe("Enum Type Helpers", () => { - describe("EnumValues", () => { - it("should go from enum object type to value type", () => { - expectTypeOf>().toEqualTypeOf(); - expectTypeOf>().branded.toEqualTypeOf<1 | 2>(); +interface testObject { + key_1: "1"; + key_2: "2"; + key_3: "3"; +} - expectTypeOf>().toEqualTypeOf(); - expectTypeOf>().toEqualTypeOf(); - expectTypeOf>().toMatchTypeOf<"apple" | "banana">(); +describe("Enum Type Helpers", () => { + describe("ObjectValues", () => { + it("should produce a union of an object's values", () => { + expectTypeOf>().toEqualTypeOf<"1" | "2" | "3">(); + }); + + it("should go from enum object type to value type", () => { + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().branded.toEqualTypeOf<1 | 2>(); + + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf< + testEnumString.testS1 | testEnumString.testS2 + >(); + + expectTypeOf>().toExtend<"apple" | "banana">(); }); it("should produce union of const object values as type", () => { - expectTypeOf>().toEqualTypeOf<1 | 2>(); - - expectTypeOf>().toEqualTypeOf<"apple" | "banana">(); + expectTypeOf>().toEqualTypeOf<1 | 2>(); + expectTypeOf>().toEqualTypeOf<"apple" | "banana">(); }); }); @@ -38,7 +51,6 @@ describe("Enum Type Helpers", () => { it("should match numeric enums", () => { expectTypeOf>().toEqualTypeOf(); }); - it("should not match string enums or const objects", () => { expectTypeOf>().toBeNever(); expectTypeOf>().toBeNever(); @@ -59,19 +71,19 @@ describe("Enum Type Helpers", () => { describe("EnumOrObject", () => { it("should match any enum or const object", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); + expectTypeOf().toExtend(); + expectTypeOf().toExtend(); + expectTypeOf().toExtend(); + expectTypeOf().toExtend(); }); it("should not match an enum value union w/o typeof", () => { - expectTypeOf().not.toMatchTypeOf(); - expectTypeOf().not.toMatchTypeOf(); + expectTypeOf().not.toExtend(); + expectTypeOf().not.toExtend(); }); it("should be equivalent to `TSNumericEnum | NormalEnum`", () => { - expectTypeOf().branded.toEqualTypeOf | NormalEnum>(); + expectTypeOf().toEqualTypeOf | NormalEnum>(); }); }); }); @@ -80,6 +92,7 @@ describe("Enum Functions", () => { describe("getEnumKeys", () => { it("should retrieve keys of numeric enum", () => { expectTypeOf>().returns.toEqualTypeOf<("testN1" | "testN2")[]>(); + expectTypeOf>().returns.toEqualTypeOf<("testON1" | "testON2")[]>(); }); }); diff --git a/test/types/positional-tags.test-d.ts b/test/types/positional-tags.test-d.ts new file mode 100644 index 00000000000..a75cc291764 --- /dev/null +++ b/test/types/positional-tags.test-d.ts @@ -0,0 +1,29 @@ +import type { SerializedPositionalTag, serializedPosTagMap } from "#data/positional-tags/load-positional-tag"; +import type { DelayedAttackTag, WishTag } from "#data/positional-tags/positional-tag"; +import type { PositionalTagType } from "#enums/positional-tag-type"; +import type { Mutable, NonFunctionPropertiesRecursive } from "#types/type-helpers"; +import { describe, expectTypeOf, it } from "vitest"; + +// Needed to get around properties being readonly in certain classes +type NonFunctionMutable = Mutable>; + +describe("serializedPositionalTagMap", () => { + it("should contain representations of each tag's serialized form", () => { + expectTypeOf().branded.toEqualTypeOf< + NonFunctionMutable + >(); + expectTypeOf().branded.toEqualTypeOf>(); + }); +}); + +describe("SerializedPositionalTag", () => { + it("should accept a union of all serialized tag forms", () => { + expectTypeOf().branded.toEqualTypeOf< + NonFunctionMutable | NonFunctionMutable + >(); + }); + it("should accept a union of all unserialized tag forms", () => { + expectTypeOf().toExtend(); + expectTypeOf().toExtend(); + }); +}); diff --git a/test/types/type-helpers.test-d.ts b/test/types/type-helpers.test-d.ts new file mode 100644 index 00000000000..29f957890fc --- /dev/null +++ b/test/types/type-helpers.test-d.ts @@ -0,0 +1,38 @@ +import type { AtLeastOne } from "#types/type-helpers"; +import { describe, it } from "node:test"; +import { expectTypeOf } from "vitest"; + +type fakeObj = { + foo: number; + bar: string; + baz: number | string; +}; + +type optionalObj = { + foo: number; + bar: string; + baz?: number | string; +}; + +describe("AtLeastOne", () => { + it("should accept an object with at least 1 of its defined parameters", () => { + expectTypeOf<{ foo: number }>().toExtend>(); + expectTypeOf<{ bar: string }>().toExtend>(); + expectTypeOf<{ baz: number | string }>().toExtend>(); + }); + + it("should convert to a partial intersection with the union of all individual single properties", () => { + expectTypeOf>().branded.toEqualTypeOf< + Partial & ({ foo: number } | { bar: string } | { baz: number | string }) + >(); + }); + + it("should treat optional properties as required", () => { + expectTypeOf>().branded.toEqualTypeOf>(); + }); + + it("should not accept empty objects, even if optional properties are present", () => { + expectTypeOf>().not.toExtend>(); + expectTypeOf>().not.toExtend>(); + }); +}); diff --git a/test/ui/battle_info.test.ts b/test/ui/battle-info.test.ts similarity index 96% rename from test/ui/battle_info.test.ts rename to test/ui/battle-info.test.ts index afc456c6430..8bdd61e05b0 100644 --- a/test/ui/battle_info.test.ts +++ b/test/ui/battle-info.test.ts @@ -3,7 +3,7 @@ import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { ExpPhase } from "#phases/exp-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/ui/item-manage-button.test.ts b/test/ui/item-manage-button.test.ts new file mode 100644 index 00000000000..a7ea76918a5 --- /dev/null +++ b/test/ui/item-manage-button.test.ts @@ -0,0 +1,172 @@ +import { BerryType } from "#enums/berry-type"; +import { Button } from "#enums/buttons"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { UiMode } from "#enums/ui-mode"; +import type { Pokemon } from "#field/pokemon"; +import { GameManager } from "#test/test-utils/game-manager"; +import type { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; +import type { PartyUiHandler } from "#ui/party-ui-handler"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("UI - Transfer Items", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(async () => { + game = new GameManager(phaserGame); + game.override + .battleStyle("single") + .startingLevel(100) + .startingHeldItems([ + { name: "BERRY", count: 1, type: BerryType.SITRUS }, + { name: "BERRY", count: 2, type: BerryType.APICOT }, + { name: "BERRY", count: 2, type: BerryType.LUM }, + ]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH); + + await game.classicMode.startBattle([SpeciesId.RAYQUAZA, SpeciesId.RAYQUAZA, SpeciesId.RAYQUAZA]); + + game.move.use(MoveId.DRAGON_CLAW); + + await game.phaseInterceptor.to("SelectModifierPhase"); + }); + + it("manage button exists in the proper screen", async () => { + let handlerLength: Phaser.GameObjects.GameObject[] | undefined; + + await new Promise(resolve => { + //select manage items menu + game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as ModifierSelectUiHandler; + + handler.processInput(Button.DOWN); + handler.setCursor(1); + handler.processInput(Button.ACTION); + }); + + game.onNextPrompt("SelectModifierPhase", UiMode.PARTY, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as PartyUiHandler; + + handler.processInput(Button.DOWN); + handler.processInput(Button.ACTION); + handlerLength = handler.optionsContainer.list; + + handler.processInput(Button.CANCEL); + + resolve(); + }); + }); + + expect(handlerLength).toHaveLength(0); // should select manage button, which has no menu + }); + + it("manage button doesn't exist in the other screens", async () => { + let handlerLength: Phaser.GameObjects.GameObject[] | undefined; + + await new Promise(resolve => { + game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as ModifierSelectUiHandler; + + handler.processInput(Button.DOWN); + handler.setCursor(2); + handler.processInput(Button.ACTION); + }); + + game.onNextPrompt("SelectModifierPhase", UiMode.PARTY, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as PartyUiHandler; + + handler.processInput(Button.DOWN); + handler.processInput(Button.ACTION); + handlerLength = handler.optionsContainer.list; + + handler.processInput(Button.CANCEL); + handler.processInput(Button.CANCEL); + + resolve(); + }); + }); + + expect(handlerLength).toHaveLength(6); // should select 2nd pokemon (length is 5 options + image) + }); + + // Test that the manage button actually discards items, needs proofreading + it("should discard items when button is selected", async () => { + let pokemon: Pokemon | undefined; + + await new Promise(resolve => { + game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as ModifierSelectUiHandler; + + handler.processInput(Button.DOWN); + handler.setCursor(1); + handler.processInput(Button.ACTION); + }); + game.onNextPrompt("SelectModifierPhase", UiMode.PARTY, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as PartyUiHandler; + + // Enter discard mode and select first party member + handler.setCursor(7); + handler.processInput(Button.ACTION); + handler.setCursor(0); + handler.processInput(Button.ACTION); + pokemon = game.field.getPlayerPokemon(); + + resolve(); + }); + }); + + expect(pokemon).toBeDefined(); + if (pokemon) { + expect(pokemon.getHeldItems()).toHaveLength(3); + expect(pokemon.getHeldItems().map(h => h.stackCount)).toEqual([1, 2, 2]); + } + + await new Promise(resolve => { + game.onNextPrompt("SelectModifierPhase", UiMode.PARTY, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as PartyUiHandler; + handler.processInput(Button.ACTION); + resolve(); + }); + }); + + await new Promise(resolve => { + game.onNextPrompt("SelectModifierPhase", UiMode.PARTY, async () => { + await new Promise(r => setTimeout(r, 100)); + const handler = game.scene.ui.getHandler() as PartyUiHandler; + handler.processInput(Button.ACTION); + + pokemon = game.field.getPlayerPokemon(); + + handler.processInput(Button.CANCEL); + resolve(); + }); + }); + + expect(pokemon).toBeDefined(); + if (pokemon) { + // Sitrus berry was discarded, leaving 2 stacks of 2 berries behind + expect(pokemon.getHeldItems()).toHaveLength(2); + expect(pokemon.getHeldItems().map(h => h.stackCount)).toEqual([2, 2]); + } + }); +}); diff --git a/test/ui/pokedex.test.ts b/test/ui/pokedex.test.ts index 1d81f19052c..217c1f09a3b 100644 --- a/test/ui/pokedex.test.ts +++ b/test/ui/pokedex.test.ts @@ -7,7 +7,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import type { StarterAttributes } from "#system/game-data"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { FilterTextRow } from "#ui/filter-text"; import { PokedexPageUiHandler } from "#ui/pokedex-page-ui-handler"; import { PokedexUiHandler } from "#ui/pokedex-ui-handler"; @@ -193,7 +193,7 @@ describe("UI - Pokedex", () => { ***************************/ it("should filter to show only the pokemon with an ability when filtering by ability", async () => { - // await game.importData("test/testUtils/saves/everything.prsv"); + // await game.importData("test/test-utils/saves/everything.prsv"); const pokedexHandler = await runToOpenPokedex(); // Get name of overgrow @@ -301,7 +301,7 @@ describe("UI - Pokedex", () => { it("filtering for unlockable cost reduction only shows species with sufficient candies", async () => { // load the save file - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); // @ts-expect-error - `filterBar` is private @@ -330,7 +330,7 @@ describe("UI - Pokedex", () => { }); it("filtering by passive unlocked only shows species that have their passive", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); // @ts-expect-error - `filterBar` is private @@ -347,7 +347,7 @@ describe("UI - Pokedex", () => { }); it("filtering for pokemon that can unlock passive shows only species with sufficient candies", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); // @ts-expect-error - `filterBar` is private @@ -375,7 +375,7 @@ describe("UI - Pokedex", () => { }); it("filtering for pokemon that have any cost reduction shows only the species that have unlocked a cost reduction", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); const expectedPokemon = new Set([SpeciesId.TREECKO, SpeciesId.CYNDAQUIL, SpeciesId.TOTODILE]); @@ -394,7 +394,7 @@ describe("UI - Pokedex", () => { }); it("filtering for pokemon that have a single cost reduction shows only the species that have unlocked a single cost reduction", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); const expectedPokemon = new Set([SpeciesId.CYNDAQUIL, SpeciesId.TOTODILE]); @@ -414,7 +414,7 @@ describe("UI - Pokedex", () => { }); it("filtering for pokemon that have two cost reductions sorts only shows the species that have unlocked both cost reductions", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); // @ts-expect-error - `filterBar` is private @@ -433,7 +433,7 @@ describe("UI - Pokedex", () => { }); it("filtering by shiny status shows the caught pokemon with the selected shiny tier", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); // @ts-expect-error - `filterBar` is private const filter = pokedexHandler.filterBar.getFilter(DropDownColumn.CAUGHT); @@ -513,7 +513,7 @@ describe("UI - Pokedex", () => { ****************************/ it("should show caught battle form as caught", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests_v2.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests_v2.prsv"); const pageHandler = await runToPokedexPage(getPokemonSpecies(SpeciesId.VENUSAUR), { form: 1 }); // @ts-expect-error - `species` is private @@ -528,7 +528,7 @@ describe("UI - Pokedex", () => { //TODO: check tint of the sprite it("should show uncaught battle form as seen", async () => { - await game.importData("./test/testUtils/saves/data_pokedex_tests_v2.prsv"); + await game.importData("./test/test-utils/saves/data_pokedex_tests_v2.prsv"); const pageHandler = await runToPokedexPage(getPokemonSpecies(SpeciesId.VENUSAUR), { form: 2 }); // @ts-expect-error - `species` is private diff --git a/test/ui/starter-select.test.ts b/test/ui/starter-select.test.ts index 63abc99174e..a8c6284cf3f 100644 --- a/test/ui/starter-select.test.ts +++ b/test/ui/starter-select.test.ts @@ -9,7 +9,7 @@ import { UiMode } from "#enums/ui-mode"; import { EncounterPhase } from "#phases/encounter-phase"; import { SelectStarterPhase } from "#phases/select-starter-phase"; import type { TitlePhase } from "#phases/title-phase"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; import type { OptionSelectUiHandler } from "#ui/option-select-ui-handler"; import type { SaveSlotSelectUiHandler } from "#ui/save-slot-select-ui-handler"; @@ -37,7 +37,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - shiny - variant 2 male", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -97,7 +97,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - shiny - variant 2 female hardy overgrow", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -159,7 +159,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - shiny - variant 2 female lonely chlorophyl", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -224,7 +224,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - shiny - variant 2 female", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -285,7 +285,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - not shiny", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -345,7 +345,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - shiny - variant 1", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -407,7 +407,7 @@ describe("UI - Starter select", () => { }); it("Bulbasaur - shiny - variant 0", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -468,7 +468,7 @@ describe("UI - Starter select", () => { }); it("Check if first pokemon in party is caterpie from gen 1 and 1rd row, 3rd column", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; @@ -532,7 +532,7 @@ describe("UI - Starter select", () => { }); it("Check if first pokemon in party is nidoran_m from gen 1 and 2nd row, 4th column (cursor (9+4)-1)", async () => { - await game.importData("./test/testUtils/saves/everything.prsv"); + await game.importData("./test/test-utils/saves/everything.prsv"); const caughtCount = Object.keys(game.scene.gameData.dexData).filter(key => { const species = game.scene.gameData.dexData[key]; return species.caughtAttr !== 0n; diff --git a/test/ui/transfer-item.test.ts b/test/ui/transfer-item.test.ts index f2b0a4f7d35..0d101b5b4ef 100644 --- a/test/ui/transfer-item.test.ts +++ b/test/ui/transfer-item.test.ts @@ -3,7 +3,7 @@ import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import { GameManager } from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; import { PartyUiHandler, PartyUiMode } from "#ui/party-ui-handler"; import Phaser from "phaser"; diff --git a/test/ui/type-hints.test.ts b/test/ui/type-hints.test.ts index 8359c50c35d..f1f27322a64 100644 --- a/test/ui/type-hints.test.ts +++ b/test/ui/type-hints.test.ts @@ -3,8 +3,8 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import { CommandPhase } from "#phases/command-phase"; -import { GameManager } from "#test/testUtils/gameManager"; -import type { MockText } from "#test/testUtils/mocks/mocksContainer/mockText"; +import { GameManager } from "#test/test-utils/game-manager"; +import type { MockText } from "#test/test-utils/mocks/mocks-container/mock-text"; import { FightUiHandler } from "#ui/fight-ui-handler"; import i18next from "i18next"; import Phaser from "phaser"; diff --git a/test/utils/strings.test.ts b/test/utils/strings.test.ts new file mode 100644 index 00000000000..3d6eb235ba8 --- /dev/null +++ b/test/utils/strings.test.ts @@ -0,0 +1,47 @@ +import { splitWords } from "#utils/strings"; +import { describe, expect, it } from "vitest"; + +interface testCase { + input: string; + words: string[]; +} + +const testCases: testCase[] = [ + { + input: "Lorem ipsum dolor sit amet", + words: ["Lorem", "ipsum", "dolor", "sit", "amet"], + }, + { + input: "consectetur-adipiscing-elit", + words: ["consectetur", "adipiscing", "elit"], + }, + { + input: "sed_do_eiusmod_tempor_incididunt_ut_labore", + words: ["sed", "do", "eiusmod", "tempor", "incididunt", "ut", "labore"], + }, + { + input: "Et Dolore Magna Aliqua", + words: ["Et", "Dolore", "Magna", "Aliqua"], + }, + { + input: "BIG_ANGRY_TRAINER", + words: ["BIG", "ANGRY", "TRAINER"], + }, + { + input: "ApplesBananasOrangesAndAPear", + words: ["Apples", "Bananas", "Oranges", "And", "A", "Pear"], + }, + { + input: "mysteryEncounters/anOfferYouCantRefuse", + words: ["mystery", "Encounters/an", "Offer", "You", "Cant", "Refuse"], + }, +]; + +describe("Utils - Casing -", () => { + describe("splitWords", () => { + it.each(testCases)("should split a string into its constituent words - $input", ({ input, words }) => { + const ret = splitWords(input); + expect(ret).toEqual(words); + }); + }); +}); diff --git a/test/vitest.setup.ts b/test/vitest.setup.ts index 6cf20219408..be35e18e2e9 100644 --- a/test/vitest.setup.ts +++ b/test/vitest.setup.ts @@ -1,5 +1,5 @@ import "vitest-canvas-mock"; -import { initTestFile } from "#test/testUtils/testFileInitialization"; +import { initTests } from "#test/test-utils/test-file-initialization"; import { afterAll, beforeAll, vi } from "vitest"; /** Set the timezone to UTC for tests. */ @@ -51,7 +51,7 @@ vi.mock("i18next", async importOriginal => { global.testFailed = false; beforeAll(() => { - initTestFile(); + initTests(); }); afterAll(() => { diff --git a/tsconfig.json b/tsconfig.json index b7ef84869e5..dcbf7456df8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,11 @@ { "compilerOptions": { - "target": "ES2020", - "module": "ES2020", + "target": "ES2023", + "module": "ES2022", // Modifying this option requires all values to be set manually because the defaults get overridden - // Values other than "ES2024.Promise" taken from https://github.com/microsoft/TypeScript/blob/main/src/lib/es2020.full.d.ts + // Values other than "ES2024.Promise" taken from https://github.com/microsoft/TypeScript/blob/main/src/lib/es2023.full.d.ts "lib": [ - "ES2020", + "ES2023", "ES2024.Promise", "DOM", "DOM.AsyncIterable", @@ -18,6 +18,7 @@ "esModuleInterop": true, "strictNullChecks": true, "sourceMap": false, + "checkJs": true, "strict": false, // TODO: Enable this eventually "rootDir": ".", "baseUrl": "./src", @@ -43,12 +44,12 @@ "#sprites/*": ["./sprites/*.ts"], "#system/*": [ "./system/settings/*.ts", - "./system/version_migration/versions/*.ts", - "./system/version_migration/*.ts", + "./system/version-migration/versions/*.ts", + "./system/version-migration/*.ts", "./system/*.ts" ], "#trainers/*": ["./data/trainers/*.ts"], - "#types/*": ["./@types/*.ts", "./typings/phaser/*.ts"], + "#types/*": ["./@types/helpers/*.ts", "./@types/*.ts", "./typings/phaser/*.ts"], "#ui/*": ["./ui/battle-info/*.ts", "./ui/settings/*.ts", "./ui/*.ts"], "#utils/*": ["./utils/*.ts"], "#data/*": ["./data/pokemon-forms/*.ts", "./data/pokemon/*.ts", "./data/*.ts"], diff --git a/tsdoc.json b/tsdoc.json index b4cbc9a62a5..689f7a96c5c 100644 --- a/tsdoc.json +++ b/tsdoc.json @@ -9,6 +9,10 @@ { "tagName": "@linkcode", "syntaxKind": "inline" + }, + { + "tagName": "@module", + "syntaxKind": "modifier" } ] } diff --git a/vitest.config.ts b/vitest.config.ts index 3900bc7b047..65c5427e591 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -5,8 +5,11 @@ import { defaultConfig } from "./vite.config"; export default defineProject(({ mode }) => ({ ...defaultConfig, test: { + env: { + TZ: "UTC", + }, testTimeout: 20000, - setupFiles: ["./test/fontFace.setup.ts", "./test/vitest.setup.ts"], + setupFiles: ["./test/font-face.setup.ts", "./test/vitest.setup.ts", "./test/matchers.setup.ts"], sequence: { sequencer: MySequencer, },